Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Adrian Mendiola en 7 Septiembre 2020, 18:36 pm



Título: Ayuda con el siguiente código de promedio.
Publicado por: Adrian Mendiola en 7 Septiembre 2020, 18:36 pm
Buenos días. de su apoyo colegas, del siguiente código de programación llevo días pero no he podido, requiero añadir que me muestre de la lista de 10 calificaciones cual es la mas alta y que me pregunte si deseo hacer otra operación o salir.

Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3.  
  4. int main()
  5. {
  6.    int f,may,men;
  7.    float calificaciones[10];
  8.    float suma,promedio;
  9.    printf("Buenvenido al programa para calcular promedio\n\n");
  10.  
  11.    printf("Ingrese las 10 calificaciones a promediar:  \n");
  12.    for (f=0; f<10; f++)
  13.    {
  14.    printf("Ingrese la calificacion:  ");
  15.        scanf("%f",&calificaciones[f]);
  16.    }
  17.    suma=0;
  18.    for(f=0; f<10; f++)
  19.    {
  20.        suma=suma+calificaciones[f];
  21.    }
  22.    promedio=suma/10;
  23.    printf("Promedio:  ");
  24.    printf("%0.2f",promedio);
  25.    printf("\n");
  26.  
  27.    may=0;
  28.    men=0;
  29.    for(f=0; f<10; f++)
  30.    {
  31.        if (calificaciones[f] > promedio)
  32.        {
  33.            may++;
  34.        }
  35.        else
  36.        {
  37.            if (calificaciones[f] < promedio)
  38.            {
  39.                men++;
  40.            }
  41.        }
  42.    }
  43.    printf("Cantidad de personas mayores al promedio:");
  44.    printf("%i",may);
  45.    printf("\n");
  46.  
  47.    getch();
  48.    return 0;
  49. }


MOD: El código debe ir entre etiquetas de Código GeSHi


Título: Re: Ayuda con el siguiente código de promedio.
Publicado por: K-YreX en 8 Septiembre 2020, 20:57 pm
Entiendo que la parte que tienes hecha funciona correctamente aunque te pongo un par de consejos:
  • No utilices la biblioteca <conio.h>. No es una biblioteca estándar y puede dar problemas en algunos sistemas. Para lo único que lo utilizas es para la función getch(); así que en su lugar puedes utilizar la función getchar(); que pertenece a <stdio.h>.
  • En vez de poner números directamente como el 10 en este caso, declara constantes. Esto hace que el código sea más fácil de modificar pues solo tendrás que cambiar el valor de la variable una vez y no cada vez que aparezca ese número:
Código
  1. #define SIZE 10
  2. int main(){
  3.  int array[SIZE]; // Array de longitud 10
  4. }

  • Para acumular una suma (o cualquier operación) en una misma variable puedes sustituir:
Código
  1. suma = suma + numero;
por:
Código
  1. suma += numero;

  • Solo utilizas el número de notas mayores al promedio por lo que no necesitas calcular cuántas son menores a este.


Y ahora tu problema: para mostrar la nota más alta necesitas recorrer el array completo e ir guardando la nota más alta. Para ello guardas en una variable <notaMayor> (por ejemplo) el contenido de <calificaciones[0]> y luego con un for() desde 1 hasta el último elemento, si <calificaciones[n]> es mayor que <notaMayor> pues guardas ese nuevo valor.

Para que te pregunte si hacer más operaciones necesitas un bucle do-while que suele ir acompañado en este caso con un menú (switch) con las opciones. Te pongo un ejemplo para que lo adaptes:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h> // Para la funcion rand()
  3.  
  4. #define SIZE 5
  5.  
  6. int main(){
  7.    int numeros[SIZE];
  8.    int opcion;
  9.    char repetir = '';
  10.    do{
  11.        printf("\nElige una opcion:\n - 1. Rellenar array\n - 2. Mostrar array\nOpcion: ");
  12.        scanf("%d", &opcion);
  13.  
  14.        switch(opcion){
  15.            case 1:
  16.                for(int i = 0; i < SIZE; ++i) // Usando SIZE puedes cambiar la longitud del array cambiando solo su valor en el #define
  17.                    numeros[i] = rand() % 100; // Numero aleatorio entre 0 y 99
  18.                break;
  19.            case 2:
  20.                printf("\nLos numeros del array son: ");
  21.                for(int i = 0; i < SIZE; ++i)
  22.                    printf("%d ", numeros[i]);
  23.                printf("\n");
  24.                break;
  25.        }
  26.        printf("Desea salir? [s/n]: ");
  27.        repetir = getchar();
  28.    }   while(repetir != 's' && repetir != 'S');
  29.  
  30.    printf("\nSaliendo del programa... Pulse ENTER\n");
  31.    getchar();
  32.    return 0;
  33. }

PD: Este ejemplo no intenta mostrar la manera de generar números aleatorios sino únicamente cómo usar un menú con opciones y un bucle para elegir si desea salir o no.