Enviado em 10/09/2015 - 09:56h
Estou com um problema com código usando structs, acho que tem algo muito errado na minha função de ler e validar uma nota.
// Aluno : Fernando Henrique Antero de Moraes
/*
Sintese
Objetivo: Auxiliar o usuário no cadastro de um aluno , suas 4 notas e calcular a média.
Entrada :nome do aluno, notas
Saida : nome do aluno, notas, media
*/
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#define MAX_NOME 100
#define QTDE_NOTAS 4
struct Cadastro
{
char nome[MAX_NOME];
float notas[QTDE_NOTAS];
float media;
};
//////////////////////PROTÓTIPOS/////////////////////////////////////
void leValidaNota(struct Cadastro aluno, char *titulo, int contador);
void apresentaCadastro(struct Cadastro aluno, int qtdeNotas);
void calculaMedia(struct Cadastro aluno, int qtdeNotas);
void leValidaTexto (char *texto, char *mensagemTitulo, int tamanho);
///////////////////////////////////////////////////
int main(void){
// Declaracoes
char titulo[MAX_NOME];
int aux;
// Instrucoes
setlocale(LC_ALL,"Portuguese");
struct Cadastro aluno;
leValidaTexto(aluno.nome,"Informe o nome do estudante:",MAX_NOME);
for(aux=0;aux<QTDE_NOTAS;aux++){
leValidaNota(aluno,"Informe as notas do estudante:\n", aux);
}
calculaMedia(aluno, QTDE_NOTAS);
apresentaCadastro(aluno, QTDE_NOTAS);
getch();
return 0;
}
//Objetivo:ler e validar uma nota
//Parametros:
//Retorno:nota valida
void leValidaNota(struct Cadastro aluno, char *titulo, int contador)
{
int ret;
do{
printf("Informe a nota numero %d:\n",contador+1);
fflush(stdin);
ret=scanf("%f",&aluno.notas[contador]);
fflush(stdin);
if(aluno.notas[contador]<0||aluno.notas[contador]>10)
{
printf("Valor informado fora da faixa informe novamente: 0...10\n");
}
else if(ret==0)
{
printf("Campo destinado para numeros, informe novamente\n");
}
}while(aluno.notas[contador]<0||aluno.notas[contador]>10||ret==0);
}
// Objetivo: Ler e validar um texto
// Parâmetros: referencia ao vetor do texto, referencia ao vetor mensagem de titulo, valor maximo da string
// Retorno:
void leValidaTexto (char *texto, char *mensagemTitulo, int tamanho)
{
do{
printf("%s\n", mensagemTitulo);
fflush(stdin);
fgets(texto, tamanho, stdin);
fflush(stdin);
if(texto[strlen(texto)-1] == '\n'){
texto[strlen(texto)-1] = '\0';
}
if(strlen(texto) == 0){
system("cls");
printf("Nada foi informado\n");
getch();
}
}while(strlen(texto) == 0);
}
//Objetivo:calcular a media entre 4 valores
//Parametros:
//Retorno:
void calculaMedia(struct Cadastro aluno, int qtdeNotas)
{
float somaMedias;
int aux;
for(aux=0;aux<qtdeNotas;aux++){
somaMedias=aluno.notas[aux];
}
aluno.media=somaMedias/qtdeNotas;
}
//Objetivo:Apresentar os dados do aluno
//Parametros:
//Retorno:
void apresentaCadastro(struct Cadastro aluno, int qtdeNotas)
{
int aux;
printf("Aluno:%s\n",aluno.nome);
printf("Suas notas foram:\n");
for(aux=0;aux<qtdeNotas;aux++){
printf("%.2f\n",aluno.notas[aux]);
}
printf("A média do aluno foi %.2f:\n", aluno.media);
}
Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET
Instalando Zoom Client no Fedora 40
Instalando Navegador Firefox no Debian 12
Bloqueando propagandas no Youtube e outros sites com o uBlocker Origin
O meu código em C++ não funciona (4)
Sistema da Coréia do Norte - Red Star OS (52)
Ajuda com instalação do archlinux no VMbox (6)
Como usar o WhatsApp no PC sem precisar escanear o qrcode ou utilizar... (13)