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.

Buscar a través de una matriz 2D en C sale horriblemente mal.

Así que tengo una tarea, y dentro de ella hay una pregunta que requiere que construyas una matriz 2D con 5 filas y 4 columnas, cada una de ellas conteniendo calificaciones. La pregunta requiere que determines cuántas calificaciones son menores a 60, entre 60 y 70 y así sucesivamente (hasta 100). La cosa es que cuando trato de buscar a través de ella, solo debería haber un total de 20 calificaciones, pero mi solución me da un número muy alejado, como 60,000 o lo que sea. Estoy confundido sobre qué está mal con mi código. Utilicé dos bucles for para buscar en la matriz. Adjunto lo que he intentado. Gracias por cualquier ayuda.

“`c
#include <stdio.h>

int main(){
double grades[5][4] = {
{69, 58, 95, 78},
{84, 75, 86, 32},
{75, 68, 65, 73},
{99, 54, 24, 88},
{65, 78, 84, 65}
};

<pre><code>int lessthan60, sixtyseventy, seventyeighty, eightyninety, greaterthan90;
for (int r = 0; r < 5; r++){
for (int c=0; c < 4; c++){
if (grades[r][c] < 60){
lessthan60++;
}
else if (grades[r][c] >=60 && grades[r][c] < 70){
sixtyseventy++;
}
else if (grades[r][c] >=70 && grades[r][c] < 80){
seventyeighty++;
}
else if (grades[r][c] >=80 && grades[r][c] < 90){
eightyninety++;
}
else{
greaterthan90++;
}
}
}

printf("Calificaciones menores a 60: %d\n", lessthan60);
printf("Calificaciones entre 60 y 70: %d\n", sixtyseventy);
printf("Calificaciones entre 70 y 80: %d\n", seventyeighty);
printf("Calificaciones entre 80 y 90: %d\n", eightyninety);
printf("Calificaciones entre 90 y 100: %d\n", greaterthan90);

return 0;
</code></pre>

}
“`</stdio.h>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que las variables para contar el número de calificaciones en cada rango no están inicializadas a cero. Por lo tanto, cuando el programa busca en la matriz 2D, los valores iniciales de las variables de conteo no están definidos, lo que resulta en números incorrectos que se muestran.

    Para solucionar este problema, las variables de conteo deben inicializarse a cero antes de los bucles que buscan en la matriz de calificaciones.

    int lessthan60=0, sixtyseventy=0, seventyeighty=0, eightyninety=0, greaterthan90=0;
    

    Al agregar el fragmento de código de inicialización anterior antes de los bucles for que buscan en la matriz de calificaciones, las variables de conteo se inicializan correctamente con un valor de cero. Esto asegura que se obtengan recuentos precisos para cada rango de calificaciones.

Comments are closed.