Ir ao conteúdo
  • Cadastre-se

Verificando Código em C


xagun

Posts recomendados

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define TAM 100

int i_cad;


struct soft{
int codigo;
char nome[TAM];
float versao;
int ano;
char function[TAM];
char tam[TAM];
} vet_cadastro[TAM];


int cadastrar(struct soft vet_cadastro[TAM]);
void consult(struct soft vet_cadastro[TAM]);
int alterar(struct soft vet_cadastro[TAM]);
struct soft vet_cadastro[TAM];
int check_cod(int cadastrar(struct soft vet_cadastro[TAM]));

int main(int argc, char *argv[]) {
	
	struct soft vet_cadastro[TAM];	
	char Chave1[10], Chave2[10];
	int x, a=1, b=1, cont;
	int m;
	char call;
	int retorno;
	int n;
	int codigo;
	char v1;
	m = 0;

	
	printf("\n                       --------Bem-Vindo--------\n\n");
	printf("\n\t\t  ** BIBLIOTECA DE SOFTWARE LIVRE **");
	
do{
		printf("\n\nChave1:  ");
		gets(Chave1);
		fflush(stdin);
		printf("\nChave2:  ");
		gets(Chave2);
		fflush(stdin);
		a = strcmp(Chave1, "l");
		b = strcmp(Chave2, "d");
			
		if (a != 0 || b != 0)
			printf("\n                       Chave Incorreta\n\n                   ----Tente Novamente----");
			
	
	}while(a != 0 || b != 0);
	
	
			printf("\n                          ----Login Efetuado----\n\n");
			getch();
		
        system("cls");
      	  
      	
			 	
	do{
		
		
		printf("\n\nEscolha uma das opções abaixo: \n\n");
		printf("1- Cadastrar SOFTWARE \n2- Consultar SOFTWARE \n3- Alterar cadastro \n4- Sair <- \n");
		printf("\nOpcao: ");
		fflush(stdin);
		scanf("%d", &m);
		
		switch(m){
			case 1: 
					system("cls");	
					
					
					retorno = check_cod(cadastrar(vet_cadastro));
					
				if (retorno == 1){				
					cadastrar(vet_cadastro);
					break;
					
				}else {
					printf("Palavra-Chave já existente !");
					getch();	
					break;
				}
				
				case 2:
					system("cls");
					consult(vet_cadastro);
					getch();
					system("cls");		
					break;
					
				case 3:
					system("cls");
				 	
                    alterar(vet_cadastro);
                    system("cls");
                    break;
				
				case 4:
					system("cls");
					printf("\n\n\t\t\t\t** ADEUS ! **\n\n");
					getch();
					break;
					
				default:
					system("cls");
			    	printf("\n\nOpcao Invalida\n\n");
					break;	
															
			}
			}while(m != 4);
		
	
	return 0;
}


int cadastrar(struct soft vet_cadastro[TAM]){
	
	int cod;
	if(i_cad > 100)return 0;
	char call;
	do{

			fflush(stdin);
			printf("\nEntre com a Palavra-Chave(Numeros): ");
			scanf("%d", &cod);
			vet_cadastro[i_cad].codigo == cod;
			fflush(stdin);
			printf("\nNome do SOFTWARE: ");
			gets(vet_cadastro[i_cad].nome);
			fflush(stdin);
			printf("Versao: ");
			scanf("%f", &vet_cadastro[i_cad].versao);
			fflush(stdin);
			printf("Ano: ");
			scanf("%d", &vet_cadastro[i_cad].ano);
			fflush(stdin);
			printf("Funcionalidade: ");
			gets(vet_cadastro[i_cad].function);
			fflush(stdin);
			printf("Tamanho: ");
			gets(vet_cadastro[i_cad].tam);
			fflush(stdin);

			i_cad++;
			

		printf("\nDeseja continuar cadastrando ? [s] - sim / [n] - nao :  ");
		scanf("%c", &call);
		system("cls");
		fflush(stdin);


	}while (call == 's' && call != 'n');
	}

