Ir ao conteúdo
  • Cadastre-se

filipefreitas11

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

3
  1. Acho que entendi... seria o que chamam de lista encadeada? Se não for incomodo demais/chatice minha, poderia dar um exemplo prático?
  2. Entendi, obrigado @devair1010 @arfneto pelas dicas. Me desculpem pela leiguice. Vou tentar reescrever meu código com todas elas. Se não for incomodar muito, vocês sabem alguma forma de'u conseguir imprimir apenas informações específicas? Busca binária, talvez? Por exemplo. Um cliente escolhe as opções porte: MÉDIO && se aceita pets: SIM. Eu quero que liste TODOS os prestadores já cadastrados com essas opções simultâneas. Existe alguma forma?
  3. Gente, sou BASTANTE iniciante em C. Não tenho nem 5 meses de estudo. Estou tentando fazer um sistema que salve os dados e imprima uma lista de acordo com as especificações que o usuario desejar. Porém, quando coloco para salvar, não aparece no sistema o cadastro que foi feito. #include <stdio.h> #include <stdlib.h> #include <locale.h> struct dadosPrestador{ int idade, placa, cpfcnpj, cnh, telefone; char porte, pets; char nome[30]; }prestador[30]; struct dadosCliente{ int idade, cpfcnpj; char nome[30]; }cliente[30]; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// FILE *arqCliente; FILE *arqPrestador; void carregarDados(){ int c,p, clienteAtual, prestadorAtual; struct dadosPrestador prest; struct dadosCliente cli; arqCliente = fopen("arquivoCliente.txt","r"); arqPrestador = fopen("arquivoPrestador.txt","r"); if (arqCliente!=NULL && arqPrestador!=NULL){ p=0; prestadorAtual=0; while (!feof(arqPrestador)){ fscanf(arqPrestador,"CPF/CNPJ: %d Idade: %d Placa: %d CNH: %d Telefone: %d Porte: %s Pets: %s Nome %s\n",&prest.cpfcnpj, &prest.idade, &prest.cnh, &prest.telefone, prest.porte, prest.pets, prest.nome); prestador[p]=prest; p++; } c=0; clienteAtual=0; while (!feof(arqCliente)){ fscanf(arqCliente,"CPF/CNPJ: %d Idade: %d Nome %s\n",&cli.cpfcnpj, &cli.idade, cli.nome); cliente[c]=cli; c++; } fclose(arqCliente); fclose(arqPrestador); } } void salvarDados(){ int c,p, clienteAtual, prestadorAtual; struct dadosPrestador prest; struct dadosCliente cli; arqCliente = fopen("arquivoCliente.txt","w"); arqPrestador = fopen("arquivoPrestador.txt","w"); if (arqCliente==NULL || arqPrestador==NULL){ printf("Problemas ao criar ou recriar o(s) arquivo(s)"); }else{ for(c=0;c<30;c++){ if(cliente[c].cpfcnpj != -1){ fprintf(arqCliente,"CPF/CNPJ: %d Idade: %d Nome %s\n",cliente[c].cpfcnpj, cliente[c].idade, cliente[c].nome); } } for(p=0;p<30;p++){ if(prestador[p].cpfcnpj != -1){ fprintf(arqPrestador,"CPF/CNPJ: %d Idade: %d Placa: %d CNH: %d Telefone: %d Porte: %s Pets: %s Nome %s\n",prestador[p].cpfcnpj, prestador[p].idade, prestador[p].cnh, prestador[p].telefone, prestador[p].porte, prestador[p].pets, prestador[p].nome); } } fclose(arqCliente); fclose(arqPrestador); } } int localizardadosCliente(int cSet){ int s=0; while (cliente[s].cpfcnpj != cSet && s<29){ s++; } if (cliente[s].cpfcnpj == cSet){ return s; } return -9; } int localizardadosPrestador(int cSet){ int s=0; while (prestador[s].cpfcnpj != cSet && s<29){ s++; } if (prestador[s].cpfcnpj == cSet){ return s; } return -9; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void acessarDados(){ int pCPF, cpfcnpjp, cpfcnpjc; char tipodeconta, confiralt; system("cls"); printf("\nACESSE SUA CONTA OU CONFIRA SEUS DADOS CADASTRADOS NO SISTEMA.\n"); printf("\nPrimeiramente, digite se sua conta é do tipo [C] Cliente ou [P] Prestador.\n"); scanf(" %c", &tipodeconta); fflush(stdin); if (tipodeconta == 'P' || tipodeconta == 'p'){ printf("\nDigite seu CPF ou CNPJ.\n"); scanf("%d",&cpfcnpjp); fflush(stdin); pCPF = localizardadosPrestador(cpfcnpjp); if (pCPF !=-9){ printf("\nNome: %s\n", prestador[pCPF].nome); printf("\nIdade: %d\n", prestador[pCPF].idade); printf("\nPlaca do veículo: %d\n", prestador[pCPF].placa); printf("\nPorte: %s\n", prestador[pCPF].porte); printf("\nCNH: %d\n", prestador[pCPF].cnh); printf("\nAceita pets: %s\n", prestador[pCPF].pets); printf("\n\nDeseja alterar seus dados? [S] Sim / [N] Não.\n\n"); scanf("%c", &confiralt); if (confiralt == 'S'|| confiralt == 's'){ printf("Nome: "); scanf("%c", &prestador[pCPF].nome); fflush(stdin); printf("Idade: "); scanf("%d", &prestador[pCPF].idade); fflush(stdin); printf("Telefone: "); scanf("%d", &prestador[pCPF].telefone); fflush(stdin); printf("\nPlaca do veículo: \n"); scanf("%d", &prestador[pCPF].placa); fflush(stdin); printf("\nPorte do veículo: [P] Pequeno // [M] Médio // [G] Grande \n"); scanf("%c",&prestador[pCPF].porte); fflush(stdin); printf("\nCNH: \n"); scanf("%d", &prestador[pCPF].cnh); fflush(stdin); printf("\nAceita pets? [S] Sim // [N] Não: \n"); scanf("%c",&prestador[pCPF].pets); fflush(stdin); printf("\nVocê foi recadastrado!\n"); }else if (confiralt == 'N'|| confiralt == 'n'){ printf("\nOk! Saindo do sistema.\n"); }else{ printf("\nCaracter inválido. Tente novamente!"); } }else{ printf("\nCPF/CNPJ não localizado. Tente novamente.\n"); } }else if (tipodeconta == 'C' || tipodeconta == 'c'){ printf("\nDigite seu CPF ou CNPJ.\n"); scanf("%d",&cpfcnpjc); pCPF = localizardadosCliente(cpfcnpjc); if (pCPF !=-9){ printf("\nNome: %s\n", prestador[pCPF].nome); printf("\nIdade: %d\n", prestador[pCPF].idade); printf("\n\nDeseja alterar seus dados? [S] Sim / [N] Não.\n\n"); scanf("%c", &confiralt); if (confiralt == 'S'|| confiralt == 's'){ printf("Nome: "); scanf("%c",&cliente[pCPF].nome); fflush(stdin); printf("Idade: "); scanf("%d", &cliente[pCPF].idade); fflush(stdin); printf("\nVocê foi recadastrado!\n"); }else if (confiralt == 'N'|| confiralt == 'n'){ printf("\nOk! Saindo do sistema.\n"); }else{ printf("\nCaracter inválido. Tente novamente!"); } }else{ printf("\nCPF/CNPJ não localizado. Tente novamente.\n"); } }else{ printf("\nVocê digitou um tipo de conta errado! Tente novamente.\n"); } system("pause"); }; void procurarPrestador(){ int pCPF, cpfcnpj; char portepes, petspes, moveispes; system("cls"); printf("\nPROCURE UM PRESTADOR DE MUDANÇA CADASTRADO NO SISTEMA QUE MAIS SE ADEQUE A SUA NECESSIDADE.\n"); printf("\nDigite seu CPF ou CNPJ.\n"); scanf("%d",&cpfcnpj); // perguntar o porte pCPF = localizardadosCliente(cpfcnpj); if (pCPF !=-9){ printf("\nOlá, %s! Encontre um prestador de mudança respondendo algumas perguntas básicas a seguir: \n", &cliente[pCPF].nome); printf("\n[1] Qual o porte do veículo que melhor se adequa a seu serviço? [P] Pequeno // [M] Médio // [G] Grande. \n"); scanf("%c", &portepes); if (portepes != 'P' && portepes != 'p' && portepes != 'M' && portepes != 'm' && portepes != 'G' && portepes != 'g'){ printf("Você digitou um caractere errado! Tente novamente."); }else{ printf("\n[2] Necessita transportar pets? [S] Sim // [N] Não. \n"); scanf("%c", &petspes); if (portepes != 'S' && portepes != 's' && portepes != 'N' && portepes != 'n'){ printf("Você digitou um caractere errado! Tente novamente."); }else{ // listar todos os prestadores que tem o porte e a indicação do pets printf("\n[3] Há móveis com partes desmontáveis e de fácil perda? [S] Sim // [N] Não. \n"); scanf("%c", &moveispes); if (portepes != 'S' || portepes != 's' || portepes != 'N' || portepes != 'n'){ printf("Você digitou um caractere errado! Tente novamente."); }else{ printf("Aqui estão todas as opções disponiveis para você:"); aqui que não consegui fazer corretamente } } } }else{ printf("\nVocê não tem acesso a esta página. Cadastre-se, como CLIENTE, e tente novamente.\n"); } system("pause"); }; void excluirDados(){ int pCPF, cpfcnpjp, cpfcnpjc; char tipodeconta, confiralt; system("cls"); printf("\nACESSE SUA CONTA OU CONFIRA SEUS DADOS CADASTRADOS NO SISTEMA.\n"); printf("\nPrimeiramente, digite se sua conta é do tipo [C] Cliente ou [P] Prestador.\n"); scanf(" %c", &tipodeconta); fflush(stdin); if (tipodeconta == 'P' || tipodeconta == 'p'){ printf("\nDigite seu CPF ou CNPJ.\n"); scanf("%d",&cpfcnpjp); pCPF = localizardadosPrestador(cpfcnpjp); if (pCPF !=-9){ printf("\n\nDeseja mesmo excluir sua conta? [S] Sim / [N] Não.\n\n"); scanf("%c", &confiralt); if (confiralt == 'S'|| confiralt == 's'){ prestador[pCPF].cpfcnpj=-1; printf("\nSeu cadastro foi excluido com sucesso!\n"); }else if (confiralt == 'N'|| confiralt == 'n'){ printf("\nOk! Saindo do sistema.\n"); }else{ printf("\nCaracter inválido. Tente novamente!"); } }else{ printf("\nCPF/CNPJ não localizado. Tente novamente.\n"); } }else if (tipodeconta == 'C' || tipodeconta == 'c'){ printf("\nDigite seu CPF ou CNPJ.\n"); scanf("%d",&cpfcnpjc); pCPF = localizardadosCliente(cpfcnpjc); if (pCPF !=-9){ printf("\n\nDeseja mesmo excluir sua conta? [S] Sim / [N] Não.\n\n"); scanf("%c", &confiralt); if (confiralt == 'S'|| confiralt == 's'){ cliente[pCPF].cpfcnpj=-1; printf("\nSeu cadastro foi excluido com sucesso!\n"); }else if (confiralt == 'N'|| confiralt == 'n'){ printf("\nOk! Saindo do sistema.\n"); }else{ printf("\nCaracter inválido. Tente novamente!"); } }else{ printf("\nCPF/CNPJ não localizado. Tente novamente.\n"); } }else{ printf("\nVocê digitou um tipo de conta errado! Tente novamente.\n"); } system("pause"); }; void acessarConta (){ int op; do{ system("cls"); printf("\n[1] – Acessar e/ou alterar meus dados.\n"); printf("\n[2] – Procurar prestador de serviço.\n"); printf("\n[3] – Excluir meus dados.\n"); printf("\n[4] – Retornar ao menu principal.\n"); printf("\n======================================\n"); printf("\nEscolha a opção desejada no menu digitando o número correspondente.\n"); scanf("%d", &op); switch (op){ case 1: acessarDados(); break; case 2: procurarPrestador(); break; case 3: excluirDados(); break; case 4: break; default: printf("Opcao invalida!\n\n");system("pause"); }; }while (op!=4); }; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void cadastrarPrestador (){ int cpfcnpjp, pCPF, pLivre; system("cls"); printf("CADASTRAR PRESTADOR\n\n"); pLivre = localizardadosPrestador(-1); if(pLivre == -9) { printf("\nNao há vaga para cadastrar novos usuários! Consulte setor de TI.\n"); }else{ printf("\nDigite o CPF/CNPJ.\n"); scanf("%d", &cpfcnpjp); fflush(stdin); pCPF = localizardadosPrestador(cpfcnpjp); if (pCPF != -9){ printf("\nCPF/CNPJ já cadastrado!\n"); }else{ prestador[pLivre].cpfcnpj == cpfcnpjp; printf("Nome: "); scanf("%c",&prestador[pLivre].nome); fflush(stdin); printf("Idade: "); scanf("%d", &prestador[pLivre].idade); fflush(stdin); printf("Telefone: "); scanf("%d", &prestador[pLivre].telefone); fflush(stdin); printf("\nPlaca do veículo: \n"); scanf("%d", &prestador[pLivre].placa); fflush(stdin); printf("\nPorte do veículo: [P] Pequeno // [M] Médio // [G] Grande \n"); scanf("%c",&prestador[pLivre].porte); fflush(stdin); printf("\nCNH: \n"); scanf("%d", &prestador[pLivre].cnh); fflush(stdin); printf("\nAceita pets? [S] Sim // [N] Não: \n"); scanf("%c",&prestador[pLivre].pets); fflush(stdin); printf("\nVocê foi cadastrado!\n"); } } system("pause"); }; void cadastrarCliente (){ int cpfcnpjc, pCPF, pLivre; system("cls"); printf("CADASTRAR CLIENTE\n\n"); pLivre = localizardadosCliente(-1); if(pLivre == -9) { printf("\nNao há vaga para cadastrar novos usuários! Consulte setor de TI.\n"); }else{ printf("\nDigite o CPF/CNPJ.\n"); scanf("%d", &cpfcnpjc); fflush(stdin); pCPF = localizardadosPrestador(cpfcnpjc); if (pCPF != -9){ printf("\nCPF/CNPJ já cadastrado!\n"); }else{ cliente[pLivre].cpfcnpj == cpfcnpjc; printf("Nome: "); scanf("%c",&cliente[pLivre].nome); fflush(stdin); printf("Idade: "); scanf("%d", &cliente[pLivre].idade); fflush(stdin); printf("\nVocê foi cadastrado!\n"); } } system("pause"); }; void inicializarCadastro(){ int c,p; for(c=0;c<30;c++){ cliente[c].cpfcnpj=-1; } for(p=0;p<30;p++){ prestador[p].cpfcnpj=-1; } } int main(){ int opcao; setlocale (LC_ALL,"Portuguese"); inicializarCadastro(); carregarDados(); do{ system("cls"); printf("\n======================================\n"); printf("\nSTM - Sistema de Transporte Mobiliario\n"); printf("\n======================================\n"); printf("\nEscolha a opção desejada no menu digitando o número correspondente.\n"); printf("\n[1] – Acessar minha conta."); printf("\n[2] – Cadastrar-se como prestador."); printf("\n[3] – Cadastrar-se como cliente."); printf("\n[4] – Encerrar.\n\n"); scanf("%d", &opcao); switch (opcao){ case 1: acessarConta(); break; case 2: cadastrarPrestador(); break; case 3: cadastrarCliente();break; case 4: printf("\n\nO sistema será encerrado.\n\n"); salvarDados(); break; default: printf("\nOpcao invalida!\n");system("pause"); } }while (opcao != 4); return 0; }

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!