Resolução:
#include <stdio.h> #include <string.h> #define N_AMIGOS 5 typedef struct { char nome[30]; char telefone[15]; } pessoa; pessoa amigo[N_AMIGOS] = { { "alice", "96-2189289" }, { "pedro teixeira", "289-7829933" }, { "toze", "91-3229289" }, { "alex", "93-7822899" }, { "susana", "21-8492238" } }; main() { char nome[200]; int i; printf("Diz um nome: "); gets( nome ); for( i=0; i< N_AMIGOS; i++ ) if( strcmp( nome, amigo[i].nome ) == 0 ) break; if( i < N_AMIGOS ) printf("O numero e %s\n", amigo[i].telefone ); else printf("%s nao esta na minha agenda\n", nome ); }
Resolução:
#include <stdio.h> #include <math.h> typedef struct { int dia; int mes; int ano; } data; /* dias_mes é uma tabela que tem os dias de cada mês */ int dias_mes[2][13] = { { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, /* não bissexto */ { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } /* bissexto */ }; /* retorna 1 se o ano é bissexto, retorna 0 se não é bissexto */ int bissexto( int ano ) { return (ano % 4 == 0) && (ano % 100 != 0 || ano % 400 == 0); } /* calcula o numero de dias entre a 1/1/1900 e a data d. assume que a data d é posterior a 1/1/1900 */ int dias( data d ) { int i, soma, b; soma = 0; for( i=1900; i< d.ano; i++ ) /* anos completos */ if( bissexto( i ) ) soma = soma + 366; else soma = soma + 365; b = bissexto( d.ano ); for( i=1; i< d.mes; i++ ) /* meses completos */ soma = soma + dias_mes[b][i]; soma = soma + d.dia; /* dias */ return soma; } /* calcula o numero de dias entre as datas d1 e d2 */ int dias_entre( data d1, data d2 ) { int dias1, dias2; dias1 = dias( d1 ); dias2 = dias( d2 ); return abs( dias1-dias2 ); } main() { data d1,d2; printf("Introduz uma data (dia mês ano): "); scanf("%d%d%d", &d1.dia, &d1.mes, &d1.ano ); printf("Introduz outra data (dia mês ano): "); scanf("%d%d%d", &d2.dia, &d2.mes, &d2.ano ); printf("Entre %d/%d/%d e %d/%d/%d passaram %d dias.\n", d1.dia, d1.mes, d1.ano, d2.dia, d2.mes, d2.ano, dias_entre( d1,d2 ) ); }
Resolução:
#include <stdio.h> #include <string.h> #include <math.h> typedef struct { int nota_final; char resultado[15]; } classificacao; typedef struct { int numero; char curso[5]; float nota_freq; char resultado_freq[15]; float nota_exame; classificacao classifica; } discente; typedef struct { char nome[32]; char ano_lectivo[12]; int semestre; discente aluno[200]; } disciplina; int arredonda (float nota) { if (nota-0.5 >= (int)nota) return (int) ceil ((double)nota); else return (int) floor ((double)nota); } float recebe_nota (void) { float nota; do { scanf("%f",¬a); } while ((nota < 0) || (nota > 20)); return nota; } main() { disciplina pauta; int i,j; char c=''; /* Receber os dados */ printf("INTRODUZA OS DADOS\n"); printf("\nDisciplina\n"); printf("Nome: ");gets(pauta.nome); printf("Ano lectivo: ");gets(pauta.ano_lectivo); printf("Semestre: ");scanf("%d",&pauta.semestre); printf("\n\nAlunos\n"); for (i=0;c!='0' && i<200;i++) { printf("-- %d.§ Aluno --\n",i+1); printf("Numero:");scanf("%d",&pauta.aluno[i].numero); scanf("%c",&c); /* por causa do enter */ printf("Curso: ");gets(pauta.aluno[i].curso); printf("Nota de Frequencia: ");pauta.aluno[i].nota_freq=recebe_nota(); if (pauta.aluno[i].nota_freq >= 9.5) strcpy(pauta.aluno[i].resultado_freq,"Dispensado"); else if (pauta.aluno[i].nota_freq >= 6.0) { strcpy(pauta.aluno[i].resultado_freq,"Admitido"); printf("Nota de exame: ");pauta.aluno[i].nota_exame=recebe_nota(); } else strcpy(pauta.aluno[i].resultado_freq,"Nao Admitido"); if (strcmp(pauta.aluno[i].resultado_freq,"Dispensado") == 0) { pauta.aluno[i].nota_exame = 0; pauta.aluno[i].classifica.nota_final = arredonda(pauta.aluno[i].nota_freq); strcpy(pauta.aluno[i].classifica.resultado, "Aprovado"); } else if ((strcmp(pauta.aluno[i].resultado_freq,"Admitido") == 0) && (pauta.aluno[i].nota_exame >= 9.5)) { pauta.aluno[i].classifica.nota_final = arredonda(pauta.aluno[i].nota_exame); strcpy(pauta.aluno[i].classifica.resultado, "Aprovado"); } else if ((strcmp(pauta.aluno[i].resultado_freq, "Admitido") == 0) && (pauta.aluno[i].nota_exame < 9.5)) { pauta.aluno[i].classifica.nota_final = arredonda(pauta.aluno[i].nota_exame); strcpy(pauta.aluno[i].classifica.resultado, "Reprovado"); } else { pauta.aluno[i].nota_exame = 0; pauta.aluno[i].classifica.nota_final = 0; strcpy(pauta.aluno[i].classifica.resultado, "Reprovado"); } printf("\nPrima 0 para terminar\n"); scanf("%c",&c); /* por causa do enter */ c=getchar(); } /* Escrever a pauta */ printf("Disciplina: %s \n",pauta.nome); printf("Ano: %s \n",pauta.ano_lectivo); printf("Semestre: %d.§ \n",pauta.semestre); printf(" Classificacao final\n"); printf("N.§ aluno - Curso | Frequencia - Resultado | Exame | Numerico - Resultado |\n"); printf("---------------------------------------------------------------------------\n"); for (j=0;j<i;j++) { printf("%d\t",pauta.aluno[j].numero); printf(" %s\t",pauta.aluno[j].curso); printf(" %4.1f\t",pauta.aluno[j].nota_freq); printf("%s\t",pauta.aluno[j].resultado_freq); printf("%4.1f",pauta.aluno[j].nota_exame); printf(" %3d.0\t",pauta.aluno[j].classifica.nota_final); printf("%s\n",pauta.aluno[j].classifica.resultado); } }