Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include <iostream> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <ctype.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ /* Desenvolvido por Vinicius Costa -> EMAIL: vinicius_comics@hotmail.com*/ #define Cadastrar_Aluno 1 #define Relatorio 2 #define SAIR 9 typedef struct DadosAlunos dAluno; //Criei uma struct para armezenar os dados de todos os alunos, usei a tecnica da lista encadeada, onde eu posso inserir, excluir e fazer busca dos alunos struct DadosAlunos { char nome[30] ; char matricula[10]; char situacao[10]; double p1,p2,p3,p4,sub,media; dAluno *prox; }; static dAluno * alunos; int menuPrincipal(){ printf("1- Cadastrar Aluno.\n"); printf("2- Relatorio de Notas.\n"); printf("9- Sair.\n"); char opcao; scanf(" %c",&opcao); // espaço em branco entre a aspa e caractere %c para o scanf desconsiderar enter e espaços em branco. if(isdigit(opcao)==0) { printf("A opcao digitada invalida.Tente novamente.\n\n"); //Caso o usuário digite letra o app não se perca no fluxo. return 0; } printf("\n\n"); return opcao - 48; // Convertendo um caracter char para int (subtraindo seu valor decimal por 48, chegamos no valor numerico.) } double* valorMin(double notas[],double sub ){ // Funçaõ que faz a busca pela menor nota e troca a menor nota pela a nota substitutiva. double min= notas[0]; for(int i = 0; i < 4; i++) { if(notas[i] < min) min = notas[i]; } for(int i=0;i< 4;i++){ if(notas[i] == min){ if(notas[i] < sub) //Para evitar trocar a nota , quando a nota da sub for menor que a nota minima entre P1 e P4. notas[i] = sub; } } return notas; } double CaucularMedia(dAluno aln){ double nts[4] = { aln.p1, aln.p2, aln.p3, aln.p4 }; double *notas = valorMin(nts, aln.sub); return (notas[0] +(notas[1]*2) + (notas[2]*3) + (notas[3]*4)) / 10; //calculo da média. } dAluno CadastrarAluno(){ dAluno aln; printf("Entre com o nome do aluno.\n"); scanf(" %[^\n]s",&aln.nome); // expresão utilizada para ler todo o nome , só parar quando encontrar o \n. printf("Entre com a matricula.\n"); scanf("%s",&aln.matricula); printf("Entre com nota P1.\n"); scanf("%lf",&aln.p1); printf("Entre com nota P2.\n"); scanf("%lf",&aln.p2); printf("Entre com nota P3.\n"); scanf("%lf",&aln.p3); printf("Entre com nota P4.\n"); scanf("%lf",&aln.p4); printf("Entre com nota SUB.\n"); scanf("%lf",&aln.sub); printf("\n\n"); aln.media = CaucularMedia(aln); if(aln.media < 5){ printf("Aluno REPROVADO- Media= %.2f\n\n",aln.media); strcpy(aln.situacao,"REPROVADO"); } else{ printf("Aluno APROVADO- Media= %.2f\n\n",aln.media); strcpy(aln.situacao,"APROVADO"); } return aln; } void insereAluno (dAluno aln) { dAluno *aux = (dAluno*)malloc(sizeof (dAluno)); // lista está no estilo pilha,primeiro que entra, ultimo a sair. strcpy(aux->nome,aln.nome); strcpy(aux->matricula, aln.matricula); aux->p1 = aln.p1; aux->p2 = aln.p2; aux->p3 = aln.p3; aux->p4 = aln.p4; aux->sub = aln.sub; aux->media = aln.media; strcpy(aux->situacao, aln.situacao); if(alunos == NULL){ alunos = aux; alunos->prox = NULL; return; } aux->prox = alunos; alunos = aux; } void PrintDadosAluno(){ // Função que imprime no console todos os dados dos alunos cadastrados int cont =0; dAluno *aux; double media_sala=0; for (aux = alunos; aux != NULL; aux = aux->prox){ cont++; printf ("Aluno = %d\n\n", cont); printf("Nome: %s\n",aux->nome); printf("Matricula: %s\n",aux->matricula); printf("P1: %.2f\n",aux->p1); printf("P2: %.2f\n",aux->p2); printf("P3: %.2f\n",aux->p3); printf("P4: %.2f\n",aux->p4); printf("SUB: %.2f\n",aux->sub); printf("MEDIA: %.2f\n",aux->media); printf("SITUACAO: %s\n",aux->situacao); media_sala+= aux->media; } if(cont == 0) printf("Lista vazia - Cadastre um aluno.\n\n"); else{ media_sala= media_sala / cont; printf("Media da Sala: %.2f\n\n",media_sala); } } int main(int argc, char** argv) { int opcao = 0; do{ opcao = menuPrincipal(); if(opcao == Cadastrar_Aluno){ insereAluno(CadastrarAluno()); } else if(opcao == Relatorio){ PrintDadosAluno(); } }while(opcao != SAIR); system("pause"); return 0; }
Compartilhar