[ Foro para dudas y novedades ]

Como podria hacer ?????

10-Nov-2010 19:27
oscar gomez
3 Respuestas

Cordial saludo profesor Nacho Cabanes y colaboradores de tan estupendo curso agradeciendoles por este espacio que nos brindan de manera libre y con la experiencia y voluntad de ayuda que teneis con vosotros los que estamos intentando aprender.

A manera personal decidi realizar un programa que estaba propuesto en un examen de cierta univesidad que dice lo siguiente:

En la clase de programación C++ se tienen 35 alumnos al iniciar el semestre, el maestro aplicó cinco exámenes parciales durante el semestre y al termino del semestre realiza los cálculos correspondientes para obtener el promedio de de cada alumno. Desarrolle un programa en C++ en el cual, el maestro de cómo entrada la matricula del alumno y sus correspondientes calificaciones para obtener por medio de funciones el promedio de cada alumno así como el número de alumnos reprobados. Mostrar en pantalla la matrícula del alumno y su promedio, así como el número de alumnos reprobados.



Bien  profesor Nacho yo podria entender el problema desde dos puntos de vista:


PUNTO DE VISTA 1.

 No de matricula del estudiante 1: A001( porejemplo)

 Ingrese las 5 notas de este estudiante:

 nota1: 3.2

 nota2: 2.8

 nota3: 3.9

 nota4: 2.3

 nota5: 4.8

 promedio del estudiante : 3.4

 felicitaciones aprobo la materia!!!!


No de matricula del estudiante 2: A002( porejemplo)

 Ingrese las 5 notas de este estudiante:

 nota1: 2.2

 nota2: 2.8

 nota3: 2.6

 nota4: 2.3

 nota5: 3.5

 promedio del estudiante : 2.68

 Reprobado !!!!
...
...
...

bien y asi hasta porejemplo 5 estudiantes ( de 35 que pide el programa ).. y al final mostrar

el numero de alumnos reprobados fue: 2 ( porejemplo).


PUNTO DE VISTA 2.

Digitar primero todos los datos de  No de matricula ( equivalente a codigo de matricula) y notas obtenidas para los 5 estudiantes ( para no extender la lista a 35 ) y al final mostrar un reporte por pantalla como este:

------------------------------------

No de matricula estudiante 1 : A001

su promedio fue de 3.4

------------------------------------

No de matricula estudiante 2 : A002

su promedio fue de 2.68

------------------------------------

...
...
...

y asi para 5 estudiantes.

y al final del  reporte mencionado:

El numero de estudiantes reprobados fue : 2 ( porje de los 5 estudiantes)


BIEN MI PREGUNTA ES RESPECTO AL SEGUNDO PUNTO DE VISTA PUES ME GUSTARIA SABER COMO PODRIA HACERLO BAJO ESTE CRITERIO, es decir como podria almacenar con variables normales ( NO CON ARRAYS, dado que  por ahora no he tratado ese tema) los datos de No matricula y promedios para mostrar al final el reporte que os mencione antes?.

lo de leer los datos a la vez pues se que con un for que fuera desde 1 hasta 5 ( numero de estudiante) y pido los datos porejemplo:

for(int i=1;i<=5;i++)
 {
   cout<<" No de Matricula del estudiante(ej.A001)"<<i<<":  ";
   cin>>Codmatricula;
   cout<<"ingrese las 5 notas del estudiante "<<i<<endl;
   cout<<endl;
   cin>>n1>>n2>>n3>>n4>>n5;
   cout<<endl;
   }


O con un while:

cont=1
while(cont<=5)
{
  cout<<" No de Matricula del estudiante(ej.A001)"<<cont<<":  ";
  cin>>Codmatricula;
  cout<<"ingrese las 5 notas del estudiante "<<i<<endl;
  cout<<endl;
  cin>>n1>>n2>>n3>>n4>>n5;
  cout<<endl;
  cont=cont+1;
}  