void consult(struct soft vet_cadastro[TAM]){
	
	int codigo;
	int i = 0;
	
	printf("\nEntre com a Palavra-Chave(Numeros): ");
	scanf("%d",&codigo);
	
	for ( i = 0; i < TAM; i++ )
    {
        if (vet_cadastro[i].codigo == codigo)
        {
                  
                printf("\n Nome: %s", vet_cadastro[i].nome);
                printf("\n Versao: %f", vet_cadastro[i].versao);
                printf("\n Ano: %d", vet_cadastro[i].ano);
                printf("\n Funcionalidade: %s", vet_cadastro[i].function);
                printf("\n Tamanho: %s", vet_cadastro[i].tam);
      return;  
	        	
	}else
{
	printf("\n\n\t    Palavra-Chave nao cadastrada !");
	return;
}
}
}

int alterar(struct soft vet_cadastro[TAM]){
	
	int codigo;
	int cont;
	
	if(cont > 100)return 0;
	
	
		printf("\nEntre com a Palavra-Chave de cadastro: \n");
        scanf("%d",&codigo);
        
    for(cont=0; cont < 100; cont++){
        
     	if(vet_cadastro[cont].codigo == codigo){		

			fflush(stdin);
			printf("\nNome do SOFTWARE: ");
			gets(vet_cadastro[cont].nome);
			fflush(stdin);
			printf("Versao: ");
			scanf("%f", &vet_cadastro[cont].versao);
			fflush(stdin);
			printf("Ano: ");
			scanf("%d", &vet_cadastro[cont].ano);
			fflush(stdin);
			printf("Funcionalidade: ");
			gets(vet_cadastro[cont].function);
			fflush(stdin);
			printf("Tamanho: ");
			gets(vet_cadastro[cont].tam);
			fflush(stdin);
			
			break;		

	}
	
}

}

int check_cod(int cadastrar(struct soft vet_cadastro[TAM])){
	
	int i = 0;
	int cod;
		
	
	for ( i = 0; i < TAM; i++ )
    {
        if (vet_cadastro[i].codigo == cadastrar(cod) )
        		return(0);
        
        else 
        	return(1);
        	
}
}

Bom dia :), fiz esse código aí pessoal e meu problema eu acho que seria na verificação do código, pra o usuario n poder criar um já existente, fiz a função beleza, passei como parâmetro uma outra função q tem o código, porque ele cadastra o código na função cadastrar e nao na main... Pela lógica eu passei a outra função como parâmetro, porém quando eu termino de cadastrar o programa dá um bug e fecha.. 

Alguém pode me dizer qual seria o problema e como consertar ? Img abaixo.

Capturar.JPG

Capturar1.JPG

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

Modifiquei o programa para isso: 

(Porém ele ainda não aparece a mensagem de código já cadastrado.., ele pede pra cadastrar de novo):

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define TAM 100

int i_cad;


struct soft{
int codigo;
char nome[TAM];
float versao;
int ano;
char function[TAM];
char tam[TAM];
} vet_cadastro[TAM];


int cadastrar(struct soft vet_cadastro[TAM], int codigo);
void consult(struct soft vet_cadastro[TAM]);
int alterar(struct soft vet_cadastro[TAM]);
struct soft vet_cadastro[TAM];
int check_cod(int codigo);

int main(int argc, char *argv[]) {
	
	struct soft vet_cadastro[TAM];	
	char Chave1[10], Chave2[10];
	int x, a=1, b=1, cont;
	int m;
	char call;
	int retorno;
	int n;
	int codigo;
	char v1;
	m = 0;

	
	printf("\n                       --------Bem-Vindo--------\n\n");
	printf("\n\t\t  ** BIBLIOTECA DE SOFTWARE LIVRE **");
	
do{
		printf("\n\nChave1:  ");
		gets(Chave1);
		fflush(stdin);
		printf("\nChave2:  ");
		gets(Chave2);
		fflush(stdin);
		a = strcmp(Chave1, "l");
		b = strcmp(Chave2, "d");
			
		if (a != 0 || b != 0)
			printf("\n                       Chave Incorreta\n\n                   ----Tente Novamente----");
			
	
	}while(a != 0 || b != 0);
	
	
			printf("\n                          ----Login Efetuado----\n\n");
			getch();
		
        system("cls");
      	  
      	
			 	
	do{
		
		
		printf("\n\nEscolha uma das opções abaixo: \n\n");
		printf("1- Cadastrar SOFTWARE \n2- Consultar SOFTWARE \n3- Alterar cadastro \n4- Sair <- \n");
		printf("\nOpcao: ");
		fflush(stdin);
		scanf("%d", &m);
		
		switch(m){
			case 1: 
				system("cls");
					
		if (i_cad == 0){
			
			printf("\nEntre com a Palavra-Chave(Numeros): ");
			scanf("%d", &codigo);
			
	}
					retorno = check_cod(codigo);
			
				if (retorno == 1){				
					cadastrar(vet_cadastro, codigo);
					break;
					
				}else {
					printf("Palavra-Chave já existente !");
					getch();	
					break;
				}
		
				case 2:
					system("cls");
					consult(vet_cadastro);
					getch();
					system("cls");		
					break;
					
				case 3:
					system("cls");
				 	
                    alterar(vet_cadastro);
                    system("cls");
                    break;
				
				case 4:
					system("cls");
					printf("\n\n\t\t\t\t** ADEUS ! **\n\n");
					getch();
					break;
					
				default:
					system("cls");
			    	printf("\n\nOpcao Invalida\n\n");
					break;	
															
			}
			}while(m != 4);
		
	
	return 0;
}


