Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jeovane Carvalho

Erro ao imprimir dados armazenados na memória em C

Recommended Posts

Olá Senhores , estou aqui para um help dos senhores mais experientes, e estou com um problema em meu código, pois desenvolvi um menu em C, e esta funcionando praticamente em tudo, e só não consegui imprimi todos os dados na tela ..

 

Por exemplo, se eu cadastrar mais de 1 aluno em meu sistema eu consigo visualizar de boa buscando pela matrícula, mas se eu pedi para listar todos os alunos cadastrados, ele só busca o primeiro e os outros ele não retorna, segue abaixo o código....

 

 

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

struct cadastro
{
	int matricula;
	char aluno[50];
	char disciplina1[50];
	char disciplina2[50];
	char disciplina3[50];
	float nota1;
	float nota2;
	float nota3;
	float nota4;
	float nota5;
	float nota6;
	float nota7;
	float nota8;
	float nota9;
	int codaux[20];
	int vazio;
	int cod;
	
	
};


struct cadastro registros[50];

void flush_in(){ 
    int ch;
    while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){} 
}
//Funçoes que serao usadas
void cadastrar(int cod, int pos);

//Funçao para consulta
void listar( void );

//Funçao para consulta
void consultar( void );

//Funçao para exibir relatorio
int relatorio( void );

//Função para verificar posição
int verifica_pos( void );

//Função para verificar codigo
int verifica_cod( int cod );

//Função para verificar posição do codigo
int verifica_pos( void );

//Função para excluir cadastro
void excluir( void );


int  main(void){

   int op = 0,senha,posicao, matricula, retorno;
	printf("#########               SISTEMA DE NOTAS DE ALUNOS:               ##############\n\n ");
	
do
{
    printf(" DIGITE UMA SENHA : ");
    scanf ("%d",&senha);
    if(senha!=1)
	{
   
	printf("Senha incorreta. Tente Novamente \n\n");
	system("pause");
    system("cls");
  

}
}
while(senha!=1);


while(op!=5){
system("cls");
printf ("\n\n *** MENU DE NOTAS DE ALUNO: ***\n\n ",setlocale(LC_ALL,""));
printf ("| 1 - Matrícula do Aluno      |\n",setlocale(LC_ALL,""));
printf (" | 2 - Lista de  Alunos        |\n",setlocale(LC_ALL,""));
printf (" | 3 - Listar dados do Aluno   |\n",setlocale(LC_ALL,""));
printf (" | 4 - Pesquisar por Matrícula |\n",setlocale(LC_ALL,""));
printf (" | 5 - Sair                    |\n",setlocale(LC_ALL,""));
scanf ("%d", &op); 
switch(op)
{
	case 1: // CADASTRAR
            {

                posicao=verifica_pos();
                

                if ( posicao != -1 )
                {

                    printf("\nDigite o número da matrícula para o aluno : ");
                    scanf("%d",&matricula);
					fflush(stdin);

                    retorno = verifica_cod( matricula);

                    if ( retorno == 1 )
                        cadastrar( matricula, posicao );
                    else
                        printf("\nCodigo ja existente\n");
system ("pause");
                }
                else
                    printf("\nNao e possivel realizar mais cadastros!\n");

                break;

            }

     
     	case 2: // LISTAR
            {
            	
            listar();
         
                break;
                
            }
            case 3:// CONSULTAR
            {
              consultar();
              
                break;
                
            }
            case 4:// EXCLUIR
            {
            		excluir();
            		system ("pause");
                break;
                
                
            } // SAIR
            case 5:
            {
                 printf("\n Saindo do Sistema - Tchau");
                 getchar();
                 return 0;
                 break;
            }
            
            default :// OPÇÃO INVÁLIDA
                printf("Opcão Inválida",setlocale(LC_ALL,""));
                break;
        }
    }
getchar();

}






