Ir ao conteúdo
  • Cadastre-se

C Problema com saída em C - Em relação a saída do programa.


Deyvid Santos
Ir à solução Resolvido por V!OLADOR,

Posts recomendados

PROBLEMA COM SAÍDA DE NOME EM UM PROGRAMA EM C

Bom pessoal é o seguinte estou com um problema em relação, a saída de um programa em C :

O programa se trata de criar um sistema que leia nomes de 5 alunos e leia suas 2 notas.

 

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>


int main(){
	int i;
	int count;
	int opcao;
	char nomes[5][100];
	int QUANTIDADE_DE_ALUNOS = 5;
	float j[5];
	float nota1[5];
	float nota2[5];
	do{
	setlocale(LC_ALL,"");
	system("cls");
	printf("------------------------------");
	printf("\n SISTEMA DE ALUNOS UNIBURROS \n");
	printf("------------------------------");
	printf("\n");
	printf("\n Escolha uma Opção: ");
	printf(" \n 1 - Cadastro de Notas de Alunos");
	printf(" \n 2 - Exibir media geral de todos os alunos");
	printf(" \n 3 - Nome e Notas de todos os alunos");
	printf(" \n 4 - Mostrar Situação dos Alunos ");
	printf(" \n 5 - Sair \n");
	printf(" \n Digite aqui:");
	scanf("%d", &opcao);
	
		
		if (opcao==1){
		  	for (count=1; count<=5; count++)
        	{
        		fflush(stdin);
        		system("cls");
        		printf("-=-CADASTRO DE ALUNOS-=-");
				printf ("\n\nDigite o nome do aluno %d [SEM ACENTUAÇÃO]: ", count);
        		gets(nomes[count]);
        	}
        	
			for (count=1; count<=5; count++){
				fflush(stdin);
        		system("cls");
        		printf ("\n\nDigite a primeira e segunda nota do Aluno(a) %s : ", nomes[count]);
        		scanf("%f %f", &nota1[count],&nota2[count]);
				j[count] = (nota1[count]+nota2[count])/2;}
			}
		  		

                
        if (opcao ==2){
        	system("cls");
        	fflush(stdin);        	
			printf("------MÉDIAS GERAIS-----------");
        	for (count=1; count<=5; count++){
        	printf("\n Nome: %s", nomes[count]);
        	printf("\n Média Geral: %.1f \n", ((nota1[count]+nota2[count])/2));}
        	system("pause");
        	
    
  		}
  		
  		if (opcao ==3){
  			system("cls");
  			fflush(stdin);
  			printf("------NOMES E NOTAS-----------");
  		    for (count=1; count<=5; count++){
  		      printf("---------------------------");
  		      printf("\n Nome: %s \n", nomes[count]);
  		      printf("\n Nota 1: %.1f \n", nota1[count]);
  		      printf("\n Nota 2: %.1f \n" , nota2[count]);
  		      printf("\n Média: %.1f \n", (nota1[count]+nota2[count])/2);
  		      printf("---------------------------");
			  }
			system("pause");  
		  }
		  
		if (opcao == 4){
			system("cls");
			fflush(stdin);
			printf("--------SITUAÇÃO ESCOLAR-------");
			 for(count=1; count<=5; count++){
			 	printf("\n Nome: %s \n", nomes[count]);
			 	if (j[count] >= 7){
			 		printf("\n Situação: APROVADO \n");
				 }
				else {
					printf("\n Situação: REPROVADO \n");
				}
			 }
		}system("pause");	
	}while (opcao!=5);
}

 

E bom o problema está na saída do quinto nome, Ele simplesmente mostra um caractere icógnita:

imagem.png.3a380ede1a88ee7e1d40cf1a8d569e14.png

 

 

 

Eu sou um novato em C galera. Por favor não venham com comentários de "fácil de resolver", "você é isso". Afinal ninguém nasce aprendendo e outros aprendem de forma lenta. Então por favor se puderem me ajudar agradeço muito, se não agradeço da mesma forma por sua atenção.

Link para o comentário
Compartilhar em outros sites

  • Solução