int cadastrar(struct soft vet_cadastro[TAM], int codigo){
	
	
	if(i_cad > 100)return 0;
	char call;
	do{
			if (i_cad > 0){
			fflush(stdin);
			printf("\nEntre com a Palavra-Chave(Numeros): ");
			scanf("%d", &codigo);
			
		}	vet_cadastro[i_cad].codigo == codigo;
		
			
			fflush(stdin);
			printf("\nNome do SOFTWARE: ");
			gets(vet_cadastro[i_cad].nome);
			fflush(stdin);
			printf("Versao: ");
			scanf("%f", &vet_cadastro[i_cad].versao);
			fflush(stdin);
			printf("Ano: ");
			scanf("%d", &vet_cadastro[i_cad].ano);
			fflush(stdin);
			printf("Funcionalidade: ");
			gets(vet_cadastro[i_cad].function);
			fflush(stdin);
			printf("Tamanho: ");
			gets(vet_cadastro[i_cad].tam);
			fflush(stdin);

			i_cad++;
			

		printf("\nDeseja continuar cadastrando ? [s] - sim / [n] - nao :  ");
		scanf("%c", &call);
		system("cls");
		fflush(stdin);


	}while (call == 's' && call != 'n');
	}

void consult(struct soft vet_cadastro[TAM]){
	
	int codigo;
	int i = 0;
	
	printf("\nEntre com a Palavra-Chave(Numeros): ");
	scanf("%d",&codigo);
	
	for ( i = 0; i < TAM; i++ )
    {
        if (vet_cadastro[i].codigo == codigo)
        {
                  
                printf("\n Nome: %s", vet_cadastro[i].nome);
                printf("\n Versao: %f", vet_cadastro[i].versao);
                printf("\n Ano: %d", vet_cadastro[i].ano);
                printf("\n Funcionalidade: %s", vet_cadastro[i].function);
                printf("\n Tamanho: %s", vet_cadastro[i].tam);
      return;  
	        	
	}else
{
	printf("\n\n\t    Palavra-Chave nao cadastrada !");
	return;
}
}
}

int alterar(struct soft vet_cadastro[TAM]){
	
	int codigo;
	int cont;
	
	if(cont > 100)return 0;
	
	
		printf("\nEntre com a Palavra-Chave de cadastro: \n");
        scanf("%d",&codigo);
        
    for(cont=0; cont < 100; cont++){
        
     	if(vet_cadastro[cont].codigo == codigo){		

			fflush(stdin);
			printf("\nNome do SOFTWARE: ");
			gets(vet_cadastro[cont].nome);
			fflush(stdin);
			printf("Versao: ");
			scanf("%f", &vet_cadastro[cont].versao);
			fflush(stdin);
			printf("Ano: ");
			scanf("%d", &vet_cadastro[cont].ano);
			fflush(stdin);
			printf("Funcionalidade: ");
			gets(vet_cadastro[cont].function);
			fflush(stdin);
			printf("Tamanho: ");
			gets(vet_cadastro[cont].tam);
			fflush(stdin);
			
			break;		

	}
	
}

}

int check_cod(int codigo){
	
	int i = 0;
			
	
	for ( i = 0; i < TAM; i++ )
    {
        if (codigo == vet_cadastro[i].codigo)
        	return(0);
        
        else 
        	return(1);
        	
}
}

 

Capturar.JPG

Capturar1.JPG

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

Visitante
Este tópico está impedido de receber novas respostas.

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!