SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: jarcom en Domingo 2 de Septiembre de 2007, 20:43

Título: Error Con Dev-c++
Publicado por: jarcom en Domingo 2 de Septiembre de 2007, 20:43
Hola,

tengo un programa que me da error en una línea (creo), a ver si me podéis echar un cable y encontráis el error, ya que he cambiado la sintaxis de mil formas y no consigo dar con ello.

struct alumno
{
       char nombre[30];
       int DNI;
       int edad;
       float media;
       strasigna asignaturas [40];
};





case 3: printf ("\n\tintroduce el codigo de la asignatura\n");
                         fflush (stdin);
                         scanf ("%i", &temcod);
                         aprobados (alumnos, nal, temcod);
                         break;





void aprobados (alumno A[], int a, int codigo)
{
   
     int i=0,j=0, cont=0, suma=0;
     float media;
     printf ("%i",a);    
            do
              {      
                      printf("pajaritos");
                      if (A.asignaturas[j].codi==codigo && A.asignaturas[j].nota >=5)    //creo q es aki donde falla
                                        {
                          do
                             {                    
                              printf ("\n\t %s\t", A.nombre);
                              suma += A.edad;
                              cont++;
                             } while ( j<40);
                     
                      }
                     
             
             i++;    
              } while (i<a);
     
     media = suma/cont;
     printf("\n\t la media de edad de los alumnos aprobados es %3.2f años\n", media);
}





Gracias!  ;)
Título: Re: Error Con Dev-c++
Publicado por: Ithilien en Martes 4 de Septiembre de 2007, 17:46
De primeras, según veo, haces cont++, pero no j++, con lo que no terminaría nunca el bucle interior, no? Creo que puedes hacer esa función de una manera más limpia y claro, no?  B)

Suerte :comp:
Título: Re: Error Con Dev-c++
Publicado por: cheroky en Jueves 6 de Septiembre de 2007, 10:02
No esta muy claro si vas a procesar un array de estructuras o sin embargo un variable estructura, tampoco se ve la declaracion de strasigna. El operador [] en el parametro de una funcion, se define en terminos de un puntero.
La declaracion:
Código: Text
  1. void foo( int bar[])
  2.  
es eqivalente a
Código: Text
  1. void foo( int *bar)
  2.  

La funcion estandar fflush no esta definida para streams de entrada (lease stdin) si bien algunos compiladores para windows soportan esta extension, lo recomendable es no usarla de este modo, una posible solucion pasa por leer de la entrada el/los caracteres que quedasen en el buffer. Por ejemplo, aunque no soy partidario del uso de scanf, podriamos hacer:
Código: Text
  1. scanf (&#34;%i %*c&#34;, &temcod);
  2.  
de este modo "matcheamos" la variable y despues leemos el siguiente dato discriminandolo.

S2.