// FUNÇAO CADASTRAR
void cadastrar( int cod, int pos )
{
    pos = verifica_pos();

    registros[pos].cod = cod;
	
	printf("\nDigite Nome do Aluno: ");
    scanf("%s",&registros[pos].aluno);
    
    
	printf("\nDigite a 1º  Disciplina : ");
    scanf("%s",&registros[pos].disciplina1);
    flush_in();
    printf("\nNota do 1º Bimestre: ");
	scanf("%f",&registros[pos].nota1);
   fflush(stdin);
    printf("\nNota do 2º Bimestre: ");
    scanf("%f",&registros[pos].nota2);
    fflush(stdin);
    printf("\nNota do 3º Bimestre: ");
    scanf("%f",&registros[pos].nota3);
    
	
	
	printf("\nDigite a 2º Disciplina : ");
    scanf("%s",&registros[pos].disciplina2);
    fflush(stdin);
    printf("\nNota do 1º Bimestre: ");
	scanf("%f",&registros[pos].nota4);
    fflush(stdin);
    printf("\nNota do 2º Bimestre: ");
    scanf("%f",&registros[pos].nota5);
    fflush(stdin);
    printf("\nNota do 3º Bimestre: ");
    scanf("%f",&registros[pos].nota6);
    
    
    
    
    printf("\nDigite a 3º Disciplina :  ",setlocale(LC_ALL,""));
    scanf("%s",&registros[pos].disciplina3);
    fflush(stdin);
    printf("\nNota do 1º Bimestre: ",setlocale(LC_ALL,""));
	scanf("%f",&registros[pos].nota7);
    fflush(stdin);
    printf("\nNota do 2º Bimestre: ",setlocale(LC_ALL,""));
    scanf("%f",&registros[pos].nota8);
    fflush(stdin);
    printf("\nNota do 3º Bimestre: ",setlocale(LC_ALL,""));
    scanf("%f",&registros[pos].nota9);
    
    
    registros[pos].vazio = 1;

    printf("\nCadastro Realizado com Sucesso!\n\n",setlocale(LC_ALL,""));
    getchar();

    system("cls");

} //Final da Função Cadastrar



// FUNÇAO LISTAR

void listar()
{
   setlocale(LC_ALL," ");
   int i,j,cod,posicao,pos, retorno;

    pos = verifica_pos();


  for (i=0; i<pos; i++ )
    {

  
if (registros[i].vazio==1)
    {
		    
                printf("\n\n\nRESULTADO DA BUSCA: \n\n");
                printf("\nForam encontrado (os) Aluno (s) : %d\n" ,registros[i].cod);
				printf("**********************************************\n\n");
			    printf("\nMatrícula : %d\n",registros[i].cod);
			    printf("\nNome do Aluno é: %s\n" ,registros[i].aluno);
				
				printf("\nDisciplina : %s\n",registros[i].disciplina1);
				printf("\nNota do 1º Bimestre: %.1f\t",registros[i].nota1);
				printf("\nNota do 2º Bimestre: %.1f\t",registros[i].nota1);
				printf("\nNota do 3º Bimestre: %.1f\n",registros[i].nota3);
				
				printf("\nDisciplina : %s\n",registros[i].disciplina2);
				printf("\nNota do 1º Bimestre: %.1f\t",registros[i].nota4);
				printf("\nNota do 2º Bimestre: %.1f\t",registros[i].nota5);
				printf("\nNota do 3º Bimestre: %.1f\n",registros[i].nota6);
				
				printf("\nDisciplina : %s\n",registros[i].disciplina3);
				 printf("\nNota do 1º Bimestre: %.1f\t",registros[i].nota7);
				printf("\nNota do 2º Bimestre: %.1f\t",registros[i].nota8);
				printf("\nNota do 3º Bimestre: %.1f\n",registros[i].nota9);
               
                printf("\n\n");
                printf("**********************************************\n\n");
                  system("pause");
                   getchar();
                   break;
                


}
i++;
	
	
}
if (registros[i].vazio==0)
  {
	
		
		printf("\nCódigo não encontrado\n\n");
      system("pause");
       system("cls");
       return ;
   }                
}
       

       

		

  



