Prev Up Next
Go backward to Estruturas, typedef, inicializações
Go up to Alguns exercícios a exemplos dados nas aulas teóricas
Go forward to Apontadores I

Estruturas, inicializações, casts



 // -----------------------------------------------------------------------------
 // Exemplos de estruturas, typedefs, inicializações, casts
 #define CAD   4
 #define TM    2
 #define UNDEF (-1)

 typedef
 struct data{
   int ano, mes, dia;
 } DATA;

 typedef
 struct aluno{
   char * nome;
   DATA nasc;
   int notas[CAD];
 }  ALUNO;

 ALUNO turma[TM]=
 { {"Rui",{1980,2,2}, {12,11,UNDEF,15}},
   {"Ana",{1976,3,16},{10,UNDEF,18,11}}
 };

 int antes(int);
 float media(char *);






% //----------------------------------------------------------






 main(){
   printf("Media %f\n",media("Rui"));
   printf("Nasceram %d aluno(s) antes de 1979\n",antes(1979));
 }

 int antes(int ano){
   int s=0,i;
   for(i=0;i<TM;i++)
     if(turma[i].nasc.ano<ano)
       s++;
   return(s);
 }

 float media(char * n){
   int i,j,nd,s;
   for(i=0;i<TM;i++)
     if(strcmp(n,turma[i].nome)==0)
       break;
   if(i==TM){
     printf("Nao existe o aluno %s\n",n);
     exit(1);
   }
   nd=0; s=0;
   for(j=0;j<CAD;j++)
     if(turma[i].notas[j]!=UNDEF){
       printf("  -> %d\n",turma[i].notas[j]);
       nd++;
       s+=turma[i].notas[j];
     }
   if(nd==0){
     printf("Nao tem nenhuma disciplina feita");
     exit(1);
   }
   return(((float)s)/((float) nd));
 }



Prev Up Next