Tema: struct en c
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/02/2010, 09:33
Avatar de genuine_carlosV2
genuine_carlosV2
 
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: struct en c

Hay un error en el algoritmo. No estas buscando el mayor de forma correcta. Prueba a poner la misma gente en este orden:
- pablo 8.25
- sara 7.50
- ana 6.08

Verás como te imprime los 3. Lo que tu haces es imprimir mientras el alumno 'i' tenga una nota mayor que el siguiente. Esto es erróneo como ya has podido comprobar. Para buscar al que tiene mayor nota, prueba a hacer esto:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N_ALUMNOS 3
  4.  
  5. struct alumno{
  6.     char nombre[30];
  7.     double nota;
  8. };
  9.  
  10. int main(){
  11.     int i, mayorNota;
  12.     double nota=0.0;
  13.     struct alumno clase[N_ALUMNOS];
  14.    
  15.     for(i=0; i<N_ALUMNOS; i++){
  16.         printf("Introduce el nombre y la nota del alumno: ");
  17.         scanf("%29s %lf",clase[i].nombre,&clase[i].nota);
  18.     }
  19.     printf("%s\n","El alumno con mayor nota es: ");
  20.  
  21.     mayorNota = 0;
  22.     for(i=1; i<N_ALUMNOS; i++){
  23.         if(clase[mayorNota].nota <clase[i].nota) mayorNota = i;
  24.     }
  25.     printf("%s %.2lf\n",clase[mayorNota].nombre,clase[mayorNota].nota);
  26.  
  27.     exit(0);
  28. }

Lo que hace es basarse en que la mayor nota será la del primero. De esta manera, el bucle empieza en 1 y no en 0 porque el primero ya lo tenemos. Cada alumno compara su nota con el primero. Si esa nota es menor, no pasa nada pero si es mayor, dejamos el primero y cogemos el nuevo alumno de modo que los alumnos restantes se compararan con este.

P.D.: Para la próxima vez que pongas código, escríbelo como tal ya que sino, cuesta mucho de leer

Saludos
__________________
Carlos

Recoger datos es solo el primer paso hacia la sabiduría. Pero compartir información es el primer paso hacia la comunidad. - IBM