Estructura FOR

Iniciado por Axurino, 2 Agosto 2021, 01:06 AM

0 Miembros y 4 Visitantes están viendo este tema.

Axurino

Estoy haciendo una tarea sobre programación en c con estructura for, y una de las actividades es la siguiente:
"Un curso tiene 30 alumnos identificados con números del 1 al 30 por
cada alumno se ingresan las notas correspondientes a 10 materias, calcular el promedio por cada alumno y el promedio general del curso."
Deduzco que debo utilizar 2 for, pero realmente soy muy nuevo con el lenguaje c y no encuentro tutoriales respecto al tema xD.


BloodSharp

Cita de: Axurino en  2 Agosto 2021, 01:06 AMDeduzco que debo utilizar 2 for, pero realmente soy muy nuevo con el lenguaje c y no encuentro tutoriales respecto al tema xD.
Yo diría que en total necesitarías mínimo 4 for (1 de ellos dentro de al menos un for). Tutoriales del ciclo for hay de todos los lenguajes y de a montones, solamente te tenés que fijar en youtube y saltan varios.


B#



Axurino

Cita de: BloodSharp en  2 Agosto 2021, 01:16 AM
Yo diría que en total necesitarías mínimo 4 for (1 de ellos dentro de al menos un for). Tutoriales del ciclo for hay de todos los lenguajes y de a montones, solamente te tenés que fijar en youtube y saltan varios.


B#
Mirá, logré hacer un programa que "funciona" (pidiendo el numero de alumnos y de notas).
El problema es que, cuando me muestra el promedio de cada alumno se va sumando al anterior ¿Como hago para que eso no pase?

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int promedio=0, prom_alum=0, alumnos=0, notas=0, I=0, note=0, suma=0, J=0, otro_prom=0, promedio2=0;
printf("Ingrese el numero de alumnos: ");
        scanf("%d", &alumnos);
printf("Ingrese la cantidad de notas: ");
        scanf("%d", &notas);
            system ("cls");
            for (I=0;I<alumnos;I++) {
            printf("Alumno nro%d : \n",I+1);
            for (J=0;J<notas;J++){
            printf(" La nota nro%d del alumno es: ",J+1);
            scanf("%d", &note);
            otro_prom=otro_prom+note;

            }
            promedio2=otro_prom/notas;
            printf("El promedio del alumno es: %d \n",promedio2);
            prom_alum=prom_alum+promedio2;
            }
        promedio=prom_alum/alumnos;
        printf("La nota promedio es: \n%d\n", promedio);

}

BloodSharp

#3
Cita de: Axurino en  2 Agosto 2021, 02:29 AMMirá, logré hacer un programa que "funciona" (pidiendo el numero de alumnos y de notas).
No tenés que pedir el número de cantidad de alumnos, ese dato te lo dá.
Cita de: Axurino en  2 Agosto 2021, 01:06 AMUn curso tiene 30 alumnos identificados con números del 1 al 30

Cita de: Axurino en  2 Agosto 2021, 02:29 AMEl problema es que, cuando me muestra el promedio de cada alumno se va sumando al anterior ¿Como hago para que eso no pase?
Cuando termines de ingresar todas las notas por cada alumno tenés que calcular el promedio dividiendo por 10 materias y luego el promedio de promedio de todos los alumnos...
Cita de: Axurino en  2 Agosto 2021, 01:06 AMcada alumno se ingresan las notas correspondientes a 10 materias, calcular el promedio por cada alumno y el promedio general del curso."

Te voy a dar una pista de lo que tenés que tener:
Código (cpp) [Seleccionar]
#define CANTIDAD_ALUMNOS 30
#define CANTIDAD_MATERIAS 10

int iNotasDeAlumnos[CANTIDAD_ALUMNOS][CANTIDAD_MATERIAS];
int iPromedioDeAlumnos[CANTIDAD_ALUMNOS];



B#



Axurino

Cita de: BloodSharp en  2 Agosto 2021, 03:26 AM
No tenés que pedir el número de cantidad de alumnos, ese dato te lo dá.
Cuando termines de ingresar todas las notas por cada alumno tenés que calcular el promedio dividiendo por 10 materias y luego el promedio de promedio de todos los alumnos...
Te voy a dar una pista de lo que tenés que tener:
Código (cpp) [Seleccionar]
#define CANTIDAD_ALUMNOS 30
#define CANTIDAD_MATERIAS 10

int iNotasDeAlumnos[CANTIDAD_ALUMNOS][CANTIDAD_MATERIAS];
int iPromedioDeAlumnos[CANTIDAD_ALUMNOS];



B#

O sea, entiendo tu punto, simplemente cambió los números por los ya dados, pero aún así, el promedio sigue sumándose al anterior (?

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
   int promedio=0, prom_alum=0, I=0, note=0, J=0, otro_prom=0, promedio2=0;
           system ("cls");
           for (I=0;I<30;I++) {
           printf("Alumno nro%d : \n",I+1);
           for (J=0;J<10;J++){
           printf(" La nota nro%d del alumno es: ",J+1);
           scanf("%d", &note);
           otro_prom=otro_prom+note;
           }
           promedio2=otro_prom/10;
           printf("El promedio del alumno es: %d \n",promedio2);
           prom_alum=prom_alum+promedio2;
           }
       promedio=prom_alum/30;
       printf("La nota promedio es: \n%d\n", promedio);

}

BloodSharp

Cita de: Axurino en  2 Agosto 2021, 03:39 AMO sea, entiendo tu punto, simplemente cambió los números por los ya dados, pero aún así, el promedio sigue sumándose al anterior (?

No creo que hayas entendido bien la pista que te dejé, este es un ejercicio de matrices y vectores que se necesita si o si almacenar todas las notas de los 10 materias de los 30 alumnos. Te dejo un pseudo código a ver si lo resolvés:

Código (cpp) [Seleccionar]
#define CANTIDAD_ALUMNOS 30
#define CANTIDAD_MATERIAS 10

int iNotasDeAlumnos[CANTIDAD_ALUMNOS][CANTIDAD_MATERIAS];
int iPromedioDeAlumnos[CANTIDAD_ALUMNOS];

for(recorrer alumnos)
{
promedio_de_alumno_actual = 0
for(recorrer materias)
{
ingresar nota para alumno actual
promedio_de_alumno_actual += nota ingresada
}
promedio_de_alumno_actual /= CANTIDAD_MATERIAS
}

promedio_total_del_curso = 0
for(recorrer alumnos)
{
promedio_total_del_curso += promedio_de_alumno_actual
}

promedio_total_del_curso /= CANTIDAD_ALUMNOS

for (recorrer alumnos)
{
imprimir el promedio_de_alumno_actual
}

imprimir promedio_total_del_curso



B#



Axurino

Cita de: BloodSharp en  2 Agosto 2021, 04:34 AM
No creo que hayas entendido bien la pista que te dejé, este es un ejercicio de matrices y vectores que se necesita si o si almacenar todas las notas de los 10 materias de los 30 alumnos. Te dejo un pseudo código a ver si lo resolvés:
B#

MUCHAS GRACIASSS.
Después de darle un par de vueltas logre hacer que el programa funcionara correctamente, el "pseudocódigo" me ayudó bastante, tenia un error muy básico, pero al final por suerte me di cuenta xD