Cadastro de Pets

1. Cadastro de Pets

Marcus Morikio
MKM2K20

(usa Outra)

Enviado em 14/10/2020 - 10:25h

ENUNCIADO:
Uma instituição recebe e cuida de animais abandonados e vítimas de maus tratos, e posteriormente encaminha-os para adoção. Você deve ajudar essa instituição, facilitando a intermediação com pessoas que poderiam adotar os animais.Para isso, o primeiro passo é prover um cadastro de animais disponíveis para adoção. O cadastro deve ser implementado através de uma lista ligada com diferentes funções para que as pessoas encontrem o pet mais adequado para adoção. O cadastro deve conter, no mínimo, as seguintes informações sobre cada pet: nome, espécie, raça, sexo, idade (ou data de nascimento) e características gerais (físicas ou de comportamento).
A implementação deve conter no mínimo as seguintes funções:
 Inclusão de novos animais;
 Remoção de animais;
 Alteração de informações;
 Busca de um animal a partir do seu nome;
 Busca de animais por espécie;
 Busca de animais por espécie e raça;
 Busca de animais por espécie, raça e sexo;
 Contagem (quantidade de animais);
 Contagem por espécie;
 Listagem de todos os animais cadastrados.

CODIGO FEITO ATE AGR:

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
using namespace std;

struct no {
int codigo, id, idade;
struct no *prox;
char nome[20], especie[20], raca[10], sexo[3], caracteristica[20];
};

void cadastrar (struct no **);
int remover_animal (struct no **);
void listagem_total (struct no *);
int buscar_nome (struct no *);
int buscar_especie (struct no *);
void alterar (struct no**);
int busca_especie_raca (struct no *);
int busca_especie_raca_sexo (struct no*);
int main (){

setlocale(LC_ALL,"portuguese");
int opcao, id;
no *lista = NULL, *aux, *cod;

do {
cout<<"\n1 - Cadastrar novos animais -> ";
cout<<"\n2 - Remover algum animal por CODIGO -> ";
cout<<"\n3 - Alterar informacoes do pet ->";
cout<<"\n4 - Buscar animal por nome ->";
cout<<"\n5 - Buscar animal por especie ->";
cout<<"\n6 - Buscar animal por especie e raca";
cout<<"\n7 - Buscar animal por especie raca e sexo ->";
cout<<"\n8 - Quantidade total de animais ->";
cout<<"\n9 - Quantidade toatl de animais por cada especie ->";
cout<<"\n10 - Listagem de todos os animais cadastrados ->";
cout<<"\n\nSua opcao: ";
cin >> opcao;
switch(opcao) {
case 1:
cadastrar(&lista);
break;
case 2:
if(remover_animal(&lista))
cout<<"O PET FOI REMOVIDO COM SUCESSO";
else
{
cout<<"ERRO ENCONTRADO, O PET NÃO FOI REMOVIDO";
}
break;
case 4:
if(buscar_nome(lista))
cout<<"Achou";
else
cout<<"nao foi encontrado";
break;
case 5:
if(buscar_especie(lista))
cout<<"Especie encontrada";
else
cout<<"ERRO!! Especie nao foi encontrada";
break;
case 6:
if(busca_especie_raca(lista))
cout<<"Pet encontrado";
else
cout<<"ERRO!! Pet nao encontrado";
break;
case 7:
if(busca_especie_raca_sexo(lista))
cout<<"PET Encontrado com sucesso";
else
cout<<"ERRO, PET nao foi encontrado";
case 10:
listagem_total(lista);
break;
}

}while (opcao =! 0);
return 0;
system ("pause");
}


void cadastrar (struct no **lista)
{
cout<<"\t\nCADASTRAR NOVO ANIMAL\n\n";
no *aux;
aux=(no *)malloc(sizeof(no));
aux->prox=(*lista);
(*lista)=aux;
cout<<"Codigo do animal: "; cin >> aux->id;
cout<<"Nome do animal: "; cin >> aux->nome;
cout<<"Sexo do animal: "; cin >> aux->sexo;
cout<<"Idade do animal: "; cin >> aux->idade;
cout<<"Especie do animal: "; cin >> aux->especie;
cout<<"raca do animal: "; cin >> aux->raca;
cout<<"Carasteristicas do animal: "; cin >> aux->caracteristica;
cout<<"\nAnimal CODIGO: "<<aux->id<<" foi adicionado.";
}

