Ir para conteúdo
Fórum Script Brasil

Ozie

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre Ozie

Ozie's Achievements

0

Reputação

  1. Ozie

    Erro em Execução C

    Bom dia galera, eu tava fazendo esse código aqui, e no meio do cadastro, OPÇÃO 1, quando seto o último valor no caso, depois de ler o programa para sua execução.. Não consegui identificar o problema, vou postar o código aqui, alguém saberia dizer o problema ? #include <stdio.h> #include<stdlib.h> #include <string.h> #include <locale.h> #include <string.h> #define MAX 2 #define String 50 // APÓS O CADASTRO DO PRODUTO IMPRIMIR O ID NA TELA PARA O USUÁRIO PODER BUSCAR POSTERIORMENTE. typedef struct { char mes[50]; // Empilhar o Mês, Ex: Validade - Fabricação e Quando expira. char nome[50]; float valorP; char categoria; // (A = Comida, B = Utensílios, C = Bebida) int topo; } p_produto; typedef struct { //fila int id; int primeiro, ultimo; p_produto produto; } registro[MAX]; void iniciapilha(registro *p, int posicao){ (*p)[posicao].produto.topo = -1; } int vazia(p_produto *p){ if (p->topo == -1) return (1); else return (0); } int insere(char elemento[String], registro *p, int posicao){ // String que guarda mes, Fila da Pilha, e a posição. if((*p)[posicao].produto.topo == MAX - 1){ printf(" (!) ERRO: ", "CADASTRO CHEIO!"); return(0); } strcpy((*p)[posicao].produto.mes[++((*p)[posicao].produto.topo)], elemento); return (1); } int iniciaFila(registro *f){ (*f)->primeiro = MAX - 1; (*f)->ultimo = MAX - 1; } int addFila(int id, registro *fila){ // if((*fila)->ultimo == MAX -1){ (*fila)->ultimo = 0; // Que é igual a I == 0 } else ((*fila)->ultimo)++; if((*fila)->ultimo == (*fila)->primeiro){ printf("ERRO: %s\n", "Estouro na Fila!"); exit(1); } (*fila)[(*fila)->ultimo].id = id; return 1; } int buscaFila(int id_param, registro *fila){ int i; for(i=0; i<MAX; i++){ if((*fila)[i].id == id_param){ printf("\nPRODUTO: %s", (*fila)[i].produto.nome); printf("\nPREÇO: %.2f", (*fila)[i].produto.valorP); printf("\nCATEGORIA: %c", (*fila)[i].produto.categoria); printf("\nVALIDADE: %s", (*fila)[i].produto.mes); return 1; } } return 0; } int menu(){ int i = 0, resp, idaux = 0, successInsert; char lerString[50]; registro reg; reg[0].id = 0; int id_consulta; printf("\n\t\tSISTEMA PARA CADASTRO DE 100 PRODUTOS\t\t\n"); do{ printf("\nOPCAO 1 - CADASTRAR PRODUTO \nOPÇÃO 2 - LISTAR ID'S \nOPÇÃO 3 - BUSCAR PRODUTO \nOPÇÃO 4 - SAIR"); printf("\n\nINFORME OPCAO DESEJADA : \n"); scanf("%d",&resp); system("cls"); switch(resp) { case 1: iniciaFila(&reg); iniciapilha(&reg->produto, i); //Pega o topo da pilha pela posição do vetor da fila. printf("\nInserindo Informações :\n"); printf("\nNOME DO PRODUTO :\n"); scanf("%s",reg[i].produto.nome); fflush(stdin); printf("\nPREÇO (R$) :\n"); scanf("%f",&reg[i].produto.valorP); fflush(stdin); printf("\nCATEGORIA (A = Comida, B = Utensílios, C = Bebida):\n"); scanf("%c",&reg[i].produto.categoria); fflush(stdin); printf("\n Validade (Ex: 01/08/2018):\n"); scanf("%s",lerString); //Setar esse valor chamando a função Insere() na Pilha. fflush(stdin); successInsert = insere(lerString, &reg->produto, i); if(successInsert){ idaux++; //setar uma função da Fila pra rodar essa rotina. addFila(idaux, &reg); printf("\nID DO PRODUTO CADASTRADO : %d", idaux); // *OBS: mudar o íncide de forma parametrizada i++; printf("Pressione qualquer tecla para voltar ao Menu..."); getch(); system("cls"); break; } else{ strcpy(reg[i].produto.nome, ""); reg[i].produto.valorP = 0.0; reg[i].produto.categoria = ""; printf("\nInserção com excesso de espaço!\n"); printf("Voltando para Menu.\n"); getch(); break; } case 2: printf("\tID | PRODUTO\n"); for(i=0;i<MAX;i++){ printf("%d", reg[i].id); printf(" | "); printf("%s", reg[i].produto.nome); printf("\n"); } printf("\n\n"); printf("Pressione qualquer tecla para voltar ao Menu..."); getch(); system("cls"); break; case 3: printf("\nBUSCANDO DADOS . . . . . . .\n"); printf("\n\nINFORME O ID DO PRODUTO :\n"); scanf("%d", &id_consulta); if(buscaFila(id_consulta, &reg)){ //setar função p fazer essa busca na fila. Em que trata se existe ou não ID. buscaFila(id_consulta, &reg); } printf("\n\nMES não CONSTA NO REGISTRO !\n"); printf("Aperte qualquer tecla para voltar pro Menu..."); getch(); system("cls"); break; case 4: printf("\t\t**** Programa Encerrado! Volte sempre. ****"); printf("\n\n"); break; default: printf("Opcao Invalida. Tente novamente"); return menu(); } }while(resp != 4); } int main(){ setlocale(LC_ALL, "Portuguese"); menu(); return 0; }
  2. Ozie

    Veriricar código

    Fiz esse código aqui, porém se eu cadastrar o mesmo código ele não informa código já existente. Não consigo identificar o problema, pois a função já foi criada... #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 cod); 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 opcoes 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"); printf("\nEntre com a Palavra-Chave(Numeros): "); scanf("%d", &codigo); retorno = check_cod(codigo); if ( retorno == 1 ){ cadastrar(vet_cadastro,codigo); system("cls"); }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){ int retorno; if(i_cad > 100)return 0; char call; // do{ 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] - não : "); 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 não 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 cod){ int i = 0; for ( i = 0; i < TAM; i++ ) { if (vet_cadastro[i].codigo == cod) return 0; } return 1; }
×
×
  • Criar Novo...