Exercício da lista - ALGPROG - Engenharia de Produção

1. Exercício da lista - ALGPROG - Engenharia de Produção

Leandro
SpawnBr

(usa Outra)

Enviado em 30/05/2015 - 19:11h


Pessoal da VOL, Boa Noite!

Tenho um exercício para entregar amanhã (vou colocá-lo abaixo), e através de vários exemplos e aproximações eu consegui chegar no seguinte código, mas ainda faltam algumas funções. Não estou conseguindo gerar uma listagem com os dados que digitei, em especial a média de cada aluno.

Sistema de avaliação de alunos de um curso.

Os alunos são identificados em números sequenciais de 10000 a 10020.
O sistema armazena duas notas: P1 e P2 com valores válidos entre 0.0 e 10.0.
A média considerada deve ser: 0,4P1 + 0,6P2 e deve totalizar 6,0 para aprovação.

O sistema deverá ter as opções:
1 - Receber notas P1 de todos os alunos.
2 - Receber notas P2 de todos os alunos.
3 - Receber nota P1 de um aluno.
4- Receber nota P2 de um aluno.
5 - Verificar a condição de um aluno.
6 - Listar alunos em intervalo.
7 - Listar todos os alunos.
0 – Termina o programa.

As ações são as seguintes:
Opção 1 – Recebe sequencialmente cada nota. O programa deve apresentar a identificação do
aluno para o qual está recebendo a nota, e deve ter a opção de finalizar a entrada a qualquer
momento.
Opção 2 – Recebe sequencialmente cada nota. O programa deve apresentar a identificação do
aluno para o qual está recebendo a nota, e deve ter a opção de finalizar a entrada a qualquer
momento .
Opção 3 – Recebe a nota de um aluno, para isso o sistema solicita o número do aluno e
verifica se o aluno existe.
Opção 4 – Recebe a nota de um aluno, para isso o sistema solicita o número do aluno e
verifica se o aluno existe.
Opção 5 – Solicita o número do aluno, apresenta todas as suas notas, a média e diz se o aluno
foi aprovado ou reprovado.
Opção 6 – O sistema solicita um intervalo de números e apresenta todos os alunos, suas
médias e situação.
Opção 7 – Faz o mesmo para todos os alunos, COM PAGINAÇÃO.
Opção 0 – Termina o programa.
TODOS os elementos devem ter entrada consistida/validada, isto é:
- as notas devem ser fornecidas em intervalos válidos
- a lista dos alunos devem ser fornecidas com intervalos válidos
- os erros devem ser informados ao usuário

Estou ciente que não conseguirei entregar com todas as opções, mas se a lista, ao menos, estiver correta, eu fico contente. haha


// Versão 3
#include <stdio.h>
#include <stdlib.h>

#define MAX_ALUNOS 21

struct TipoAluno {
char nome[21];
float media;
// float matricula;
};

// protótipos das funções
float solicitaNota(void);
float calculaMedia(float nota1, float nota2);
void exibeAluno(struct TipoAluno aluno);
void finalizaPrograma(void);
float matricula;
int num;
// programa principal com as chamadas das funções criadas
int main(void)
{
// As variáveis criadas aqui dentro (chamadas de variáveis locais) não são
// visíveis em outras funções. Variáveis declaradas fora de qualquer função
// são chamadas de variáveis globais.
// Se houver necessidade de acessar uma variável dentro de outra função
// deve-se passa-la como argumento como acontece com: calculaMedia e exibeAluno

{
for(; ;)
{
printf("\t\t\t\tCADASTRO DE ALUNOS\n");
printf("1 - Para Inserir dados dos Alunos\n");
printf("2 - Para Mostrar dados dos Alunos\n");
printf("0 - Sair\n");
scanf("%d",&num);
switch(num)
{
case 1: inserir();
break;
case 2: mostrar();
break;
case 0: exit(0);
default: puts("TENTE NOVAMENTE");
}

}
}

getchar();
}


void inserir (void)
{
struct TipoAluno alunos[21];
float nota1, nota2;
int i;
matricula=9999;
for(i=0; i < MAX_ALUNOS; i++) {

// printf("\nMatricula: ");
matricula=matricula+1;
//i=i;
fflush(stdin);
//scanf("%f", &matricula);
printf("\nMatricula: %.0f", matricula);
fflush(stdin);
printf("\nEntre com o nome do aluno: ");
fflush(stdin);
gets(alunos[i].nome);
printf("Entre com a primeira nota (0 a 10): ");
nota1 = solicitaNota();
printf("Entre com a segunda nota (0 a 10): ");
nota2 = solicitaNota();
alunos[i].media = calculaMedia(nota1, nota2);
gets(calculaMedia);
}
printf("\n\nExibicao dos dados:");
for(i=0; i < MAX_ALUNOS; i++)
mostrar(alunos[i]);

finalizaPrograma();
getche();
}


// Funções:

// solicita uma nota exigindo que a mesma esteja na faixa válida: 0 a 10
float solicitaNota(void) {
// a variável nota tem escopo local, ou seja ela só existe dentro desta função
float nota;
do {
scanf("%f", &nota);
if(nota < 0 || nota > 10) {
printf("Erro, valor deve ser de 0 a 10 \n");
}
}while(nota < 0 || nota > 10);
return nota;
}

// calcula a média a partir de duas notas e pontos extras
// não permitindo que a média ultrapasse de 10
float calculaMedia(float nota1, float nota2) {
// a variável media tem escopo local, ou seja ela só existe dentro desta função
float media = ((nota1*0.4) + (nota2*0.6));
printf("Valor da Media: %.1f", media);
// não permite que o retorno seja maior que 10
if(media >= 6)
printf("\nAprovado \n");
else
printf("\nReprovado \n");;
}

// exibe os dados de uma aluno passado como argumento
void mostrar(struct TipoAluno aluno) {
printf("\n\nAluno: %s", aluno.nome);
printf("\nMedia: %.1f", aluno.media);
}

// função sem retorno, contendo comandos para finalizar o programa
void finalizaPrograma(void) {
printf("\n\n\n");
system("pause");
}



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts