Ir para conteúdo
Fórum Script Brasil

seassalt

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre seassalt

seassalt's Achievements

0

Reputação

  1. Bom dia, Eu estou com um problema em meu código (em C), ele é, basicamente, um menu para cadastros de animais e seus respectivos donos em um petshop. Quando coloco a opção 2 (cadastro do dono) ele funciona normalmente e eu consigo preencher todos os dados, porém quando tento adicionar mais um dono pelo atalho da linha 164 ele pula a entrada do dado "Nome" e vai direto pedindo o telefone. Como eu posso fazer para o código receber a entrada do nome de um segundo dono? Obs.: O código não está completo, as únicas opções funcionais do "menu" são de 0 à 4, porém eu gostaria de resolver esse problema antes de prosseguir Código: #include <stdio.h> #include <string.h> #define MAX_DONOS 200 #define MAX_ANIMAIS 500 //criar uma struct para representar o endereco typedef struct{ char rua[30]; int numero; char bairro[30]; }Endereco; //criar uma struct para representar os dados de um dono typedef struct{ char nome[30]; char telefone[15]; Endereco endereco_dono; int codigo_dono; }Pessoa; //criar uma struct para representar os dados de um animal typedef struct{ char nome[30]; //'m', 'a', 'r', 'i', 'a', '\0' int codigo_animal, idade; char tipo[30]; char observacoes[100]; int codigo_dono; }Animal; //declaração de variáveis globais //criação de um vetor para cadastrar os animais - máximo 500 animais Animal lista_animais[MAX_ANIMAIS]; //criação de um vetor para cadastrar os donos dos animais - máximo 200 donos Pessoa lista_donos[MAX_DONOS]; //variável para gerenciar a quantidade de donos int indiceDonos = 0; //2 informações: (1)próxima posição a ser preenchida e (2) a quantidade de donos no sistema int indiceAnimais = 0; //2 informações: (1)próxima posição a ser preenchida e (2) a quantidade de animais no sistem //função para cadastrar um dono int cadastrarDono(){ printf("CADASTRO DE UM NOVO DONO\n\n"); printf("Posição que será preenchida = %d\n", indiceDonos); printf("Nome: "); setbuf(stdin, NULL); scanf("%29[^\n]", lista_donos[indiceDonos].nome); printf("Telefone: "); setbuf(stdin, NULL); scanf("%14[^\n]", lista_donos[indiceDonos].telefone); printf("Endereço\n Rua: "); setbuf(stdin, NULL); scanf("%29[^\n]", lista_donos[indiceDonos].endereco_dono.rua); printf(" Número: "); scanf("%d", &lista_donos[indiceDonos].endereco_dono.numero); printf(" Bairro: "); setbuf(stdin, NULL); scanf("%29[^\n]", lista_donos[indiceDonos].endereco_dono.bairro); lista_donos[indiceDonos].codigo_dono = indiceDonos+1; indiceDonos++; return indiceDonos; } int main(){ //variáveis int opcaoUsuario; char validarSaida='q'; char resposta; int i; do{ //for(; validarSaida!='S', validarSaida!='s'; ){ printf("\n1 - Cadastrar um novo animal\n"); printf("2 - Cadastrar um novo dono\n"); printf("3 - Listar todos os animais\n"); printf("4 - Listar todos os donos\n"); printf("5 - Buscar animal por nome\n"); printf("6 - Buscar animal por código\n"); printf("7 - Buscar dono por nome\n"); printf("8 - Buscar dono por código\n"); printf("9 - Editar os dados de um animal\n"); printf("10 - Editar os dados de um dono\n"); printf("0 - Encerrar o sistema\n"); printf("Escolha uma opção: "); scanf("%d", &opcaoUsuario); switch(opcaoUsuario){ case 1: // tratando o cadastro de um novo animal if(indiceAnimais < MAX_ANIMAIS){ //se tem posição disponível para cadastro de animal if(indiceDonos == 0){ printf("Não há donos cadastrados.\n Cadastre um dono antes de cadastrar o animal\n"); } else{ //trata o cadastro printf("CADASTRO DE UM NOVO ANIMAL\n\n"); indiceAnimais = 0; printf("Nome: "); setbuf(stdin, NULL); scanf("%29[^\n]", lista_animais[indiceAnimais].nome); printf("Idade: "); scanf("%d", &lista_animais[indiceAnimais].idade); printf("Tipo: "); setbuf(stdin, NULL); scanf("%29[^\n]", lista_animais[indiceAnimais].tipo); printf("Observações: "); setbuf(stdin, NULL); scanf("%99[^\n]", lista_animais[indiceAnimais].observacoes); lista_animais[indiceAnimais].codigo_animal = indiceAnimais+1; int cod; do{ //listagem dos códigos e nomes dos donos printf("Donos cadastrados\n"); for(i=0; i<indiceDonos; i++){ printf("%d - %s\n", lista_donos[i].codigo_dono, lista_donos[i].nome); } printf("Código do dono: "); scanf("%d", &cod); if(cod <= 0 || cod > indiceDonos){ printf("Código de dono inválido!\n"); printf("Deseja cadastrar um novo dono? (s/S)"); scanf(" %c", &resposta); } }while((resposta != 's' && resposta != 'S') && (cod < 1 || cod > indiceDonos)); //código errado! if(resposta == 's' || resposta == 'S'){ if(indiceDonos < MAX_DONOS){ cod = cadastrarDono(); } } lista_animais[indiceAnimais].codigo_dono = cod; indiceAnimais++; } } else{ printf("Limite de cadastro de animais alcançado!\n"); } break; case 2: //tratando o cadastro de um novo dono if(indiceDonos < MAX_DONOS){ do{ cadastrarDono(); if(indiceDonos < MAX_DONOS){ printf("Deseja cadastrar um novo dono? (s/S/n/N)"); setbuf(stdin, NULL); scanf("%c", &resposta); } else{ printf("Atingiu o máximo de cadastros possível\n"); } }while((resposta == 's' || resposta == 'S') && indiceDonos < MAX_DONOS); } else{ printf("Limite máximo de cadastro de usuário atingido!\n"); } break; case 3: printf("Opção escolhida foi a 3 - listar animais"); break; case 4://tratando a listagem de todos os donos cadastrados //|X|X|X|3|4|...|199| printf("LISTAGEM DOS DONOS\n\n"); for(i=0; i<indiceDonos; i++){ printf("Código: %d\n", lista_donos[i].codigo_dono); printf("Nome: %s\n", lista_donos[i].nome); printf("Telefone: %s \n", lista_donos[i].telefone); printf("Endereco: Rua %s, %d - %s\n\n", lista_donos[i].endereco_dono.rua, lista_donos[i].endereco_dono.numero, lista_donos[i].endereco_dono.bairro); } break; case 5: printf("Opção escolhida foi a 5 - buscar animal por nome"); break; case 6: printf("Opção escolhida foi a 6 - buscar animal por código"); break; case 7: printf("Opção escolhida foi a 7 - buscar dono por nome"); break; case 8: printf("Opção escolhida foi a 8 - buscar dono por código"); break; case 9: printf("Opção escolhida foi a 9 - editar dados de animal"); break; case 10: printf("Opção escolhida foi a 10 - editar dados de dono"); break; case 0: printf("Opção escolhida foi a 0 - sair"); printf("\nDeseja realmente sair? (S/N)"); scanf(" %c", &validarSaida); break; default: printf("Opção inválida\n"); printf("Verifique as opções disponíveis\n"); break; }//fecha chaves do switch }while(validarSaida != 'S' && validarSaida != 's');//fim do while return 0; }
×
×
  • Criar Novo...