//FUNÇÃO CONSULTAR
void consultar( void )
{
    int cont = 0, cod,posicao, retorno,codaux;
   

    printf("\nEntre com o código: ",setlocale(LC_ALL,""));
    scanf("%d",&cod);

    system("cls");

    while ( cont <= 100 )
    {

        if (registros[cont].cod==cod)
        {
            if (registros[cont].vazio==1)
            {   printf("\n\n\nRESULTADO DA BUSCA: \n\n");
                printf("\nForam encontrado (os) Aluno (s) : %d\n" ,registros[cont].cod);
				printf("**********************************************\n\n");
			    printf("\nMatrícula : %d\n",registros[cont].cod);
			    printf("\nNome do Aluno é: %s\n" ,registros[cont].aluno);
				
				printf("\nDisciplina : %s\n",registros[cont].disciplina1);
				printf("\nNota do 1º Bimestre: %.1f\t",registros[cont].nota1);
				printf("\nNota do 2º Bimestre: %.1f\t",registros[cont].nota1);
				printf("\nNota do 3º Bimestre: %.1f\n",registros[cont].nota3);
				
				printf("\nDisciplina : %s\n",registros[cont].disciplina2);
				printf("\nNota do 1º Bimestre: %.1f\t",registros[cont].nota4);
				printf("\nNota do 2º Bimestre: %.1f\t",registros[cont].nota5);
				printf("\nNota do 3º Bimestre: %.1f\n",registros[cont].nota6);
				
				printf("\nDisciplina : %s\n",registros[cont].disciplina3);
				 printf("\nNota do 1º Bimestre: %.1f\t",registros[cont].nota7);
				printf("\nNota do 2º Bimestre: %.1f\t",registros[cont].nota8);
				printf("\nNota do 3º Bimestre: %.1f\n",registros[cont].nota9);
               
               
                printf("\n\n");

                system ("pause");

                system("cls");

                break;

            }
	
		}
        
        cont++;

if (registros[cont].vazio==0)
			 {
		
		printf("\nCódigo não encontrado\n\n",setlocale(LC_ALL,""));
        system("pause");
       system("cls");
       return ;
		}

    }
    
}

//FUNÇÃO VERIFICA POSIÇÃO
int verifica_pos( void )
{
    int cont = 0;

    while ( cont <= 100 )
    {

        if ( registros[cont].vazio == 0 )
            return(cont);

        cont++;

    }

    return(-1);

}

//FUNÇÃO ZERAR
void zerar( void )
{
    int cont;

    for ( cont = 0; cont <= 100; cont++ )
        registros[cont].vazio = 0;
}

//FUNÇÃO VERIFICA CODIGO
int verifica_cod( int cod )
{
    int cont = 0;

    while ( cont <= 100 )
    {
        if ( registros[cont].cod == cod )
            return(0);

        cont++;
    }

    return(1);

}

//FUNÇÃO EXCLUIR
void excluir( void )
{
    int cod, cont = 0;
    char resp;

    printf("\nEntre com o código do registro que deseja excluir\n",setlocale(LC_ALL,""));
    scanf("%d", &cod );

    while ( cont <= 100 )
    {

        if ( registros[cont].cod == cod )
        { // FALTOU

            if ( registros[cont].vazio == 1 )
            {
            	printf("\n\n\nRESULTADO DA BUSCA: \n\n");
                printf("\nForam encontrado (os) Aluno (s) : %d\n" ,registros[cont].cod);
				printf("**********************************************\n\n");
			    printf("\nMatrícula : %d\n",registros[cont].cod);
			    printf("\nNome do Aluno é: %s\n" ,registros[cont].aluno);
				
				printf("\nDisciplina : %s\n",registros[cont].disciplina1);
				printf("\nNota do 1º Bimestre: %.1f\t",registros[cont].nota1);
				printf("\nNota do 2º Bimestre: %.1f\t",registros[cont].nota1);
				printf("\nNota do 3º Bimestre: %.1f\n",registros[cont].nota3);
				
				printf("\nDisciplina : %s\n",registros[cont].disciplina2);
				printf("\nNota do 1º Bimestre: %.1f\t",registros[cont].nota4);
				printf("\nNota do 2º Bimestre: %.1f\t",registros[cont].nota5);
				printf("\nNota do 3º Bimestre: %.1f\n",registros[cont].nota6);
				
				printf("\nDisciplina : %s\n",registros[cont].disciplina3);
				 printf("\nNota do 1º Bimestre: %.1f\t",registros[cont].nota7);
				printf("\nNota do 2º Bimestre: %.1f\t",registros[cont].nota8);
				printf("\nNota do 3º Bimestre: %.1f\n",registros[cont].nota9);
               
               
              
                getchar();

                printf("\nDeseja realmente excluir ? S/N:");
                scanf("%c",&resp);

                if ( ( resp == 'S' ) || ( resp == 's' ) )
                {
                    registros[cont].vazio=0;
                    printf("\nExclusão feita com sucesso\n\n");
                    break;
                }
                else
                {
                    if ( ( resp == 'N' ) || ( resp == 'n' ) )
                    {
                        printf("Exclusão cancelada!\n");
                        break;
                    }
                }

            }

        }

        cont++;

        if ( cont > 100 )
            printf("\nCodigo nao encontrado\n");

    }

    system("pause");
    system("cls");

}

