Ir ao conteúdo
  • Cadastre-se

C++ Ler 4 nomes e os exibir na tela.


HenriqueABC

Posts recomendados

Olá boa noite! Eu estou tendo problemas com meu código, eu tenho que fazer um código onde da as seguintes opções ao usuário, 1-Cadastro de alunos ( e as notas dos 4 bimestres)    2- Alunos aprovado    3- Alunos reprovados.

Na hora de compilar, esta sendo lido somente o ultimo nome que digito, alguém poderia me ajudar. Obrigado desde já.

#include <stdlib.h>
#include <string.h>
#define cls system("cls");
 
float media,n1,n2,n3,n4;
int i;
int cadastro(void);
int aprovado(void);
int reprovado(void);
char nome[80];

int main(void){
	
	char tecla;
	int opcao=0;
	while (opcao!=4){

	printf ("\n    Menu Principal\n\n");
	printf ("1 - Cadastro de alunos\n");
	printf ("2 - Alunos aprovados\n");
	printf ("3 - Alunos reprovados\n");
	printf ("4 - Fim do programa\n");
	printf ("\nEscolha a opcao desejada: ");
	fflush (stdin);scanf ("%d",&opcao);
	
	switch (opcao!=4){
		
		case 1:cadastro(); break;
		case 2:aprovado(); break;
		case 3:reprovado(); break;
 	}
	}return(0);
	}
	
	int cadastro(void){
		
		char tecla;
		for (i=0; i<4; i++){
		cls
		printf ("\nCadastro de Alunos:\n\n");
		
		printf ("Nome");
		fflush(stdin);scanf ("%s",&nome);
		
		printf ("Digite a primeira Nota: ");
		fflush(stdin);scanf ("%f",&n1);
		printf ("Digite a segunda Nota: ");
		fflush(stdin);scanf ("%f",&n2);
		printf ("Digite a terceira Nota: ");
		fflush(stdin);scanf ("%f",&n3);
		printf ("Digite a quarta Nota: ");
		fflush(stdin);scanf ("%f",&n4);
	}
		for (i=0; i<4; i++)
		printf ("Nome: %s \n", nome);
		{
		return (0);}
		}
		
		int aprovado (){
		}
		
		int reprovado(){
		}

 

Link para o comentário
Compartilhar em outros sites

@HenriqueABC Tem muitos erros:

  • Criou o tópico em C++, mas programou em C;
  • Não incluiu o cabeçalho padrão de entrada/saída: stdio. Me surpreendo que conseguiu compilar...
  • Usou variáveis globais sem necessidade: podem ser lidas ou modificadas por qualquer parte do programa, o que implica na falta de controle e na desorganização/poluição do namespace. Você só torna algo global se este algo realmente deveria ser. Evite ao máximo (principalmente se é iniciante), não a todo custo;
  • fflush() não é definida para streams de entrada, então não adianta passar stdin como argumento na chamada da função. Se quer descartar o '\n' (que na maioria dos casos não faz parte da leitura e acaba ficando no buffer), use o subespecificador * junto ao especificador c depois de ler o que quer que seja, assim: %*c. Isso garante que o '\n' será lido e ignorado;
  • Você definiu "cls" como "system("cls");", e não está errado, mas fica estranho sem o ";" quando for chamar, dá a impressão de que esqueceu de incluir.
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

16 horas atrás, HenriqueABC disse:

Na hora de compilar, esta sendo lido somente o ultimo nome que digito, alguém poderia me ajudar. Obrigado desde já

 

Não, não é na hora de compilar.

 

Teste o retorno de scanf(). SEMPRE. Qual o propósito de segui sem saber se leu alguma coisa? Voê tem um livro? Uma apostila ao menos? Leu algo sobre scanf()?

 

O programa não está bom. Tire esses fflush(). 

 

Enquanto está testando e enquanto está aprendendo mostre na tela os valores que já leu, antes de assumir que está tudo certo!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...