Em C os elementos de um array são indexados a partir do zero, ou seja, o intervalo pra cinco elementos seria entre count = 0 e count = 4. Então, no for

 

for (count=1; count<=5; count++)

 

count deveria iniciar em 0 e o loop não deveria terminar enquanto count < 5, totalizando 5 elementos.

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

3 minutos atrás, V!OLADOR disse:

Em C os elementos em um array são indexados a partir do zero, ou seja, o intervalo pra cinco elementos seria entre count = 0 e count = 4. Ou seja, no for

 


for (count=1; count<=5; count++)

 

count deveria iniciar em 0 e terminar com count < 5, totalizando 5 elementos.

imagem.png.b5125beec8a75bed228cda57566c46fb.png

 Ah entendi irmão então é de 0 até n elementos, muito obrigado ajudou meu problema aqui. Deixarei aqui o código abaixo por fim das dúvidas caso alguém tenha o mesmo problema.

 

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>


int main(){
	int i;
	int count;
	int opcao;
	char nomes[5][100];
	int QUANTIDADE_DE_ALUNOS = 5;
	float j[5];
	float nota1[5];
	float nota2[5];
	do{
	setlocale(LC_ALL,"");
	system("cls");
	printf("------------------------------");
	printf("\n SISTEMA DE ALUNOS UNIBURROS \n");
	printf("------------------------------");
	printf("\n");
	printf("\n Escolha uma Opção: ");
	printf(" \n 1 - Cadastro de Notas de Alunos");
	printf(" \n 2 - Exibir media geral de todos os alunos");
	printf(" \n 3 - Nome e Notas de todos os alunos");
	printf(" \n 4 - Mostrar Situação dos Alunos ");
	printf(" \n 5 - Sair \n");
	printf(" \n Digite aqui:");
	scanf("%d", &opcao);
	
		
		if (opcao==1){
		  	for (count=0; count<5; count++)
        	{
        		fflush(stdin);
        		system("cls");
        		printf("-=-CADASTRO DE ALUNOS-=-");
				printf ("\n\nDigite o nome do aluno %d [SEM ACENTUAÇÃO]: ", count+1);
        		gets(nomes[count]);
        	}
        	
			for (count=0; count<5; count++){
				fflush(stdin);
        		system("cls");
        		printf ("\n\nDigite a primeira e segunda nota do Aluno(a) %s : ", nomes[count]);
        		scanf("%f %f", &nota1[count],&nota2[count]);
				j[count] = (nota1[count]+nota2[count])/2;}
			}
		  		

                
        if (opcao ==2){
        	system("cls");
        	fflush(stdin);        	
			printf("------MÉDIAS GERAIS-----------");
        	for (count=0; count<5; count++){
        	printf("\n Nome: %s", nomes[count]);
        	printf("\n Média Geral: %.1f \n", ((nota1[count]+nota2[count])/2));}
        	system("pause");
        	
    
  		}
  		
  		if (opcao ==3){
  			system("cls");
  			fflush(stdin);
  			printf("------NOMES E NOTAS-----------");
  		    for (count=0; count<5; count++){
  		      printf("---------------------------");
  		      printf("\n Nome: %s \n", nomes[count]);
  		      printf("\n Nota 1: %.1f \n", nota1[count]);
  		      printf("\n Nota 2: %.1f \n" , nota2[count]);
  		      printf("\n Média: %.1f \n", (nota1[count]+nota2[count])/2);
  		      printf("---------------------------");
			  }
			system("pause");  
		  }
		  
		if (opcao == 4){
			system("cls");
			fflush(stdin);
			printf("--------SITUAÇÃO ESCOLAR-------");
			 for(count=1; count<=5; count++){
			 	printf("\n Nome: %s \n", nomes[count]);
			 	if (j[count] >= 7){
			 		printf("\n Situação: APROVADO \n");
				 }
				else {
					printf("\n Situação: REPROVADO \n");
				}
			 }
		}system("pause");	
	}while (opcao!=5);
	return 0;
}

 

imagem.png.56202a5410e8dd7cf14ff71aa35cae65.png

 

 

imagem.png

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!