PERO DESPUES COMO PUEDO AL FINAL DE TERMINAR DE PEDIR DICHOS DATOS Y OBVIAMENTE DE REALIZAR EL PROCESO DE CALCULAR EL PROMEDIO, COMO PUEDO MOSTRAR EL REPORTE PARA ESOS 5 ESTUDIANTES? como puedo tener esos datos en variables en memoria para despues mostrarlos ,PERO SIN UTILIZAR ARRAYS SE QUE ES LO MAS CONVENIENTE, PERO SI NO HE LLEGADO AUN AL TEMA DE ARRAYS Y QUISIERA SABER COMO TRATARLO CON VARIABLES COMUNES Y CORRIENTES?????

espero recibir tu ayuda al respecto, agradeciendote de antemano tu amable atencion.


11-Nov-2010 00:19
Nacho Cabanes (+84)

Los arrays te permiten almacenar los datos para hacer los cálculos al final.

Si no puedes utilizar arrays, debes ir calculando "al vuelo". Una forma podría ser utilizando un contador, que vas actualizando tras cada nuevo dato, así:

Antes de empezar a pedir datos:
contadorAprobados = 0;

Después de que el usuario introduzca un nuevo dato:
if (promedio >= 5) contadorAprobados ++;

Tras haber pedido (y mostrado) todos los datos:
cout << "Cantidad de aprobados = " << contadorAprobados << endl;

La idea subyacente es que hay datos que puedes calcular "poco a poco", actualizando en cada pasada, sin necesidad de almacenar en un array. Es el caso de un contador básico, una suma, un máximo o un mínimo, por ejemplo. Por el contrario, si te piden algo como "muestra los datos que están por encima de la media", para eso sí necesitarás tener los datos guardados en un array (o alguna estructura similar), porque no puedes calcular la media hasta que tienes todos los datos, de modo que no puedes empezar a realizar esa operación hasta el final, y necesitarías tener almacenados los datos antiguos para volverlos a recorrer.


11-Nov-2010 10:09
oscar gomez

Hola profesor Nacho.
Ante todo agradecer tu tiempo y tu ayuda.
respecto a lo del contador si que lo se, lo que no se es precisamente como mostrar los datos al final de introducirlos para todos los estudiantes, es decir asi como almaceno a traves de un contador el contador de aprobados,y al final muestro el resultado total de los que no aprobaron, mi pregunta es  atraves del reporte que te muestro a continuacion:


codigo de estudiante 1: A001
promedio : 3.4

codigo de estudiante 2: A002
promedio : 4.2

codigo de estudiante 3: A003
promedio : 2.2

codigo de estudiante 4: A004
promedio : 3.8

codigo de estudiante 5: A005
promedio : 2.6


El numero de estudiantes reprobados fue : 2



como ves lo que me interesa es saber como almacenos ahora los datos de codigo de estudiante y promedio que inicialmente fueron datos de entrada y que ahora quiero mostrar en un reporte en conjunto como lo muestro en el ejemplo tal cual. Sin arrays. como podria ser profesor?, agradezco tu espiritu de ayuda y profesionalismo que tienes, mil gracias por tu ayuda y en espera de tu siempre valiosa ayuda.


19-Nov-2010 13:47
Nacho Cabanes (+84)

Se me había pasado esta pregunta sin contestar. La respuesta podría ser "no puedes". Aun así, afino un poco más:

- Si quieres almacenar datos repetitivos para mostrarlos con posterioridad, la única solución simple y elegante es usar un array (o un fichero, pero eso es aún más avanzado).

- La alternativa "mala" es usar muuuuuchas variables independientes: nombre1, nombre2, nombre3... nota1, nota2, nota3... pero eso no es factible en la mayoría de los casos, porque lleva a programas larguísimos y poco legibles.

- La otra solución es, como te comentaba, mostrar un resumen, pero no los datos originales.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)