encontrando sum, min, max con matriz

Escriba un progtwig que ingrese el número de valores y luego ingrese estos valores (tipo doble) uno por uno en un bucle y finalmente obtenga su sum, el valor máximo y el valor mínimo.

Escribo el código para esta tarea pero tengo un error.

#include  int main(void) { float a; float i; short c; float sum; float nu[]; i=nu[]; printf("Number of values :"); scanf("%f",&i); for (c=1;i>=c;c++) { printf("values="); scanf("%f",&nu[c]); sum = sum + nu[c]; // printf("Sum = %f\n",sum); } printf("sum = %f \n",sum); // printf("Number of values :"); // scanf("%f",&i); } 

error is number.c: en la función ‘main’: number.c: 9: error: falta el tamaño de la matriz en ‘nu’ number.c: 11: error: expresión esperada antes del token ‘]’

En C, debe especificar los tamaños de sus matrices, como con float nu[100]; pero estás ladrando el árbol equivocado si crees que necesitas almacenar todos esos valores. El mínimo, el máximo y la sum pueden calcularse sobre la marcha sin necesidad de volver atrás y recuperar cualquier número anterior.

Todo lo que necesita hacer es ingresarlos uno por uno y, para cada uno:

  • si es el primero o mayor es el máximo actual, establezca el máximo actual.
  • si es el primero o menos el mínimo actual, establezca el mínimo actual.
  • añadirlo a una sum.

La sum por cierto, debe ser inicializada a cero para empezar.

En términos de pseudocódigo, comience con esto:

 set sum, high and low all to zero scan "number of values" into count for curr = one to count, inclusive: scan "current number" into num set sum to sum + num if curr is one, or num is less than low: set low to num if curr is one, or num is greater than high: set high to num output "Minimum = " low output "Maximum = " high output "Sum = " sum 

Y la mejor manera de entenderlo es obtener un pedazo de papel (no muy técnico) y escribir una tabla como esta:

 +-----+------+-----+-----+-------+------+ | sum | high | low | num | count | curr | +-----+------+-----+-----+-------+------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----+------+-----+-----+-------+------+ 

Luego ejecute ese progtwig paso a paso a través de su cabeza, ingresando o cambiando los valores en esa tabla a medida que avanza. Incluso podrá detectar cuándo está usando valores no inicializados, como si encontró una set sum to sum + curr si la columna de la sum estaba vacía.

Se sorprenderá de lo rápido que empieza a pensar como una computadora, solo espere que no elimine todas esas habilidades sociales de su cabeza en el proceso 🙂

  • Deshazte de la línea “i = nu []”.
  • Asegúrese de que está inicializando la matriz que pasa con el número relevante de elementos

Primero debe ingresar i:

 scanf("%f",&i); 

y luego declarar array:

 float nu[i]; 

Si no conoce la dimensión del arreglo anteriormente, use la asignación dinámica.

reemplazar

 float nu[]; i=nu[]; printf("Number of values :"); scanf("%f",&i); 

con:

 float *nu=0; printf("Number of values :"); scanf("%f",&i); nu=malloc(i*sizeof*nu); if(!nu) fprintf(stderr,"not enough memory"),exit(1); ... free(nu); 

O esto

 #include  int main(void) { float temp; int val,i,j,k; double sum = 0; double number[val]; printf("Enter the number of values: "); scanf("%d", &val); double number[val]; for(i=1; i <= val ;i++) { printf("enter a value: "); scanf("%lf", &number[i]); sum = sum + number[i]; } for(i=1;i<=val;i++) { for(j=i+1;j<=val;j++) { if(number[i] > number[j]) { temp=number[i]; number[i]=number[j]; number[j]=temp; } } } printf("Sum = %.lf\n", sum); printf ("Maximum element: %f\n",number[val]); printf ("Minimum element: %lf\n", number[1]); } 

Prueba esto…

 #include  int main(void) { float temp; int val,i,j,k; double sum = 0; double max,min; printf("Enter the number of values: "); scanf("%d", &val); double number[val]; for(i=0; i < val ;i++) { printf("enter a value: "); scanf("%lf", &number[i]); sum = sum + number[i]; } min = number[0]; max = number[0]; for(j=0;j max) max = number[k]; } printf("Sum = %.lf\n", sum); printf ("Maximum element: %.f\n",max); printf ("Minimum element: %.lf\n",min); }