
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));
}
