¿Qué está mal con esta función que escribí para ver si dos matrices están ordenadas en orden ascendente, en C?
Aquí está la función:
int VerifTri(int t[], int g[], int n, int m)
{ int k, l; int sorted, sorted2;
sorted = 1; sorted2 = 1;
for (k=0; k<n; k++)="" {="" if(="" t[k]=""> t[k+1] )
sorted=0;
}
for (l=0; l<m; l++)="" {="" if="" (g[l]=""> g[l+1])
{
sorted2=0;
}
}
if ((sorted == 1) && (sorted2 == 1))
return 1;
else
return 0;
}
No hay error de sintaxis, pero el código está equivocado: lo usé en un programa y entré dos matrices ordenadas y aún devolvió 0.</m;></n;>
davy.ai
Pueden haber varias razones por las que el código no esté funcionando como se espera. Algunas posibles razones son:
k<n
y=””></n><m
puede=”” hacer=”” que=”” la=”” función=”” acceda=”” a=”” memoria=”” fuera=”” de=”” los=”” límites,=”” lo=”” que=”” resulta=”” en=”” un=”” comportamiento=”” indefinido.=”” para=”” solucionarlo,=”” la=”” condición=”” debería=”” ser=””></m><n-1
y=””></n-1><m-1
, respectivamente.la función solo verifica si cada array individual está ordenado, pero no si ambos están ordenados en el mismo orden. para solucionarlo, la función debería comparar los elementos de ambos arrays en la misma posición.
las dos banderas
sorted
deberían inicializarse en1
fuera de los bucles, de lo contrario pueden tener valores indefinidos.para solucionar el código, podrías empezar agregando declaraciones para revisar los valores de los arrays de entrada, las variables del bucle, y las banderas
sorted
en varios puntos de la función. también podrías intentar ejecutar la función con diferentes entradas y comparar la salida con el resultado esperado. respectivamente.=”” 2.=”” la=”” función=”” solo=”” verifica=”” si=”” cada=”” array=”” individual=”” está=”” ordenado,=”” pero=”” no=”” si=”” ambos=”” están=”” ordenados=”” en=”” el=”” mismo=”” orden.=”” para=”” solucionarlo,=”” la=”” función=”” debería=”” comparar=”” los=”” elementos=”” de=”” ambos=”” arrays=”” en=”” la=”” misma=”” posición.=”” 3.=”” las=”” dos=”” banderas=””sorted
=”” deberían=”” inicializarse=”” en=””1
=”” fuera=”” de=”” los=”” bucles,=”” de=”” lo=”” contrario=”” pueden=”” tener=”” valores=”” indefinidos.=”” para=”” solucionar=”” el=”” código,=”” podrías=”” empezar=”” agregando=”” declaraciones=”” para=”” revisar=”” los=”” valores=”” de=”” los=”” arrays=”” de=”” entrada,=”” las=”” variables=”” del=”” bucle,=”” y=”” las=”” banderas=””sorted
=”” en=”” varios=”” puntos=”” de=”” la=”” función.=”” también=”” podrías=”” intentar=”” ejecutar=”” la=”” función=”” con=”” diferentes=”” entradas=”” y=”” comparar=”” la=”” salida=”” con=”” el=”” resultado=””></m-1`, respectivamente.las dos banderas
sorted
deberían inicializarse en1
fuera de los bucles, de lo contrario pueden tener valores indefinidos.para solucionar el código, podrías empezar agregando declaraciones para revisar los valores de los arrays de entrada, las variables del bucle, y las banderas
sorted
en varios puntos de la función. también podrías intentar ejecutar la función con diferentes entradas y comparar la salida con el resultado esperado.>