int remover_animal (struct no **lista)
{
cout<<"\t\nREMOVER UM PET\n";
no *aux = *lista, *aux2;
if ((*lista)== NULL)
{
cout<<"LISTA VAZIA";
return 0;
}
cout<<"Informe o codigo do pet a ser removido: "; cin >> aux->id;


while (aux != NULL && aux->id != aux->id) /* percorrer a lista ate encontrar o valor desejado */
{
aux2 = aux;
aux=aux->prox;
}
if (aux == NULL) /* ou a lista tava vazia ou nao achou o valor */
return 0;

/* passou pelo if de cima, portanto o valor foi encontrado, entao ele sera reemovido */
if(aux==*lista) /* ver se eh o primeiro elemento */
{
*lista=aux->prox;
}
else /* remover o valor encontrado, percorrendo a lista ate o elemento, e remove-lo com o free no aux */
{
aux2->prox = aux->prox;
free(aux);
return 1;
}
}

void listagem_total (struct no *lista)
{
cout<<"\t\nMOSTRAR TODOS OS PETS\n";
cout<<"\nNome dos animais da lista: ";
while(lista != NULL)
{
cout<<" "<<lista->nome;
lista = lista->prox;
}
cout<<"\n\n";
}

int buscar_nome (struct no *lista) {
no *aux = lista, *aux2;
char nome[20];
cout<<"Informe o nome do animal: ";
cin.ignore();
cin.getline(nome, 20);

while (aux != NULL) {
if (strcmp (aux->nome,nome) == 0)
{
return 1;
}
else
{
aux=aux->prox;
cout<<"Nao achou";
return 0;
}
}

}

int buscar_especie (struct no *lista) {
no *aux = lista, *aux2;
char especie[20];
cout<<"\t\nBUSCAR UM PET PELA ESPECIE\n";
cout<<"Informe a especie do animal: ";
cin.ignore();
cin.getline(especie, 20);
while (aux != NULL) {
if (strcmp (aux->especie,especie) == 0)
{
return 1;
}
else
{
aux=aux->prox;
return 0;
}
}
}

int busca_especie_raca (struct no *lista) {
no *aux = lista, *aux2;
char especie[20], raca[20];
cout<<"\t\nBUSCAR UM PET PELA ESPECIE E PELA RAÇA\n";
cout<<"Informe a especie do animal: ";
cin.ignore();
cin.getline(especie, 20);
cout<<"Informe a raça do animal: ";
cin.ignore();
cin.getline(raca, 20);

while (aux2 != NULL) {
if (strcmp (aux->especie,especie) == 0 && (aux->raca,raca) == 0)
{
return 1;
}
else
{
aux2=aux2->prox;
return 0;
}
}
}

int busca_especie_raca_sexo (struct no *lista) {
no *aux = lista, *aux2;
char especie[20], raca[20], sexo[3];
cout<<"\t\nBUSCAR UM PET PELA ESPECIE E PELA RAÇA\n";
cout<<"Informe a ESPECIE do animal: ";
cin.ignore();
cin.getline(especie, 20);
cout<<"Informe a RAÇA do animal: ";
cin.ignore();
cin.getline(raca, 20);
cout<<"Informe o SEXO do animal: ";
cin.ignore();
cin.getline(sexo, 3);

while (aux2 != NULL) {
if (strcmp (aux->especie,especie) == 0 && (aux->raca,raca) == 0 && (aux->sexo,sexo)==0)
{
return 1;
}
else
{
aux2=aux2->prox;
return 0;
}
}
}


;/////// cores

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <windows.h>
#include <string.h>
using namespace std;

struct no {
int codigo, id, idade;
struct no *prox;
char nome[20], especie[20], raca[10], sexo[3], caracteristica[20];
};

void cadastrar (struct no **);
int remover_animal (struct no **);
void listagem_total (struct no *);
int buscar_nome (struct no *);
int buscar_especie (struct no *);
void alterar (struct no**);
int busca_especie_raca (struct no *);
int busca_especie_raca_sexo (struct no*);


int main (){

setlocale(LC_ALL,"portuguese");
int opcao, id;
no *lista = NULL, *aux, *cod;
char comando[9] = "color ";
char cores[2];
setlocale(LC_ALL, "Portuguese");
SetConsoleTitle("Cores com system");

printf ("Tabela de cores:\n\n");
printf ("\t0 - Preto\t8 - Cinza\n");
printf ("\t1 - Azul\t9 - Azul Claro\n");
printf ("\t2 - Verde\tA - Verde Claro\n");
printf ("\t3 - Verde Água\tB - Verde Água Claro\n");
printf ("\t4 - Vermelho\tC - Vermelho Claro\n");
printf ("\t5 - Roxo\tD - Lilás\n");
printf ("\t6 - Amarelo\tE - Amarelo Claro\n");
printf ("\t7 - Branco\tF - Branco Brilhante\n");

printf ("\n\nCor de fundo: ");
scanf("%c", &cores[0]);
getchar();

printf ("Cor do texto: ");
scanf("%c", &cores[1]);

strcat (comando, cores);

system (comando);
system("cls");
do {

cout<<"\n\n\t\t\tMENU\n";
cout<<"\n\t1 - Cadastrar novos animais -> ";
cout<<"\n\t2 - Remover algum animal por CODIGO -> ";
cout<<"\n\t3 - Alterar informacoes do pet ->";
cout<<"\n\t4 - Buscar animal por nome ->";
cout<<"\n\t5 - Buscar animal por especie ->";
cout<<"\n\t6 - Buscar animal por especie e raca";
cout<<"\n\t7 - Buscar animal por especie raca e sexo ->";
cout<<"\n\t8 - Quantidade total de animais ->";
cout<<"\n\t9 - Quantidade toatl de animais por cada especie ->";
cout<<"\n\t10 - Listagem de todos os animais cadastrados ->";
cout<<"\n\nSua opcao: ";
cin >> opcao;
system("cls");
switch(opcao) {
case 1:

cadastrar(&lista);
break;
case 2:
if(remover_animal(&lista))
cout<<"O PET FOI REMOVIDO COM SUCESSO";
else
{
cout<<"ERRO ENCONTRADO, O PET NÃO FOI REMOVIDO";
}
break;
case 3:
alterar(&lista);
break;
case 4:
if(buscar_nome(lista))
cout<<"Achou";
else
cout<<"nao foi encontrado";
break;
case 5:
if(buscar_especie(lista))
cout<<"Especie encontrada";
else
cout<<"ERRO!! Especie nao foi encontrada";
break;
case 6:
if(busca_especie_raca(lista))
cout<<"Pet encontrado";
else
cout<<"ERRO!! Pet nao encontrado";
break;
case 7:
if(busca_especie_raca_sexo(lista))
cout<<"PET Encontrado com sucesso";
else
cout<<"ERRO, PET nao foi encontrado";
break;
case 10:
listagem_total(lista);
break;
}

}while (opcao =! 0);
return 0;
system ("pause");
}


void cadastrar (struct no **lista)
{
cout<<"\t\nCADASTRAR NOVO ANIMAL\n\n";
no *aux;
aux=(no *)malloc(sizeof(no));
aux->prox=(*lista);
(*lista)=aux;
cout<<"Codigo do animal: "; cin >> aux->id;
cout<<"Nome do animal: "; cin >> aux->nome;
cout<<"Sexo do animal: "; cin >> aux->sexo;
cout<<"Idade do animal: "; cin >> aux->idade;
cout<<"Especie do animal: "; cin >> aux->especie;
cout<<"raca do animal: "; cin >> aux->raca;
cout<<"Carasteristicas do animal: "; cin >> aux->caracteristica;
cout<<"\nAnimal CODIGO: "<<aux->id<<" foi adicionado.";
}

int remover_animal (struct no **lista)
{
cout<<"\t\nREMOVER UM PET\n";
no *aux = *lista, *aux2;
if ((*lista)== NULL)
{
cout<<"LISTA VAZIA";
return 0;
}
cout<<"Informe o codigo do pet a ser removido: "; cin >> aux->id;


while (aux != NULL && aux->id != aux->id) /* percorrer a lista ate encontrar o valor desejado */
{
aux2 = aux;
aux=aux->prox;
}
if (aux == NULL) /* ou a lista tava vazia ou nao achou o valor */
return 0;

/* passou pelo if de cima, portanto o valor foi encontrado, entao ele sera reemovido */
if(aux==*lista) /* ver se eh o primeiro elemento */
{
*lista=aux->prox;
}
else /* remover o valor encontrado, percorrendo a lista ate o elemento, e remove-lo com o free no aux */
{
aux2->prox = aux->prox;
free(aux);
return 1;
}
}

void listagem_total (struct no *lista)
{
cout<<"\t\nMOSTRAR TODOS OS PETS\n";
cout<<"\nNome dos animais da lista: ";
while(lista != NULL)
{
cout<<" \n"<<lista->nome;
lista = lista->prox;
}
cout<<"\n\n";
}

int buscar_nome (struct no *lista) {
no *aux = lista, *aux2;
char nome[20];
cout<<"Informe o nome do animal: ";
cin.ignore();
cin.getline(nome, 20);

while (aux != NULL) {
if (strcmp (aux->nome,nome) == 0)
{
return 1;
}
else
{
aux=aux->prox;
cout<<"Nao achou";
return 0;
}
}

}

int buscar_especie (struct no *lista) {
no *aux = lista, *aux2;
char especie[20];
cout<<"\t\nBUSCAR UM PET PELA ESPECIE\n";
cout<<"Informe a especie do animal: ";
cin.ignore();
cin.getline(especie, 20);
while (aux != NULL) {
if (strcmp (aux->especie,especie) == 0)
{
return 1;
}
else
{
aux=aux->prox;
return 0;
}
}
}

int busca_especie_raca (struct no *lista) {
no *aux = lista, *aux2;
char especie[20], raca[20];
cout<<"\t\nBUSCAR UM PET PELA ESPECIE E PELA RAÇA\n";
cout<<"Informe a especie do animal: ";
cin.ignore();
cin.getline(especie, 20);
cout<<"Informe a raça do animal: ";
cin.ignore();
cin.getline(raca, 20);

while (aux2 != NULL) {
if (strcmp (aux->especie,especie) == 0 && (aux->raca,raca) == 0)
{
return 1;
}
else
{
aux2=aux2->prox;
return 0;
}
}
}

int busca_especie_raca_sexo (struct no *lista) {
no *aux = lista, *aux2;
char especie[20], raca[20], sexo[3];
cout<<"\t\nBUSCAR UM PET PELA ESPECIE E PELA RAÇA\n";
cout<<"Informe a ESPECIE do animal: ";
cin.ignore();
cin.getline(especie, 20);
cout<<"Informe a RAÇA do animal: ";
cin.ignore();
cin.getline(raca, 20);
cout<<"Informe o SEXO do animal: ";
cin.ignore();
cin.getline(sexo, 3);

while (aux2 != NULL) {
if (strcmp (aux->especie,especie) == 0 && (aux->raca,raca) == 0 && (aux->sexo,sexo)==0)
{
return 1;
}
else
{
aux2=aux2->prox;
return 0;
}
}
}




  


2. Re: Cadastro de Pets

Alberto Federman Neto.
albfneto

(usa Sabayon)

Enviado em 14/10/2020 - 16:47h

Tem algum problema no seu código? aguarde mais respostas de pessoas que programem em C.
não sou programador.

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, openSUSE, Mageia e OpenMandriva.


3. Re: Cadastro de Pets

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/10/2020 - 03:14h

Na verdade, seria interessante você apontar que tipo de ajuda gostaria, facilitando o trabalho de quem pode vir a ajudar você.

Tudo bem que você já fez mais do que algumas outras pessoas que vêm aqui, que só colocam o enunciado e parecem esperar receber a resposta pronta. Você colocou o que você já conseguiu fazer por conta própria, o que é muito positivo. Mas de que maneira você espera que o ajudemos com esse código?

Note que, mesmo não sendo um programa muito longo, já é de um tamanho não muito trivial (não cabe na tela, utiliza estrutura de dados que não é parte da biblioteca padrão, requer análise cautelosa de ponteiros etc.). Analisar o programa todo demanda tempo. Então, se você não quiser análise do programa todo, mas precisar apenas tirar uma dúvida sobre um comportamento errado de uma ou outra função, seria bom orientar a pessoa que pode lhe ajudar. Nesse mister, é interessante sempre dizer também de que maneira o comportamento observado desvia do que seria desejado: por exemplo, dizer que "a função de cadastro dá erro na hora em que eu digito o nome do animal" ou "estou recebendo os seguintes erros na hora de compilar" (e copiar as mensagens de erro) é muito melhor do que dizer apenas que "o programa está com problema". Desse modo, você reduz a expectativa de tempo que alguém que viesse a lhe ajudar teria de gastar, tornando sua questão mais atraente.

Por outro lado, se você quiser uma análise do código todo (algo na linha do "Eis aqui minha solução para uma questão de programação. Podem analisar minha resposta para ver se há algum vício que eu deveria evitar ou alguma outra melhoria que eu possa implementar?"), seria bom também que explicitasse essa intenção.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)