Dev - C++ - Ayuda con Ejercicio de Arreglos

   
Vista:
Imágen de perfil de Carlos

Ayuda con Ejercicio de Arreglos

Publicado por Carlos carlosyunior.LC1@gmail.com (3 intervenciones) el 27/05/2014 04:19:21
Hola Buenas noches comunidad, espero se encuentren bien, he creado el hilo por lo siguiente, recien comienzo a ver clases de programacion basica, sucede que hubo un atraso donde estudio ya que los laboratorios aun no se encontraban aptos, asi que siguimos viendo la teoria durante 4 semanas sin ver ni la primera clase practica, y hay total desacuerdo entre profesores ya que laboratorio es asignado a un profesor y teoria a otro por ende usan compiladores distintos. (geany en linux - dev c en windows)

yendo directo al grano, tengo un ejercicio de arreglos donde este me esta consumiendo y no encuentro como crear los ciclos for, while o do while, es un mismo ejercicio con estos tres tipos;

Realizar un programa que permita cargar un arreglo de 10 posiciones, las notas de la asignatura XY para los 10 estudiantes, el programa debe arrojar como resultado la nota maxima, nota minima y el indice al estudiante que corresponde.

Hasta ahora tengo entendido que puedo declarar las variables NOTA MINIMA, NOTA MAXIMA, INDICE, ESTUDIANTE1 (1), (2),...(10). OJO es lo que creo.


Espero puedan ayudarme. PLeaseeee
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de vangodp

Ayuda con Ejercicio de Arreglos

Publicado por vangodp (287 intervenciones) el 27/05/2014 13:54:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <stdlib.h>
 
int main () {
   int i = 0;
   float alumno[10];
   float max = 0;
   float min = 10;
   float temp;
   int alumnoNotaMayor = 00.00;
   int alumnoNotaMenor = 10.00;
 
   printf("Introdusca la nota de cada uno de los 10 alumnos\n");
 
   for ( i=0;i<10;i++ ){
        printf("Nota para alumno %d: ", i+1 );
        scanf("%f", &alumno[i]);
        //Miramos la mayor nota
        if ( alumno[i] > max ){
            max =alumno[i];
            alumnoNotaMayor = i;
        }
        //Miramos la menor nota
        if ( alumno[i] < min ){
            min = alumno[i];
            alumnoNotaMenor = i;
        }
   }
 
    printf("\nEl alumno con la mayor nota es el alumno[%d] con la nota: %2.2f", alumnoNotaMayor+1, max);
    printf("\nEl alumno con la menor nota es el alumno[%d] con la nota: %2.2f", alumnoNotaMenor+1, min);
 
 
   return  0;
}
Bueno es algo sencillo pero funciona.
Falta implementar algún sistema que mire por ejemplo si hay mas de un alumno con la nota mínima y mas de uno con la nota máxima. Eso lo puedes hacer en otro bucle for comparando todos los alumnos con el el de la nota mínima/máxima guardándolos en una cadena o imprimiendo directo si hay alguno igual.

Lo que hacemos es simplemente es esperar que entre alumno por alumno y ir guardando el máximo y el mínimo cada vez que encontramos una nota que supere la anterior.

por ejemplo para el máximo.
el valor máximo inicia en cero :S, si en cero, así entro con el primer alumno y por ejemplo pongo un 7 pues como 7 es mayor que 0 guardamos el 7 en máximo y el numero del alumno con la mayor nota =D, ahora hacemos lo mismo para el alumno 2. Si pongo un 8 al alumno 2 pues 8 es mayor que que 7 guardo la nota y el alumno.
¿Ahora si pongo un 2 para el alumno 3? pues nada...el programa no hace nada por que espera la nota mayor si encuentra una menor no hace nada ;)
Lo mismo hacemos con el caso del alumno menor pero guardando la menor nota. Cabe destacar que la nota mini vale 10 y vamos guardando cada nota menor que esa que vayamos ingresando.

Después de terminar tendríamos los 2 valores max/min y los alumnos a los que les pertenece las notas. Ahora es cuando debería entrar en juego un segundo bucle for comparando cada alumno de la tabla con los que tienen mayor y menor nota y imprimirlos también.

Entonces una forma seria así: Quizás 2 bucles for(ojo no es for doble van separados ;) ), uno para la nota máxima y otro para la mínima.
Dentro del bucle de la nota máxima agarramos el valor alumno que tenga la primera nota máxima que encontramos después como tiene 8 (según el ejemplo anterior) y no va haber nota mas alta sino el bucle ya lo habría guardado, lo que hacemos es comparar todos los alumnos con esa nota 8 y si hay alguno lo imprime todos incluido nuestro alumno(el primer) quedando así como una lista de alumnos que tuviera la nota máxima por si hay mas de uno.
Lo mismo para el mínimo.
Espero que te sirva, eso lo de la mínima y máxima repetida lo implementas tu...si no consigues pues te lo hago pero inténtalo al menos que ya te dije como hacer ;)
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Carlos

Ayuda con Ejercicio de Arreglos

Publicado por Carlos carlosyunior.LC1@gmail.com (3 intervenciones) el 27/05/2014 18:21:55
Hermano muchas gracias por la ayuda, realmente me ayudaste bastante, es dificil comenzar y tener una estructura cuando tienes diferentes puntos de vista y mas cuando dos profesores no se ponen de acuerdo. aunque viendo la estructura no habia pensado en usar decimales, asi que me parece mucho mejor xq datos mas exactos y reales jeje te agradezco!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de vangodp

Ayuda con Ejercicio de Arreglos

Publicado por vangodp (287 intervenciones) el 28/05/2014 02:10:10
He usado flotantes por que así es el sistema de notas en las escuelas donde estudie y que por cierto abandone =(.
La nota máxima era 10 pero podías tener 9.99 antes del 10.
Lo mismo te va a dar si haces en enteros pero así es mas correcto ;)
Como dije el programa si encuentra la nota máxima pero solo apunta el nombre del primero que la obtiene, y si hay mas alumnos con la misma nota. Son casos a los que debes prever tu antes de iniciar el código.
Vayas apuntando todas las ideas en un papel y desde ahí ya veras que te falta.
Si tienes mas dudas pues pregunta ;)
No te agobies si tardo un poco por que no me puedo tirar el día aquí pero paso a diario y sino hay otros fieras también que te pueden ayudar ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar