[resolvido]

4 respostas Resolvido
V

/*O codigo funciona normalmente mas a função alterar não funciona corretamente,alguém poderia me ajudar?. Perdoem meus erros de publicação,sou iniciante no fórum ainda.Qualquer ajuda em relação a isso seria mt bem vinda. */

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>

void consultaCod();

int verifica_pos(void);

int verifica_cod(int cod);

void cadastroP(int cod, int pos);

int opt;

void list();

void excluirAluno(void);

void alterarAluno(void);

struct faculdade{
char nome [20];	

char email[20];

char endereco [10];

char CPF [20];	

char telefone[20];

int vazio,cod;

}log [50];

main(){

struct faculdade cadastro;

int Opcao,Opcaoaluno,posicao,retorno;

int codaux;

printf("--------------Faculdade--------------\n");
printf("------------Sistema de matriculas-----------\n");

printf(1 - Cadastrar Novo Aluno\n);

printf(2 - Aluno\n);

printf(3 - Alterar Aluno\n);

printf(4 - Excluir Aluno\n);

printf(5 - Sair\n);

printf(" Selecione uma opcao por favor: “);

scanf(”%d", &Opcao);

getchar();
if (Opcao == 1)
	{
		printf("Voce selecionou a opcao 1 - Cadastrar Novo Aluno\n");
		posicao=verifica_pos();

            if ( posicao != -1 )
            {

                printf("\nEntre com um codigo de 1 a 50 para seu cadastro: \n");
                scanf("%d",&codaux);fflush(stdin);

                retorno = verifica_cod( codaux );

                if ( retorno == 1 )
                    cadastroP( codaux, posicao );
                else{
                    printf("\nCodigo ja existente ou invalido pressione enter para voltar ao menu principal\n");
                    getchar();
                    system("cls");
                    main();
                }

            }
            else
                printf("\nNao e possivel realizar mais cadastros!\n");

              
	}
	else if (Opcao == 2)
	{
		system("cls");
	
		do{
		printf("Voce selecionou a opcao 2 - Alunos\n\n");
		printf("1 - Pesquisar Aluno por codigo\n");
		printf("2 - Listar todos os Alunos\n");
		printf("3 - Voltar ao menu principal\n");
		printf("Selecione uma opcao por favor: ");
		scanf("%d", &Opcaoaluno);
		getchar();
		 	if(Opcaoaluno == 1){
				consultaCod();
				main();
			}
			else if(Opcaoaluno == 2){
				list();
				main();
			}
			else if(Opcaoaluno == 3){
				printf("Voce selecionou voltar ao menu principal, pressione ENTER para continuar");
				getchar();
				system("cls");
				main();
			}
			else
				printf("Opcao Invalida\n\n");
		}while(Opcaoaluno =!3 || Opcaoaluno > 3 || Opcaoaluno < 0 || Opcaoaluno == 0);
	}
	else if (Opcao == 3)
	{
		printf("Voce selecionou a opcao 3 - Alterar aluno\n");
			alterarAluno();
	}
	else if (Opcao == 4)
	{
		printf("Voce selecionou a opcao 4 - Excluir Aluno\n");
		excluirAluno();
	}
	else if (Opcao == 5)
	{
		printf("Voce selecionou a opcao 5 - Sair\n");
	}
	else{
		printf("Opcao invalida, favor pressione enter para voltar ao menu principal");
		getchar();
		system("cls");
	}
		while (Opcao != 5 || Opcao < 5);
	}	



void list(){ // Lista os alunos cadastrados.
int i,j;	
for(i=0;i<50;i++){
	if(log[i].cod!=NULL){
		printf("\nEmail: %s \nCodigo: %d \nNome: %s\nCPF: %s\nEndereco: %s\nTelefone: %s\n\n", log[i].email,log[i].cod,log[i].nome,log[i].CPF,log[i].endereco,log[i].telefone);
}
}

printf(Pressione enter para volta ao menu principal);

getchar();

system(cls);

}

void cadastroP(int cod, int pos){ //Cadastro dos alunos

int i;

do{

pos = verifica_pos();

log[pos].cod = cod;

printf("\nDigite seu nome: “);

gets(log[pos].nome);

printf(”\nDigite seu CPF: “);

gets(log[pos].CPF);

printf(”\nDigite seu Endereco: “);

gets(log[pos].endereco);

printf(”\nDigite seu Telefone: “);

gets(log[pos].telefone);

printf(”\nDigite seu email:  ");

gets(log[pos].email);

log[pos].vazio = 1;
opt ==1;
	getchar();	
}while(opt==1);
system("cls");
main();

}

int verifica_pos( void ) //VERIFICADOR DA POSIÇÃO
{
	 int cont = 0;

while ( cont <= 50 )
{

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

    cont++;

}

return(-1);
}

int verifica_cod( int cod ) // VERIFICADOR DE CÓDIGO

{

int cont = 0;

if (cod==0) return 0;

while ( cont <= 50 )

{

if ( log[cont].cod == cod )

return(0);
cont++;
}

return(1);

}

void consultaCod (void) // CONSULTAR 1 CADASTRADO QUALQUER VIA CÓDIGO DADO POR USUÁRIO.

{
int cont = 0, cod;

printf("\nEntre com o codigo\n");
scanf("%d",&cod);
fflush(stdin); 
system("cls");

while ( cont <= 50 )
{

    if (log[cont].cod==cod)
    {
        if (log[cont].vazio==1)
        {
        	
			printf("\nEmail: %s \nCodigo: %d \nNome: %s\nCPF: %s\nEndereco: %s\nTelefone: %s\n\n",log[cont].email,log[cont].cod,log[cont].nome,log[cont].CPF,log[cont].endereco,log[cont].telefone);
			

            system ("pause");

            system("cls");

            break;

        }
    }

    cont++;

    if ( cont > 50 ){
        printf("\nCodigo nao encontrado, pressione enter para volar ao menu principal\n");
        getchar();
        system("cls");
    }

}

}

void excluirAluno(void)  // Exclui alunos

{

int cod, cont = 0;

char resp;

printf("\nEntre com a matricula que deseja excluir: \n");

scanf("%d", &cod );
while ( cont <= 50 )
{

   if ( log[cont].cod == cod )
   { 

     if (log[cont].vazio == 1 )
      {
		printf("\nCodigo: %d \nNome: %s\nCPF: %s\nEndereco: %s\nTelefone: %s\n\n", log[cont].cod,log[cont].nome,log[cont].CPF,log[cont].endereco,log[cont].telefone);
        getchar();
        printf("\nDeseja realmente excluir? s/n: ");
        scanf("%s",&resp);

        if ( ( resp == 'S' ) || ( resp == 's' ) )
        {
            log[cont].vazio=0;
            log[cont].cod = NULL;
            printf("\nExclusao feita com sucesso\n");
           	system("cls");
           	main();
		    break;
            }
       }

    }

    cont++;

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

}
}

void alterarAluno(void){

int cod,cont =0;

char resp;

char nome2[20];

char CPF2 [11];

char endereco2[20];

char telefone2[20];
printf("Entre com o codigo da matricula que deseja alterar: \n ");
scanf("%d",&cod);
 while ( cont <= 50 )
{

   if ( log[cont].cod == cod )
   { 

     if (log[cont].vazio == 1 )
      {
		printf("\nCodigo: %d \nNome: %s\nCPF: %s\nEndereco: %s\nTelefone: %s\n\n", log[cont].cod,log[cont].nome,log[cont].CPF,log[cont].endereco,log[cont].telefone);
        getchar();
        printf("\nQual informação você deseja alterar ? ");
        printf(" 1 - Nome: \n");
        printf(" 2 - CPF: \n ");
        printf(" 3 - endereco: \n");
        printf(" 4 - telefone: \n");
		
		scanf("%s",&resp);
		
		switch (resp){
		
        	case 1 :
            printf("Insira outro nome:\n ");
			fflush(stdin);
			scanf("%s",&nome2);
			strcpy(log[cont].nome, nome2);
            break;
           case 2 :
           	printf("Insira outro CPF: \n");
           	fflush(stdin);
			scanf("%s",&CPF2);
           	strcpy(log[cont].CPF,CPF2);
           	break;
           case 3 :
           	printf("Insira outro endereco: \n");
           	fflush(stdin);
			scanf("%s",&endereco2);
			strcpy(log[cont].endereco,endereco2);
          	break;
		   case 4 :
		   	printf("Insira outro telefone: \n");	
      		fflush(stdin);
			scanf("%s",&telefone2);
      		strcpy(log[cont].telefone,telefone2);
	    	break;
			default :
		 	printf("\nCodigo nao encontrado\n");
		}
   		getch();
	   }
    }
cont++;
}
}

4 Respostas

V

O que aparece quando você tenta alterar ?

V
Solucao aceita
printf("\nCodigo: %d \nNome: %s\nCPF: %s\nEndereco: %s\nTelefone: %s\n\n", log[cont].cod,log[cont].nome,log[cont].CPF,log[cont].endereco,log[cont].telefone);
        getchar();
        printf("\nQual informação você deseja alterar ? ");
        printf(" 1 - Nome: \n");
        printf(" 2 - CPF: \n ");
        printf(" 3 - endereco: \n");
        printf(" 4 - telefone: \n");
		
		scanf("%s",&resp);

Repare que você está usando %s no scanf, altere a variável para int, use %d, pois a resposta é um inteiro int e não uma string.

V

Deu certo!!!
MUITO OBRIGADO.
Obrigado mesmo

V

Fecha o tópico e marca como resolvido amigo.

Criado 16 de novembro de 2018
Ultima resposta 25 de nov. de 2018
Respostas 4
Participantes 2