es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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;>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Pueden haber varias razones por las que el código no esté funcionando como se espera. Algunas posibles razones son:

    1. La condición del bucle 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.
    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 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.

    1. 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.
  2. las dos banderas sorted deberían inicializarse en 1 fuera de los bucles, de lo contrario pueden tener valores indefinidos.

  3. 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.>

Comments are closed.