Ir ao conteúdo
  • Cadastre-se

Thiago72

Membro Pleno
  • Posts

    21
  • Cadastrado em

  • Última visita

Reputação

0
  1. Bom dia programadores. Tenho um codigo aqui que coleta 10 cadastros, mas preciso passar esses cadastros por parametro para uma função onde irá conter a regra de negocio. Deve ser feita a ordenação, e depois devolvido na tela já na ordem numerica. A parte do cadastro eu já fiz, porém não sei como passar por parametro e nem fazer a regra de negocio. /*ATPS Prof Salgado*/#include <stdio.h>#include <stdlib.h>#include <stdbool.h>typedef struct{ char nome[40]; char cpf[11]; char idade[3]; int numero_cadastro;}cadastro;int cont;//Variavel contador.cadastro cad[10]; //A struct cad1 só pode receber até 10 cadastros./*Função que recebe os valores de cada variavel.*/void menu_cadastro(){ for (cont=0 ; cont<=9 ; cont++) { cad[cont].numero_cadastro = (cont+1); printf ("\nCadastro %d\n", cad[cont].numero_cadastro); printf ("\nNome: "); gets(cad[cont].nome); fflush(stdin); printf ("\nIdade: "); gets(cad[cont].idade); fflush(stdin); printf ("\nCPF: "); gets (cad[cont].cpf); fflush(stdin); system ("cls"); printf ("\n Cadastro efetuado com sucesso!\n"); getchar(); system ("cls"); } printf ("\nNao e possivel acrescentar mais cadastros.\n\n");}main(){ menu_cadastro(); system ("Pause");}
  2. Thiago72

    Erro misterioso

    Alguém pra me dar uma força?
  3. Thiago72

    Erro misterioso

    Ed, entendi, coloquei como char, realmente não fazia sentido deixar como int. Preciso mais uma vez da ajuda de você, o exercicio pede para eu mostrar todos os cadastros em ordem de cadastro, no meu programa ele ja cadastra dando o codigo do cliente em ordem (1.. 2.. 3..) caso eu escolhesse o código ( 7..2..9..18..) como faria para imprimir na ordem do menor para o maior? Segue como está o meu código por enquanto. /*ATPS Prof Salgado*/#include <stdio.h>#include <stdlib.h>#include <stdbool.h>typedef struct{ char nome[40]; char cpf[11]; char idade[3]; int numero_cadastro;}cadastro;int cont;//Variavel contador.cadastro cad[10]; //A struct cad1 só pode receber até 10 cadastros./*Função que recebe os valores de cada variavel.*/void menu_cadastro(){ for (cont=0 ; cont<=9 ; cont++) { cad[cont].numero_cadastro = (cont+1); printf ("\nCadastro %d\n", cad[cont].numero_cadastro); printf ("\nNome: "); gets(cad[cont].nome); fflush(stdin); printf ("\nIdade: "); gets(cad[cont].idade); fflush(stdin); printf ("\nCPF: "); gets (cad[cont].cpf); fflush(stdin); system ("cls"); printf ("\n Cadastro efetuado com sucesso!\n"); getchar(); system ("cls"); } printf ("\nNao e possivel acrescentar mais cadastros.\n\n");}main(){ menu_cadastro(); system ("Pause");}
  4. Thiago72

    Erro misterioso

    Show! Isso eu não tinha aprendido. usei o Gets e deu certo, se eu quisesse usar uma variavel int para guardar o cpf como ficaria a linha do meu scanf? Esse: scanf ("%d", cad[cont].idade); Ficaria assim? scanf ("%d\0", cad[cont].idade);
  5. Thiago72

    Erro misterioso

    Ed, sua observação foi essencial para eu achar o erro. Não havia comunicação entre a struct e a função, dei o apelido da typedef struct de cadastro, na sequencia dei o apelido de "cad". Deu certo! Agora ele não está conseguindo ler o CPF não entendi, se puder tente rodar o codigo abaixo. Muito obrigado amigo! /*ATPS Prof Salgado*/#include <stdio.h>#include <stdlib.h>#include <stdbool.h>typedef struct{ char nome[40]; int idade; char cpf[11];}cadastro; int cont;//Variavel contador.cadastro cad[10]; //A struct cad1 só pode receber até 10 cadastros./*Função que recebe os valores de cada variavel.*/void menu_cadastro(){ printf ("\n\n"); if (cont == 10 || cont > 10) //se cont igual a 10, sai do programa, maximo de cadastro 10... (0,1,2,3,4,5,6,7,8,9) { printf("Nao e possivel cadastrar mais clientes!\n"); return; } else { printf ("\nNome: "); gets(cad[cont].nome); fflush(stdin); printf ("\nIdade: "); scanf ("%d", cad[cont].idade); fflush(stdin); printf ("\nCPF: "); gets (cad[cont].cpf); fflush(stdin); getchar(); }}main(){ menu_cadastro(); system ("Pause");}
  6. Thiago72

    Erro misterioso

    Ed, nesse caso quis declarar que a estruct cadastro só pode armazenar 10 cadastros. Tenho outros código assim e não deu esse problema. Se puder me dar uma luz do que devo fazer.. Valeu aí mano!
  7. Gui, me ajude nesse codigo. Não consegui ver o que estou errando, o erro eu não conheço. /*ATPS Prof Salgado*/#include <stdio.h>#include <stdlib.h>#include <stdbool.h>struct cadastro{ char nome[40]; int idade; char cpf[11];}; int cont;//Variavel contador.cadastro[10]; //A struct cad1 só pode receber até 10 cadastros./*Função que recebe os valores de cada variavel.*/void menu_cadastro(){ printf ("\n\n"); if (cont == 10 || cont > 10) //se cont igual a 10, sai do programa, maximo de cadastro 10... (0,1,2,3,4,5,6,7,8,9) { printf("Nao e possivel cadastrar mais clientes!\n"); return; } else { printf ("\nNome: "); gets(cadastro[cont].nome); fflush(stdin); printf ("\n Idade: "); scanf ("%d", cadastro[cont].idade); fflush(stdin); printf ("\nCPF: "); gets (cadastro[cont].cpf); fflush(stdin); }}main(){ menu_cadastro(); system ("Pause");}
  8. Thiago72

    Erro misterioso

    Fala aí meus amigos. Podem me ajudar em um exercício, logo no começo já to batendo cabeça. O exercício pede o seguinte: 1º Desenvolver uma aplicação onde receba uma estrutura de dados que são eles: ::nome ::idade ::cpf recerebr 10 registros completos e passar por parametro para uma função onde ira conter a regra de negocio. Será feito a ordenação e apos devolvera os numeros para a chamada ja ordenados. Até o momento meu código está assim: /*ATPS Prof Salgado*/#include <stdio.h>#include <stdlib.h>#include <stdbool.h>typedef struct cadastro{ char nome[40]; int idade; char cpf[11];}cad1;int cont=0; //Variavel contador.cadastro [10]; //A struct cadastro só pode receber até 10 cadastros./*Função que recebe os valores de cada variavel.*/void menu_cadastro(){ printf ("\n\n"); if (cont == 10 || cont > 10) //se cont igual a 10, sai do programa, maximo de cadastro 10... (0,1,2,3,4,5,6,7,8,9) { printf("Nao e possivel cadastrar mais clientes!\n"); return; } else { printf ("\nNome: "); gets(cadastro[cont].nome); fflush(stdin); printf ("\n Idade: "); scanf ("%s", cadastro[cont].idade); fflush(stdin); printf ("\nCPF: "); gets (cadastro[cont].cpf); fflush(stdin); }main(){ menu_cadastro(); system ("Pause");} O programa para no 1º gets, e daessa mensagem: "error: request for member 'nome'in a something not a structure or union Que diabo é isso? Sempre usei o gets assim.. Quem puder ajudar agradeço. Obrigado! Caros, tirei o "apelido" da struct e deu certo, porém deu um erro na declaração do "cont". Putz, to muito enferrujado de C.. se puderem me dar uma luz.. valeu mesmo.
  9. Boa tarde Sr's. Estou com uma dificuldade em um exercício simples (não pra mim). Nesse exercicio devo comparar duas variaveis inteiras e mostrar qual é a maior, mais tem que usar o return. Segue o código, eu estou aberto a dicas e sugestoes que possam melhorar meus codigos. Logo depois de inserir o 1 número ele da erro e fecha o compilador (DEV C++). #include <stdio.h>#include <stdlib.h>int max (int a, int {if (a>{ return a;} else{ return b;}}int main (){int num1, num2;int result;printf ("Digite o 1 numero");scanf ("%d", num1);printf ("Digite o 2 numero");scanf ("%d", num2);result = max(num1, num2);printf (" o maior n eh : %d ", result);system ("pause");} Obrigado! Galera, disfarça esqueci o & do scanf. Vivendo e aprendendo! Obrigado!
  10. @slarkforgo É eu percebi rs, me desculpe. Vou pesquisar sobre lista encadeada. Mano muito obrigado pela sua ajuda, estou dando este tópico como resolvido, pois ele ja está grande demais rs. Outras dúvidas estarei criando outro tópico. Muito obrigdado!!! Att,
  11. Amigo @slackforgo, Lá vai eu pedir mais uma de suas boa orientações. Estou tentando incrementar meu programa com a função excluir, criei então a Função void Excluir (int ID); //Função excluir Chamo a função dentro da função de consultar: /*Funcao consultar(), consulta cliente pelo id*/void consultar(){ int j, id; char sel, sel2; system ("cls"); printf("\n\n"); printf("Digite ID do cliente: "); scanf("%d", &id); for (j=0; j<=i; j++) { if (cad[j].id == id) //procura id do cliente { if (cad[j].excluido != 1){ printf("\nId:%d \t\nNome: %s \t\nEndereco: %s \t\nTelefone: %s \t\nCPF: %s \t\n\n Status: %s \n\n", cad[j].id, cad[j].nome, cad[j].end, cad[j].tel, cad[j].cpf, cad[j].ai); //imprime na tela os valores do cliente, consultado pelo id e sai do laço printf("E - Editar\n D - Deletar\n"); sel=getche(); if (sel=='e'||sel=='E'); { Editar(j); } if (sel=='d'||sel=='D'); { Excluir(j); } break; } if (cad[j].excluido == 1); { system("cls"); printf("Esse cadastro ja foi excluido!!"); break; } } } getche(); //pause} E então a estrutura da função: void Excluir(int ID) //Função para editar clientes{ char sn; while(true) { if(cad[ID].excluido!= 1){ system("cls"); printf("\nId:%d \t\n 1 - Nome: %s \t\n 2 - Endereco: %s \t\n 3 - Telefone: %s \t\n 4 - CPF: %s \t\n 5 - Status %s \t\n 9 - Sair\n\n", cad[ID].id, cad[ID].nome, cad[ID].end, cad[ID].tel, cad[ID].cpf, cad[ID].ai); printf("Tem certeza que deseja excluir? (s/n)"); printf(">"); sn=getche(); if(sn=='s'||sn=='S') { cad[ID].excluido=1; system("cls"); printf("\nExcluido com sucesso!"); break; } else if(sn=='n'||sn=='N') { } } }} Agora o problema que acontece é o seguinte. Está excluindo normal, porém quando consulto e aperto "D" para excluir ele antes vai para a função "Editar", sem eu apertar "E". Sabe me dizer o que estou fazendo de errado? Segue o meu codigo completo caso queira compilar. #include <stdio.h>#include <stdlib.h>#include <stdbool.h>/* struct para cadastro de clientes */typedef struct cadastro{ int id; char nome[50]; char end[50]; char tel[11]; char cpf[11]; char ai[1]; int excluido;}cadastro;/*struct para dacastro de fornecedores */typedef struct cadastrof{ int id; char nome[50]; char end[50]; char tel[11]; char cnpj[20]; char ai[1];}cadastrof;/*struct para dacastro de produto */typedef struct cadastrop{ int cod; char produto[20]; char marca[30]; char modelo[30]; char ano[4]; char estoque[1];}cadastrop;//variaveis globaisint i = 0, i2 = 0, i3 = 0; //contcadastro cad[10]; //cadastrar maximo 10 clientescadastrof cadf[10]; //cadastrar maximo 10 funcionariocadastrop cadp[10]; //cadastrar maximo 10 funcionariovoid Editar(int EditID); //editar clientesvoid EditarF(int EditIDF); //editar fornecedoresvoid EditarP(int EditIDP); //editar produtosvoid Excluir (int ID); //Função excluir/* Funcao menu(), retorna um char com a opcao escolhida */char menu(){ system("cls"); printf("\n((((___ Menu ___))))\n"); printf("\n\n1) Clientes\n"); printf("2) Fornecedores\n"); printf("3) Produtos\n"); printf("\n9) Sair\n"); printf("\n\n> "); return toupper(getche());}/*Funcao cadastrar(), cadastra cliente */void cadastrar(){ printf("\n\n"); if (i == 10 || i >10) //se i igual a 10, sai do programa, maximo de cadastro 10... (0,1,2,3,4,5,6,7,8,9) { printf("Nao e possivel cadastrar mais clientes!\n"); return; } else { cad[i].id = (i+1); printf("Id: %d\n", cad[i].id); printf("Nome: "); fflush(stdin); scanf("%s", cad[i].nome); printf("Endereco: "); fflush(stdin); gets(cad[i].end); printf("Tel: "); fflush(stdin); gets(cad[i].tel); printf("CPF: "); fflush(stdin); gets(cad[i].cpf); printf("\n\n Digite \"A\" para ATIVO ou \"I\" para INATIVO: "); fflush(stdin); gets(cad[i].ai); printf ("\n\nCliente cadastrado com sucesso!"); getchar (); } i++; //contador}/*Funcao consultar(), consulta cliente pelo id*/void consultar(){ int j, id; char sel, sel2; system ("cls"); printf("\n\n"); printf("Digite ID do cliente: "); scanf("%d", &id); for (j=0; j<=i; j++) { if (cad[j].id == id) //procura id do cliente { if (cad[j].excluido != 1){ printf("\nId:%d \t\nNome: %s \t\nEndereco: %s \t\nTelefone: %s \t\nCPF: %s \t\n\n Status: %s \n\n", cad[j].id, cad[j].nome, cad[j].end, cad[j].tel, cad[j].cpf, cad[j].ai); //imprime na tela os valores do cliente, consultado pelo id e sai do laço printf("E - Editar\n D - Deletar\n"); sel=getche(); if (sel=='e'||sel=='E'); { Editar(j); } if (sel=='d'||sel=='D'); { Excluir(j); } break; } if (cad[j].excluido == 1); { system("cls"); printf("Esse cadastro ja foi excluido!!"); break; } } } getche(); //pause}/*Funcao cadastrarf(), cadastra fornecedor */void cadastrarf(){ printf("\n\n"); if (i2 == 10 || i2 > 10) //se i2 igual a 10, sai do programa, maximo de cadastro 10... (0,1,2,3,4,5,6,7,8,9) { printf("Nao e possivel adicionar mais fornecedores!\n"); return; } else { cadf[i2].id = (i2+1); printf("Id: %d\n", cadf[i2].id); printf("Nome: "); fflush(stdin); scanf("%s", cadf[i2].nome); printf("Endereco: "); fflush(stdin); gets(cadf[i2].end); printf("Tel: "); fflush(stdin); gets(cadf[i2].tel); printf("CNPJ: "); fflush(stdin); gets(cadf[i].cnpj); printf("\n\n Digite \"A\" para ATIVO ou \"I\" para INATIVO: "); fflush(stdin); gets(cad[i].ai); printf ("\n\nFornecedor cadastrado com sucesso!"); getchar (); } i2++; //contador}/*Funcao consultarf(), consulta fornecedor pelo id*/void consultarf(){ int j, id; char sel; printf("\n"); printf("Digite ID do fornecedor: "); scanf("%d", &id); for (j=0; j<=i2; j++) { if (cadf[j].id == id) //procura pelo id do fornecedor { printf("\nID:%d \t \nNome: %s \t \nEnedereco: %s \t \nTelefone: %s \t\nCNPJ: %s \t\n\nStatus: %s \n\n", cadf[j].id, cadf[j].nome, cadf[j].end, cadf[j].tel, cadf[j].cnpj, cadf[j].ai); //imprime na tela os valores do fornecedor, consultado pelo id e sai do laço. printf("\nE - Editar\n"); sel=getche(); if(sel=='e'); { EditarF(j); } break; } } getche(); //pause}/*Funcao cadastrarp(), cadastra produto */void cadastrarp(){ printf("\n\n"); if (i3 == 10 || i3 > 10) //se i3 igual a 10, sai do programa, maximo de cadastro 10... (0,1,2,3,4,5,6,7,8,9) { printf("Nao e possivel cadastrar mais produtos!\n"); return; } else { cadp[i3].cod = (i3+1); printf("Codigo: %d\n", cadp[i3].cod); printf("Produto: "); fflush(stdin); scanf("%s", cadp[i3].produto); printf("Marca: "); fflush(stdin); gets(cadp[i3].marca); printf("Modelo: "); fflush(stdin); gets(cadp[i3].modelo); printf("Ano: "); fflush(stdin); gets(cadp[i].ano); printf("\n\n Digite \"S\" se houver Estoque ou \"N\" caso nao houver Estoque: "); fflush(stdin); gets(cadp[i].estoque); printf ("\n\nProduto cadastrado com sucesso!"); getchar (); } i3++; //contador}/*Funcao consultarp(), consulta produto pelo id*/void consultarp(){ int j, id; char sel; printf("\n"); printf("Digite CODIGO do produto: "); scanf("%d", &id); for (j=0; j<=i3; j++) { if (cadp[j].cod == id) //procura pelo id do fornecedor { printf("\nCodigo:%d \t \nProduto:%s \t \nMarca:%s \t \nModelo:%s \t\nAno: %s \t\n\nPossui Estoque? %s \n\n", cadp[j].cod, cadp[j].produto, cadp[j].marca, cadp[j].modelo, cadp[j].ano, cadp[j].estoque); //imprime na tela os valores do fornecedor, consultado pelo id e sai do laço. printf("\nE - Editar\nD - Deletar\n"); sel=getche(); if(sel=='e'); { EditarP(j); } if(sel=='d'); { Excluir(j); } break; } } getche(); //pause}/*funcao cliente(), menu com as funcoes */void cliente(){ char op; do { system("cls"); printf("\n((((___ Clientes ___))))\n"); printf("\n\n1) Cadastrar cliente\n"); printf("2) Consultar cliente\n"); printf("\n9) Sair\n"); printf("\n\n> "); op = toupper(getche()); system("cls"); printf("\n((((___ Cadastrar Novo Cliente ___))))\n"); switch(op) { case '1': cadastrar(); break; case '2': consultar(); break; } }while (op != '9');}/*funcao funcionario, menu com as funcoes */void funcionario(){ char op; do { system("cls"); printf("\n((((___ Fornecedores ___))))\n"); printf("\n\n1) Cadastrar fornecedor\n"); printf("2) Consultar fornecedor\n"); printf("\n9) Sair\n"); printf("\n\n> "); op = toupper(getche()); system("cls"); printf("\n((((___ Cadastrar Novo Fornecedor ___))))\n"); switch(op) { case '1': cadastrarf(); break; case '2': consultarf(); break; } }while (op != '9');}/*funcao produto(), menu com as funcoes */void produto(){ char op; do { system("cls"); printf("\n((((___ Produtos___))))\n"); printf("\n\n1) Cadastrar produto\n"); printf("2) Consultar produto\n"); printf("\n9) Sair\n"); printf("\n\n> "); op = toupper(getche()); system("cls"); printf("\n((((___ Cadastrar Novo Produto ___))))\n"); switch(op) { case '1': cadastrarp(); break; case '2': consultarp(); break; } }while (op != '9');}/*Funcao main */int main(){ char op; do { op = menu(); //chama a funcao menu retornando um char armazenando na variavel op switch(op) { case '1': cliente(); break; //funcao menu cliente case '2': funcionario(); break; //funcao menu funcionario case '3': produto(); break;//funcao menu produto } } while (op != '9'); //9 sai do menu printf("\n\n"); printf("(((((((__________)))))"); printf("\n\n"); return 0;}//Fim do mainvoid Editar(int EditID) //Função para editar clientes{ char selA; while(true) { system("cls"); printf("\nId:%d \t\n 1 - Nome: %s \t\n 2 - Endereco: %s \t\n 3 - Telefone: %s \t\n 4 - CPF: %s \t\n 5 - Status %s \t\n 9 - Sair\n\n", cad[EditID].id, cad[EditID].nome, cad[EditID].end, cad[EditID].tel, cad[EditID].cpf, cad[EditID].ai); printf("Digite o numero da opcao que deseja editar:"); printf(">"); selA=getche(); if(selA=='1') { printf("\n\nNovo Nome: "); fflush(stdin); gets(cad[EditID].nome); } else if(selA=='2') { printf("\n\nEditar Endereço: "); fflush(stdin); gets(cad[EditID].end); } else if(selA=='3') { printf("\n\nEditar Telefone: "); fflush(stdin); gets(cad[EditID].tel); } else if(selA=='4') { printf("\n\nEditar CPF: "); fflush(stdin); gets(cad[EditID].cpf); } else if(selA=='5') { printf("\n\nEditar Status: "); fflush(stdin); gets(cad[EditID].ai); } else if(selA=='9') { return; } }}void EditarF(int EditIDF) //Função para editar fornecedores{ char selA; while(true) { system("cls"); printf("\nId:%d \t\n 1 - Nome: %s \t\n 2 - Endereco: %s \t\n 3 - Telefone: %s \t\n 4 - CNPJ: %s \t\n 5 - Status: %s \t\n9 - Sair\n\n", cadf[EditIDF].id, cadf[EditIDF].nome, cadf[EditIDF].end, cadf[EditIDF].tel, cadf[EditIDF].cnpj, cadf[EditIDF].ai); printf(">"); selA=getche(); if(selA=='1') { printf("\n\nEditar Nome: "); fflush(stdin); gets(cadf[EditIDF].nome); } else if(selA=='2') { printf("\n\nEditar Endereço: "); fflush(stdin); gets(cadf[EditIDF].end); } else if(selA=='3') { printf("\n\nEditar Telefone: "); fflush(stdin); gets(cadf[EditIDF].tel); } else if(selA=='4') { printf("\n\nEditar CNPJ: "); fflush(stdin); gets(cadf[EditIDF].cnpj); } else if(selA=='5') { printf("\n\nEditar Status: "); fflush(stdin); gets(cadf[EditIDF].ai); } else if(selA=='9') { return; } }}void EditarP(int EditIDP) //Função para editar produtos{ char selA; while(true) { system("cls"); printf("\nId:%d \t\n\n 1 - Produto: %s \t\n 2 - Marca: %s \t\n 3 - Modelo: %s \t\n 4 - Ano: %s \t\n 9 - Sair\n\n", cadp[EditIDP].cod, cadp[EditIDP].produto, cadp[EditIDP].marca, cadp[EditIDP].modelo,cadp[EditIDP].ano, cadp[EditIDP].estoque); printf(">"); selA=getche(); if(selA=='1') { printf("\n\nEditar Produto: "); fflush(stdin); gets(cadp[EditIDP].produto); } else if(selA=='2') { printf("\n\nEditar Endereço: "); fflush(stdin); gets(cadp[EditIDP].marca); } else if(selA=='3') { printf("\n\nEditar Telefone: "); fflush(stdin); gets(cadp[EditIDP].modelo); } else if(selA=='4') { printf("\n\nEditar Ano: "); fflush(stdin); gets(cadp[EditIDP].ano); } else if(selA=='5') { printf("\n\nEditar Status de Estoque: "); fflush(stdin); gets(cadp[EditIDP].estoque); } else if(selA=='9') { return; } }}void Excluir(int ID) //Função para editar clientes{ char sn; while(true) { if(cad[ID].excluido!= 1){ system("cls"); printf("\nId:%d \t\n 1 - Nome: %s \t\n 2 - Endereco: %s \t\n 3 - Telefone: %s \t\n 4 - CPF: %s \t\n 5 - Status %s \t\n 9 - Sair\n\n", cad[ID].id, cad[ID].nome, cad[ID].end, cad[ID].tel, cad[ID].cpf, cad[ID].ai); printf("Tem certeza que deseja excluir? (s/n)"); printf(">"); sn=getche(); if(sn=='s'||sn=='S') { cad[ID].excluido=1; system("cls"); printf("\nExcluido com sucesso!"); break; } else if(sn=='n'||sn=='N') { } } }}
  12. ráa Garoto!! É isso mesmo!!! Muito obrigado @slackforgo!! Sua ajuda foi impressindivel!
  13. É meu amigo acho que esta saíndo, ja evolui bastante do entendimento e no programa. Agora estou tentando editar um cadastro, mas não esta salvando as informações emcima das informaçoes descritas. Declarei a função: void Editar(int EditID);void Editar(int EditID); Fiz um "if" dentro da função de consultar o cadastro, e criei a variavél char sel (de seleção). E se apertado o 'e' ele chama a função Editar(id) void consultar(){ int j, id; char sel; printf("\n\n"); printf("Digite ID do cliente: "); scanf("%d", &id); for (j=0; j<=i; j++) { if (cad[j].id == id) //procura id do cliente { printf("\nId:%d \t\nNome:%s \t\nEndereco:%s \t\nTelefone:%s\n\n", cad[j].id, cad[j].nome, cad[j].end, cad[j].tel); //imprime na tela os valores do cliente, consultado pelo id e sai do laço printf("E - Editar\n"); sel=getche(); if(sel=='e'); { Editar(id); } break; } } getche(); //pause} Aí depois do main existe a estrutura da função "void Editar (int EditID)" void Editar(int EditID){ char selA; while(true) { system("cls"); printf("\nId:%d \t\n 1 - Nome:%s \t\n 2 - Endereco:%s \t\n 3 - Telefone:%s\n\n4 - Sair\n\n", cad[EditID].id, cad[EditID].nome, cad[EditID].end, cad[EditID].tel); selA=getche(); if(selA=='1') { printf("Novo Nome: "); fflush(stdin); gets(cad[EditID].nome); } else if(selA=='2') { printf("Novo Endereço: "); fflush(stdin); gets(cad[EditID].end); } else if(selA=='3') { printf("Novo Telefone: "); fflush(stdin); gets(cad[EditID].tel); } else if(selA=='4') { return; } }} Da pra reparar que quando muda pra tela de editar, o ID aparede como 0, sendo que o cadastro ja começa do 1. Segue o código completo de como está meu programa: Muito obrigado pela ajuda @slackforgo #include <stdio.h>#include <stdlib.h>#include <stdbool.h>/* struct para cadastro de clientes */typedef struct cadastro{ int id; char nome[20]; char end[50]; char tel[15];}cadastro;/*struct para dacastro de fornecedores */typedef struct cadastrof{ int id; char nome[20]; char end[50]; char tel[15];}cadastrof;/*struct para dacastro de produto */typedef struct cadastrop{ int cod; char produto[20]; char marca[30]; char modelo[30];}cadastrop;//variaveis globaisint i = 0, i2 = 0, i3 = 0; //contcadastro cad[10]; //cadastrar maximo 10 clientescadastrof cadf[10]; //cadastrar maximo 10 funcionariocadastrop cadp[10]; //cadastrar maximo 10 funcionariovoid Editar(int EditID); //editar clientesvoid Editar(int EditIDF); //editar fornecedoresvoid Editar(int EditIDP); //editar produtos/* Funcao menu(), retorna um char com a opcao escolhida */char menu(){ system("cls"); printf("\n((((___ Menu ___))))\n"); printf("\n\n1) Clientes\n"); printf("2) Fornecedores\n"); printf("3) Produtos\n"); printf("\n9) Sair\n"); printf("\n\n> "); return toupper(getche());}/*Funcao cadastrar(), cadastra cliente */void cadastrar(){ printf("\n\n"); if (i == 10 || i >10) //se i igual a 10, sai do programa, maximo de cadastro 10... (0,1,2,3,4,5,6,7,8,9) { printf("Nao e possivel cadastrar mais clientes!\n"); return; } else { cad[i].id = (i+1); printf("Id: %d\n", cad[i].id); printf("Nome: "); fflush(stdin); scanf("%s", cad[i].nome); printf("Endereco: "); fflush(stdin); gets(cad[i].end); printf("Tel: "); fflush(stdin); gets(cad[i].tel); } i++; //contador}/*Funcao consultar(), consulta cliente pelo id*/void consultar(){ int j, id; char sel; printf("\n\n"); printf("Digite ID do cliente: "); scanf("%d", &id); for (j=0; j<=i; j++) { if (cad[j].id == id) //procura id do cliente { printf("\nId:%d \t\nNome:%s \t\nEndereco:%s \t\nTelefone:%s\n\n", cad[j].id, cad[j].nome, cad[j].end, cad[j].tel); //imprime na tela os valores do cliente, consultado pelo id e sai do laço printf("E - Editar\n"); sel=getche(); if(sel=='e'); { Editar(id); } break; } } getche(); //pause}/*Funcao cadastrarf(), cadastra fornecedor */void cadastrarf(){ printf("\n\n"); if (i2 == 10 || i2 > 10) //se i2 igual a 10, sai do programa, maximo de cadastro 10... (0,1,2,3,4,5,6,7,8,9) { printf("Nao e possivel adicionar mais fornecedores!\n"); return; } else { cadf[i2].id = (i2+1); printf("Id: %d\n", cadf[i2].id); printf("Nome: "); fflush(stdin); scanf("%s", cadf[i2].nome); printf("Endereco: "); fflush(stdin); gets(cadf[i2].end); printf("Tel: "); fflush(stdin); gets(cadf[i2].tel); } i2++; //contador}/*Funcao consultarf(), consulta fornecedor pelo id*/void consultarf(){ int j, id; char sel; printf("\n"); printf("Digite ID do fornecedor: "); scanf("%d", &id); for (j=0; j<=i2; j++) { if (cadf[j].id == id) //procura pelo id do fornecedor { printf("\nID:%d \t \nNome:%s \t \nEnedereco:%s \t \nTelefone:%s\n", cadf[j].id, cadf[j].nome, cadf[j].end, cadf[j].tel); //imprime na tela os valores do fornecedor, consultado pelo id e sai do laço. printf("E - Editar\n"); sel=getche(); if(sel=='e'); { Editar(id); } break; } } getche(); //pause}/*Funcao cadastrarp(), cadastra produto */void cadastrarp(){ printf("\n\n"); if (i3 == 10 || i3 > 10) //se i3 igual a 10, sai do programa, maximo de cadastro 10... (0,1,2,3,4,5,6,7,8,9) { printf("Nao e possivel cadastrar mais produtos!\n"); return; } else { cadp[i3].cod = (i3+1); printf("Codigo: %d\n", cadp[i3].cod); printf("Produto: "); fflush(stdin); scanf("%s", cadp[i3].produto); printf("Marca: "); fflush(stdin); gets(cadp[i3].marca); printf("Modelo: "); fflush(stdin); gets(cadp[i3].modelo); } i3++; //contador}/*Funcao consultarp(), consulta produto pelo id*/void consultarp(){ int j, id; printf("\n"); printf("Digite CODIGO do produto: "); scanf("%d", &id); for (j=0; j<=i3; j++) { if (cadp[j].cod == id) //procura pelo id do fornecedor { printf("\nCodigo:%d \t \nProduto:%s \t \nMarca:%s \t \nModelo:%s\n", cadp[j].cod, cadp[j].produto, cadp[j].marca, cadp[j].modelo); //imprime na tela os valores do fornecedor, consultado pelo id e sai do laço. break; } } getche(); //pause}/*funcao cliente(), menu com as funcoes */void cliente(){ char op; do { system("cls"); printf("\n((((___ Clientes ___))))\n"); printf("\n\n1) Cadastrar cliente\n"); printf("2) Consultar cliente\n"); printf("\n9) Sair\n"); printf("\n\n> "); op = toupper(getche()); system("cls"); printf("((((___ Cadastrar Novo Cliente ___))))\n"); switch(op) { case '1': cadastrar(); break; case '2': consultar(); break; } }while (op != '9');}/*funcao funcionario, menu com as funcoes */void funcionario(){ char op; do { system("cls"); printf("((((___ Fornecedores ___))))\n"); printf("1) Cadastrar fornecedor\n"); printf("2) Consultar fornecedor\n"); printf("\n9) Sair\n"); printf("\n\n> "); op = toupper(getche()); switch(op) { case '1': cadastrarf(); break; case '2': consultarf(); break; } }while (op != '9');}/*funcao produto(), menu com as funcoes */void produto(){ char op; do { system("cls"); printf("((((___ Produtos___))))\n"); printf("1) Cadastrar produto\n"); printf("2) Consultar produto\n"); printf("\n9) Sair\n"); printf("\n\n> "); op = toupper(getche()); switch(op) { case '1': cadastrarp(); break; case '2': consultarp(); break; } }while (op != '9');}/*Funcao main */int main(){ char op; do { op = menu(); //chama a funcao menu retornando um char armazenando na variavel op switch(op) { case '1': cliente(); break; //funcao menu cliente case '2': funcionario(); break; //funcao menu funcionario case '3': produto(); break;//funcao menu produto } } while (op != '9'); //9 sai do menu printf("\n\n"); printf("(((((((__________)))))"); printf("\n\n"); return 0;}//Fim do mainvoid Editar(int EditID){ char selA; while(true) { system("cls"); printf("\nId:%d \t\n 1 - Nome:%s \t\n 2 - Endereco:%s \t\n 3 - Telefone:%s\n\n4 - Sair\n\n", cad[EditID].id, cad[EditID].nome, cad[EditID].end, cad[EditID].tel); printf(">"); selA=getche(); if(selA=='1') { printf("\n\nNovo Nome: "); fflush(stdin); gets(cad[EditID].nome); } else if(selA=='2') { printf("\n\nNovo Endereço: "); fflush(stdin); gets(cad[EditID].end); } else if(selA=='3') { printf("\n\nNovo Telefone: "); fflush(stdin); gets(cad[EditID].tel); } else if(selA=='4') { return; } }}
  14. @slackforgo Show! Vou estudar sua estrutura! Pra não usar o gets eu teria que usa o scanf? E pode me orientar a direfença de usar só o "struct" para o "typedef struct" nunca tinha ouvido falar, e não aprendi ainda a usar esse comando. Muito obrigado!
  15. @slackforgo Consegui fazer rodar o programa novamente. Mas meu amigo, ta difícil fazer com que após cadastrar um cliente, fornecedor ou produto, ele retorne ao Menu principal ou ao menu secundario. Não sei fazer essa lógica, pode me ajudar? #include <stdio.h>#include <stdlib.h>struct tipo_cadastro { // Struct de cadastro de clientes. int id; char nome [50]; char end [50]; char tel[15]; int vazio; } registros [10]; struct tipo_fornecedores { // Struct de cadastro de fornecedores. int idf; char nomef [50]; char endf [50]; char telf [15]; int vaziof; } registrosf [10]; struct tipo_produtos { //Struct de cadastro de Produtos. int idp; char nomep [100]; char marcap [50]; char anoprod [4]; int vaziop; } registrosp[10];void cadastrar (int id, int pos);void consultar ();int relatorio ();int verifica_pos ();int verifica_id (int id);int verifica_pos ();void excluir ();void cadastrar_f (int id, int pos);void cadastrar_p (int id, int pos);main () { // Inicio do programa.int i;printf ("Programa Thiago \n\n");printf (" ____Menu____\n\n");printf ("1. Clientes \n2. Fornecedores \n3.Produtos \n\n");printf ("Digite o numero da opcao desejada: ");scanf ("%d", &i);system ("cls");switch(i){ case 1:{ printf("\n\n___Menu Clientes___\n\n"); printf ("1. Cadastrar\n 2. Consultar\n 3. Excluir\n 4. Sair\n\n Opcao: "); // Menu Clientesint op=0, posicao, idaux, retorno; while (op != 5) {scanf ("%d", &op);system ("cls");switch (op) {case 1: { //Cadastrar.posicao = verifica_pos ();if (posicao !=-1) {printf ("\n Entre com o ID do Cliente: ");scanf ("%d", &idaux);fflush (stdin);retorno = verifica_id (idaux);if (retorno ==1)cadastrar (idaux, posicao);elseprintf ("\n ID Já Existente!\n");}elseprintf ("\n Nao e possivel realizar mais cadastros!\n");break;}case 2: { //Consultar.consultar ();break;}case 3: {excluir ();break;}case 4: { printf ("\n Obriagdo por usar este programa, Tchau!\n\n"); getchar (); break;default:printf ("Opcao Invalida!");break;}}} case 2: { //MENU FORNECEDORES !!! printf ("__ _-_Menu Fornecedores_ _-__"); printf ("\n\n1. Novo Fornecedor\n 2. Consultar Fornecedor\n 3. Excluir\n 4. Sair\n\n Opcao: "); // Fornecedoresint opf=0, posicaof, idauxf, retornof; while (opf != 5) {scanf ("%d", &opf);system ("cls");switch (opf) {case 1: { //Cadastrar.posicaof = verifica_pos ();if (posicaof !=-1) {printf ("\n Entre com o ID do Fornecedor: ");scanf ("%d", &idauxf);fflush (stdin);retornof = verifica_id (idauxf);if (retornof ==1)cadastrar_f (idauxf, posicaof);elseprintf ("\n ID Já Existente!\n");}elseprintf ("\n Nao e possivel realizar mais cadastros!\n");break;}case 2: { //Consultar.consultar ();break;}case 3: {excluir ();break;}case 4: { printf ("\n Obriagdo por usar este programa, Tchau!\n\n"); getchar (); break;default:printf ("Opcao Invalida!");break;}}} }} case 3: { //Inicio produto. printf ("__ _-_Menu Produtos_ _-__"); printf ("\n\n 1. Cadastrar Produto \n 2. Busca Produto \n 3. Excluir \n 4. Sair \n\n Opcao: "); // Fornecedoresint opp=0, posicaop, idauxp, retornop; while (opp != 5) {scanf ("%d", &opp);system ("cls");switch (opp) {case 1: { //Cadastrar Produto.posicaop = verifica_pos ();if (posicaop !=-1) {printf ("\n Entre com o CODIGO do Protudo: ");scanf ("%d", &idauxp);fflush (stdin);retornop = verifica_id (idauxp);if (retornop ==1)cadastrar_p (idauxp, posicaop);elseprintf ("\n CODIGO já Existente!\n");}elseprintf ("\n Nao e possivel cadastrar mais produtos!\n");break;}case 2: { //Consultar.consultar ();break;}case 3: {excluir ();break;}case 4: { printf ("\n Obriagdo por usar este programa, Tchau!\n\n"); getchar (); break;default:printf ("Opcao Invalida!");break; // Fim menu Produto break; } }}}}} //Fim do MAIN ()void cadastrar (int id, int pos) { //Função para cadastrar clientes.pos=verifica_pos();registros[pos].id=id;printf ("\n Nome: \n");gets (registros[pos].nome);printf ("\n Endereco: \n");gets (registros[pos].end);printf ("\n Telefone de Contato: \n");gets (registros[pos].tel);registros[pos].vazio=1;printf ("\n Cadastro Realizado com Sucesso!\n\n");getchar ();getchar ();system ("cls");} //Final da função cadastrar clientes.void cadastrar_f (int id, int pos) { //Função para cadastrar fornecedores.pos=verifica_pos();registrosf[pos].idf=id;printf ("\n Nome Fornecedor: \n");gets (registrosf[pos].nomef);printf ("\n Endereco: \n");gets (registrosf[pos].endf);printf ("\n Telefone de Contato (somente numeros): \n");gets (registrosf[pos].telf);registrosf[pos].vaziof=1;printf ("\n Cadastro Realizado com Sucesso!\n\n");getchar ();getchar ();system ("cls");} //Final da função cadastrar fornecedores// Inicio da função para cadastrar produtos.void cadastrar_p (int id, int pos) {pos=verifica_pos();registrosp[pos].idp=id;printf ("\n Nome do Produto: \n");gets (registrosp[pos].nomep);printf ("\n Marca: \n");gets (registrosp[pos].marcap);printf ("\n Ano de fabricação: \n");gets (registrosp[pos].anoprod);registrosp[pos].vaziop=1;printf ("\n Cadastro Realizado com Sucesso!\n\n");getchar ();getchar ();system ("cls");} //Final da função para cadastrar produtos.//Inicio da função consultar clientes.void consultar () {int cont=0, id;printf ("\nEntre com o ID\n");scanf ("%d", &id);system ("cls");while (cont<=13) {if (registros[cont]. id==id) {if (registros[cont]. vazio==1) {printf ("\n Nome: %s \n", registros[cont].nome);printf ("\n Endereco: %s \n", registros[cont].end);printf ("\n Telefone: %d \n", registros[cont].tel);getchar ();printf ("\n");system ("pause");system ("cls");break;}}cont++;if (cont>13)printf ("\n Codigo nao encontrado! \n");}} // Fim da função consultar clientes//Inicio da função consultar fornecedores.void consultarf () {int cont=0, id;printf ("\nEntre com o ID\n");scanf ("%d", &id);system ("cls");while (cont<=13) {if (registrosf[cont]. idf==id) {if (registrosf[cont]. vaziof==1) {printf ("\n Nome: %s \n", registrosf[cont].nomef);printf ("\n Endereco: %s \n", registrosf[cont].endf);printf ("\n Telefone: %d \n", registrosf[cont].telf);getchar ();printf ("\n");system ("pause");system ("cls");break;}}cont++;if (cont>13)printf ("\n Codigo nao encontrado! \n");}} // Fim da função consultar fornecedores//Inicio da função consultar produtos.void consultarp () {int cont=0, id;printf ("\nEntre com o ID\n");scanf ("%d", &id);system ("cls");while (cont<=13) {if (registrosf[cont]. idf==id) {if (registrosf[cont]. vaziof==1) {printf ("\n Nome: %s \n", registrosf[cont].nomef);printf ("\n Endereco: %s \n", registrosf[cont].endf);printf ("\n Telefone: %d \n", registrosf[cont].telf);getchar ();printf ("\n");system ("pause");system ("cls");break;}}cont++;if (cont>13)printf ("\n Codigo nao encontrado! \n");}} // Fim da função consultar produtos.//Função verifica posiçãoint verifica_pos () {int cont = 0;while (cont<=100) {if (registros[cont].vazio==0)return (cont);cont++;}return (-1);}//Função zerar.void zerar () {int cont;for (cont = 0; cont<=13; cont++)registros[cont].vazio = 0;}//Função verifica IDint verifica_id (int id) {int cont = 0;while (cont<=13) {if (registros[cont].id==id)return (0);cont++;}return (1);}//Função excluir.void excluir () {int id, cont=0;char resp;printf ("\n Entre com o codigo que deseja excluir: \n");scanf ("%d", &id);while (cont<=13) {if (registros[cont].id==id)if (registros[cont].vazio==1) {printf ("\n Nome: %s \n", registros[cont].nome);printf ("\n Endereco: %s \n", registros[cont].end);printf ("\n Telefone: %d \n", registros[cont].tel);getchar ();printf ("\n Deseja realmente excluir este cliente? S/N: ");scanf ("%c", &resp);if (resp=='S' ||resp=='s') {registros[cont].vazio=0;printf ("\n Excluído!\n");break;}else if (resp=='N'||resp=='n') {printf ("Exclusao Cancelada!");break;}}cont++;if (cont>13)printf ("\n Codigo nao encontrado!\n");}getchar ();system ("pause");system ("cls");}

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