Como eu disse, ele roda de boa só não lista todos os alunos e apenas 0 1º, um #trabalhozinho de faculdade.. Obrigado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você ta fazendo um FOR, e incrementando i dentro dele.

for(int i = 0; i < pos; i++) {
	// seu código 
	i++;
}

Remove esse i++ de dentro do laço, o próprio for incrementa ele. 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, itlpps disse:

Você ta fazendo um FOR, e incrementando i dentro dele.


for(int i = 0; i < pos; i++) {
	// seu código 
	i++;
}

Remove esse i++ de dentro do laço, o próprio for incrementa ele. 

Valeu itlpps ,

mas mesmo assim ele só apresenta um resultado de 2 ou mais que estiverem cadastrados, eu trabalho mais com php e tenho pouco conhecimento em programação em C..

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Estou escrevendo um Sistema Java Web e quando clico no Botão Salvar, o Java acusa esse erro:

      ERROR: Cannot invoke "Object.toString()" because the return value of "java.util.Map.get(Object)" is null
       
      Já tentei de várias formas resolver esse problema, mas não estou conseguindo.

      Por favor, alguém pode me ajudar identificar a origem e resolver o problema acima ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Estou enfrentando um problema que não consigo entender.

      Após Instalar o MySql versão 8.0.36, funciona corretamente realizando as conexões.

      O problema é:
      ---[ após reiniciar o micro, o MySql não faz as conexões.
      --[ tenta localizar este arquivo, mas não acha: my.ini
       
      Onde localizo ou configuro este arquivo na Pasta MySql ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, preciso de ajuda em Relação a Instalar o Jasper Reports no Eclipse, pois a opção de Eclipse Marketplace, não encontra para instalar.
       
      Já tentei de todas as formas mas não consegui, alguém conhece alguma rotina explicando este procedimento ?
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amantes da informática.
       
      Saudações.
       
      Estou usando o Eclipse Mars versão 4.5.0  e o 4.5.2, acredito que deva ter versões mais novas. 
      Sou novato em JAVA e estou encontrando alguns problema em Instalação de alguns plugins, como por exemplo:
       
      1) quando tento instalar o JBoss Tools através do Eclipse Marteplace, o Eclipse não o encontra na lista de plugins.
      2) se tento instalar através do Install New Software, abaixa alguns arquivos, mas também não instala o JBoss.
      3) se abro o site e arrasto o download para a área de trabalho do Eclipse, também não instala o JBoss.
       
      Caros amigos, existe outra alguma forma de instalar o JBoss Tools no Eclipse e como seria ?
       
      Grato,
       
      Cesar
       
       
    • Por josenilson
      Olá pessoal !
       
      Estou tentando rodar um projeto de um jogo na minha maquina porem o mesmo pede para adicionar o log4cxx 0.10.0, realizei pesquisas na internet a respeito mas até agora nada, Encontre para baixar nesse site https://logging.apache.org/log4cxx/1.0.0/download.html porem não sei se devo instalar ele no windows porque ao exportar ele no projeto as depêndencias que precisam dele ficam informando o erro log4cxx.logger.h no such file or directory. a linguagem que estou usando e C++
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.