Ir ao conteúdo

Posts recomendados

Postado
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
  
struct zoo{
int codigoid;	
char raca[20];	
int dataentrada;
char sexo[10];
int idade;
char nome[20];
};

typedef struct zoo animal;
int seila(animal teste){
int x;
do{
	while(getchar() != '\n');
	printf("-------------------");
	printf("voce Escolheu Cadastro");
	printf("-------------------\n");
printf("Nome do Animal: \n");	
gets(teste.nome);
printf("Raca do animal:\n");   //SE A PESSOA ESCOLHER A opção UM  ELE FAZ ISSO
gets(teste.nome);
printf("Codigo do Animal:\n");	
scanf("%d",&teste.codigoid);
printf("Data de Entrada:\n");
scanf("%d",&teste.dataentrada);
printf("Idade do animal:\n");
scanf("%d",&teste.idade);	
printf("Sexo do animal:\n");
gets(teste.sexo);	
printf("4 .Para sair: \n");		
if(teste.codigoid==teste.codigoid){
printf("Codigo Cadastrado");              //SE O CODIGO DIGITADO FOR IGUAL
}
	}while(x!=4);
}

void menuprincipal(){
int i, escolhe;
int nadasei;
do{
	printf("------------------------------------------------------\n");
printf("1. Cadastrar Animal \n");
printf("2. Pesquisar \n");	            //MENU PRINCIPAL
printf("3. Estatisticas \n");	
printf("4. Sair \n");
scanf("%d",&escolhe);
if (escolhe==1){
seila(menuprincipal);      //FUNÇAO COM PARAMETRO QUANDO você ESCOLHE A opção UM
}
	else if(escolhe==2){
}
		else if (escolhe=3){
}	
		  	else{
}		
	{
	}
	}while(i!=4);	
}
main(){
struct zoo animal[30];
menuprincipal(animal);
}
// Eai galera to fazendo esse exercicio só que ele ta me retornando um erro
//não estou conseguindo identificar o que é.Obrigado 

 

  • Curtir 1
Postado

@Igor Vargas    para passar parametros de um struct para uma função você coloca o nome do struct na chamada da função e lá na função você coloca o struct com  colchetes sem nada dentro assim você pode armazenar vários dados no struct dependendo apenas pela quantidade que você declarou lá no inicio na main .

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct zoo{
    int codigoid;
    char raca[20];
    char dataentrada[10];
    char sexo[10];
    int idade;
    char nome[20];
};
int cont;
typedef struct zoo animal;
int seila(zoo teste[]){
    char x='s';
    do{
	    printf("-------------------");
	    printf("voce Escolheu Cadastro");
	    printf("-------------------\n");
        printf("Nome do Animal: ");
        fflush(stdin);
        gets(teste[cont].nome);
        printf("Raca do animal: ");   //SE A PESSOA ESCOLHER A opção UM  ELE FAZ ISSO
        fflush(stdin);
        gets(teste[cont].raca);
        printf("Codigo do Animal: ");
        fflush(stdin);
        scanf("%d",&teste[cont].codigoid);
        printf("Data de Entrada : DD/MM/AA ");
        fflush(stdin);
        gets(teste[cont].dataentrada);
        printf("Idade do animal: ");
        fflush(stdin);
        scanf("%d",&teste[cont].idade);
        printf("Sexo do animal: \n");
        fflush(stdin);
        gets(teste[cont].sexo);
        cont++;
        printf("Codigo Cadastrado\n");              //SE O CODIGO DIGITADO FOR IGUAL
        printf("Quer Cadastrar Outro Animal  S/N ");
        fflush(stdin);
        scanf("%c",&x);
	}while(x=='s');
}
int pesquisar(zoo teste[]){
    int i;
    for(i=0;i<cont;i++){
        printf("nome do animal -----------> %s\n",teste[i].nome);
        printf("raca do animal -----------> %s\n",teste[i].raca);
        printf("codigo do animal ---------> %d\n",teste[i].codigoid);
        printf("data entrada do animal ---> %s\n",teste[i].dataentrada);
        printf("idade  do animal ---------> %d\n",teste[i].idade);
        printf("sexo do animal -----------> %s\n\n",teste[i].sexo);
    }
    return 0;
}
int estatisticas(){

    return 0;
}
void menuprincipal(){
	    printf("\n------------------------------------------------------\n");
        printf("1. Cadastrar Animal \n");
        printf("2. Pesquisar \n");	            //MENU PRINCIPAL
        printf("3. Estatisticas \n");
        printf("4. Sair \n");
}
int main(){
    zoo teste[10];
    int escolhe;
    do{
    menuprincipal();
    scanf("%d",&escolhe);
    switch(escolhe){
        case 1:
            seila(teste);
            break;
        case 2:
            pesquisar(teste);
            break;
        case 3:
            estatisticas();
            break;
    }
    }while(escolhe!=4);

}
// Eai galera to fazendo esse exercicio só que ele ta me retornando um erro
//não estou conseguindo identificar o que é.Obrigado

 

  • Curtir 1
Postado

  

@devair1010 Não estou conseguindo fazer a parte do, se a pessoa digitar o mesmo codigo dizer que ele já foi cadastrado.

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
  
struct zoo{
int codigoid;	
char raca[20];	
int dataentrada;
char sexo[10];
int idade;
char nome[20];	
};

typedef struct zoo animal;
void menuprincipal(animal teste[]){
int i, escolhe;
int nadasei;
struct zoo animal[30];
do{
  printf("\n-------------Bem Vindo ao zoo registro-----------\n");
	printf("------------------------------------------------------\n");
printf("1. Cadastrar Animal \n");
printf("2. Pesquisar \n");	            //MENU PRINCIPAL
printf("3. Estatisticas \n");	
printf("4. Sair \n");
scanf("%d",&escolhe);

if (escolhe==1){

seila(teste); 	 //FUNÇAO COM PARAMETRO QUANDO você ESCOLHE A opção UM
}
	else if(escolhe==2){
	numerodois(teste);
}
		else if (escolhe=3){
}	
		  	else{
}		
	{
	}
	}while(i!=4);
}

int seila(animal bat[]){
struct zoo animal[30];  	
int x,aux[30];
int teste[30];
for(x=0; x<1; x++){
while(getchar() != '\n');
	printf("-------------------");
	printf("voce Escolheu Cadastro");
	printf("-------------------\n");
printf("Nome do Animal: \n");	
gets(bat[x].nome);
printf("Raca do animal:\n");   //SE A PESSOA ESCOLHER A opção UM  ELE FAZ ISSO
gets(bat[x].raca);
printf("Codigo do Animal:\n");	
scanf("%d",&bat[x]);
printf("Data de Entrada:\n");
scanf("%d",&bat[x].dataentrada);
printf("Idade do animal:\n");
scanf("%d",&bat[x].idade);
while(getchar() != '\n');	
printf("Sexo do animal:\n");
gets(bat[x].sexo);
verefica(bat);
printf("-----------Animal Cadastrado com sucesso--------------------\n");		
{
}
}
}

int numerodois(animal tipo[]){
int x=0;
int escolha;

do{
printf("---------------------------------------------------\n");
printf("-----------voce escolheu Pesquisar-------------------\n");
printf("---------------------------------------------------\n");
while(getchar() != '\n');
printf("2.1. Pesquisar por raca \n");
printf("2.2. Pesquisar por sexo \n");
scanf("%d",&escolha);
if(escolha==1){
printf("Nome \n");	
puts(tipo[x].nome);
printf("Raca \n");
puts(tipo[x].raca);
}
else{
printf("Nome \n");	
puts(tipo[x].nome);
printf("Sexo \n");	
puts(tipo[x].sexo);	
}	
while(getchar() != '\n');	
}while (x!=0);	
}
main(){
struct zoo animal[30];
menuprincipal(animal);
}
//1. Desenvolver um algoritmo para gerenciar os animais de um zoológico. 
Para cada animal deve-se guardar seu código identificador, raça, data de entrada, sexo e idade. 
O zoológico não deve permitir mais de um animal com o mesmo código identificador. 
O programa deve permitir cadastrar novos animais, pesquisar por raça ou sexo. 
Além disso, apresentar estatísticas dos já cadastrados: número de animais de determinado sexo (informado pelo usuário) e qual a média de idade deles. 
O programa deve apresentar o seguinte menu:
1. Cadastrar animal
2. Pesquisar
3. Estatísticas
4. Sair
Caso o usuário selecione a opção 2”, o sistema deve mostrar outro menu com as opções:
2.1. Pesquisar por raça
2.2. Pesquisar por sexo
Caso o usuário selecione a opção 3”, o sistema deve mostrar as seguintes opções:
3.1. Apresentar total de animais por sexo
3.2. Apresentar a média de idade de animais por sexo
Cada uma das opções do menu e sub-menus devem ser desenvolvidas através de funções. Para as opções 2 e 3a raça e sexo devem ser passados por parâmetro para as funções.

@devair1010

  • Curtir 1
Postado

@Igor Vargas você precisa de um contador para fazer os cadastros e na hora de pesquisar então coloquei esse aqui :

int cont;

ele e do tipo global para poder ser reconhecido em qualquer parte do programa, mas só pode ser alterado na função seila() ; que faz o cadastro e também poderá ser alterada na função excluir_animal(); 
não entendi para quê esse pedaço de código aqui :

while(getchar() != '\n');

creio que não tem utilidade nenhuma.

essa parte aqui , na função seila();  é que faz a verificação se o código já existe :

printf("Codigo do Animal: ");
   do{
        yy=1;
        fflush(stdin);
        scanf("%d",&codg);
        for(i=0;i<cont;i++){
            if(codg==bat[i].codigoid){
                yy=0;
                printf("Codigo Ja Existente..., Digite Outro. ");
            }
        }
   }while(yy==0);
bat[cont].codigoid=codg;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct zoo{
    int codigoid;
    char raca[20];
    char dataentrada[20];
    char sexo[10];
    int idade;
    char nome[20];
};
typedef struct zoo animal;
int cont;
void menuprincipal(animal teste[]){
int i, escolhe;
int nadasei;
struct zoo animal[30];
do{
    printf("\n-------------Bem Vindo ao zoo registro-----------\n");
    printf("------------------------------------------------------\n");
    printf("1. Cadastrar Animal \n");
    printf("2. Pesquisar \n");	            /*//MENU PRINCIPAL*/
    printf("3. Estatisticas \n");
    printf("4. Sair \n");
    scanf("%d",&escolhe);
    if (escolhe==1){
        seila(teste); 	 /*//FUNÇAO COM PARAMETRO QUANDO você ESCOLHE A opção UM*/
    }
	else if(escolhe==2){
	    numerodois(teste);
    }
    else if (escolhe==3){
    }
    }while(escolhe!=4);

}

int seila(animal bat[]){
    struct zoo animal[30];
    int x,codg,yy,i,aux[30];
    int teste[30];
    char op;
    do{
        op='s';
        printf("-------------------");
        printf("voce Escolheu Cadastro");
        printf("-------------------\n");
        printf("Nome do Animal: \n");
        fflush(stdin);
        gets(bat[cont].nome);
        printf("Raca do animal:\n");   /*//SE A PESSOA ESCOLHER A opção UM  ELE FAZ ISSO*/
        fflush(stdin);
        gets(bat[cont].raca);
        printf("Codigo do Animal: ");
        do{
            yy=1;
            fflush(stdin);
            scanf("%d",&codg);
            for(i=0;i<cont;i++){
                if(codg==bat[i].codigoid){
                    yy=0;
                    printf("Codigo Ja Existente..., Digite Outro. ");
                }
            }
        }while(yy==0);
        bat[cont].codigoid=codg;
        printf("Data de Entrada: DD/MM/AA ");
        fflush(stdin);
        gets(bat[cont].dataentrada);
        printf("Idade do animal:\n");
        fflush(stdin);
        scanf("%d",&bat[cont].idade);
        while(getchar() != '\n');
        printf("Sexo do animal:\n");
        fflush(stdin);
        gets(bat[cont].sexo);
        cont++;
        /*verefica(bat);*/
        printf("-----------Animal Cadastrado com sucesso--------------------\n");
        printf("Quer Cadastrar Outro Animal S/N ");
        fflush(stdin);
        scanf("%c",&op);
        {
        }
    }while(op!='n');
}

int numerodois(animal tipo[]){

    int x=0,i;
    int escolha;

    do{
        printf("---------------------------------------------------\n");
        printf("-----------voce escolheu Pesquisar-------------------\n");
        printf("---------------------------------------------------\n");
        while(getchar() != '\n');
        printf("2.1. Pesquisar por raca \n");
        printf("2.2. Pesquisar por sexo \n");
        scanf("%d",&escolha);
        for(i=0;i<cont;i++){
            printf("Nome   : ");
            puts(tipo[i].nome);
            printf("Raca   : ");
            puts(tipo[i].raca);
            printf("Codigo : %d\n",tipo[i].codigoid);
            printf("Sexo   : %s\n",tipo[i].sexo);
            printf("data   : %s\n\n",tipo[i].dataentrada);
        }
    }while (x!=0);
}

main(){
    struct zoo animal[30];

    menuprincipal(animal);

}
/*//1. Desenvolver um algoritmo para gerenciar os animais de um zoológico. */
/*Para cada animal deve-se guardar seu código identificador, raça, data de entrada, sexo e idade.
O zoológico não deve permitir mais de um animal com o mesmo código identificador.
O programa deve permitir cadastrar novos animais, pesquisar por raça ou sexo.
Além disso, apresentar estatísticas dos já cadastrados: número de animais de determinado sexo (informado pelo usuário) e qual a média de idade deles.
O programa deve apresentar o seguinte menu:
1. Cadastrar animal
2. Pesquisar
3. Estatísticas
4. Sair
Caso o usuário selecione a opção “2”, o sistema deve mostrar outro menu com as opções:
2.1. Pesquisar por raça
2.2. Pesquisar por sexo
Caso o usuário selecione a opção “3”, o sistema deve mostrar as seguintes opções:
3.1. Apresentar total de animais por sexo
3.2. Apresentar a média de idade de animais por sexo
Cada uma das opções do menu e sub-menus devem ser desenvolvidas através de funções. Para as opções “2” e “3”a raça e sexo devem ser passados por parâmetro para as funções.
*/

 

  • Curtir 2
Postado

 

 

@devair1010 Vou ter que te incomodar de novo, essa ultima parte fica dando um erro sendo que teoricamente esta certo.É a funçao escolhatres(animais nada[]);

3.1. Apresentar total de animais por sexo

3.2. Apresentar a média de idade de animais por sexo

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct zoo{
    int codigoid;
    char raca[20];
    char dataentrada[20];
    int sexo;
    int idade;
    char nome[20];
};
typedef struct zoo animal;
int cont;





void menuprincipal(animal teste[]){
int i, escolhe;
int nadasei;
struct zoo animal[30];
do{
    printf("\n-------------Bem Vindo ao zoo registro-----------\n");
    printf("------------------------------------------------------\n");
    printf("1. Cadastrar Animal \n");
    printf("2. Pesquisar \n");	            /*//MENU PRINCIPAL*/
    printf("3. Estatisticas \n");
    printf("4. Sair \n");
    scanf("%d",&escolhe);
    if (escolhe==1){
        seila(teste); 	 /*//FUNÇAO COM PARAMETRO QUANDO você ESCOLHE A opção UM*/
    }
	else if(escolhe==2){
	    numerodois(teste);
    }
    else if (escolhe==3){
    	
    }
    }while(escolhe!=4);

}

int seila(animal bat[]){
    struct zoo animal[30];
    int x,codg,yy,i,aux[30];
    int teste[30];
    char op;
    do{
        op='s'; 
        printf("-------------------");
        printf("voce Escolheu Cadastro");
        printf("-------------------\n");
        printf("Nome do Animal: \n");
        fflush(stdin);
        gets(bat[cont].nome);
        printf("Raca do animal:\n");   /*//SE A PESSOA ESCOLHER A opção UM  ELE FAZ ISSO*/
        fflush(stdin);
        gets(bat[cont].raca);
        printf("Codigo do Animal: ");
        do{
            yy=1;
            fflush(stdin);             //verefica se o numero do codigo do animal já esta registrado
            scanf("%d",&codg);
            for(i=0;i<cont;i++){
                if(codg==bat[i].codigoid){ //iguala o o codigo que a pessoa digitou a variavel codg
                    yy=0;
                    printf("Codigo Ja Existente..., Digite Outro. ");
                }
            }
        }while(yy==0); //caso o codigo for igual ele continua no laço
        bat[cont].codigoid=codg; // se a variavel n for igual ele manda ela para essa variavel 
        printf("Data de Entrada: DD/MM/AA ");
        fflush(stdin);
        gets(bat[cont].dataentrada);
        printf("Idade do animal:\n");                //faz o cadastro do animal
        fflush(stdin);
        scanf("%d",&bat[cont].idade);
        while(getchar() != '\n');
        printf("Sexo do animal 1 para macho e 2 para femea:\n");
        fflush(stdin);
        scanf("%d",&bat[cont].sexo);
        cont++;
        /*verefica(bat);*/
        printf("-----------Animal Cadastrado com sucesso--------------------\n");
        printf("Quer Cadastrar Outro Animal S/N ");
        fflush(stdin);                                //caso queira cadastrar outro animal sem sair 
        scanf("%c",&op); //faz a pergunta caso usuario digite op='s' ele continua
        {
        }
    }while(op!='n'); // caso a pessoa digita algo diferente de n ele continua
}

int numerodois(animal tipo[]){

    int x=0,i;
    int escolha;

    do{
        printf("---------------------------------------------------\n");
        printf("-----------voce escolheu Pesquisar-------------------\n");
        printf("---------------------------------------------------\n");
        while(getchar() != '\n');
        printf("2.1. Pesquisar por raca \n");
        printf("2.2. Pesquisar por sexo \n");
        scanf("%d",&escolha);
        for(i=0;i<cont;i++){                     // mostra a raça eo sexo dos animais
            printf("Nome   : ");
            puts(tipo[i].nome);
            printf("Raca   : ");
            puts(tipo[i].raca);
            printf("Codigo : %d\n",tipo[i].codigoid);
            printf("Sexo   : %s\n",tipo[i].sexo);
            printf("data   : %s\n\n",tipo[i].dataentrada);
        }
    }while (x!=0);
}

int escolhatres(animal nada[]){
int aux[30];
int x;
int escolha;
int total[30];
int result[30];
struct zoo animal[30];
do{	
printf("3.1. Apresentar total de animais por sexo \n");     
printf("3.2. Apresentar a média de idade de animais por sexo \n");		
scanf("%d",&escolha);	
if(escolha==1){
if(nada[cont].sexo=1 && nada[cont].sexo=2){//apresenta o total de animais por sexo
printf("existe %d femeas e %d machos ",nada[cont].sexo,nada[cont].sexo);	
}	

}else if (escolha==2){ //apresenta a media de idade por sexo
nada[x].sexo="femea";


}	
}while(x!=0);
{

}
}	

main(){
    struct zoo animal[30];

    menuprincipal(animal);

}

 

  • Curtir 1
Postado

@Igor Vargas   pello jeito é porque você colocou só um sinal de igual nas comparações :

if(nada[cont].sexo=1 && nada[cont].sexo=2){//apresenta o total de animais por sexo

seria assim :

if(nada[cont].sexo == 1 && nada[cont].sexo == 2){//apresenta o total de animais por sexo

creio que essa função precisa de algumas modificações :

int escolhatres(animal nada[]){
    int aux[30];
    int x,fem=0,mac=0,mIf,mIm;
    int escolha,t_idf,t_idm,q_fm,q_mc;
    int total[30];
    int result[30];
    struct zoo animal[30];
    do{
        printf("3.1. Apresentar total de animais por sexo \n");
        printf("3.2. Apresentar a média de idade de animais por sexo \n");
        scanf("%d",&escolha);
        if(escolha == 1){
            for(i=0;i<cont;i++){
                if(nada[i].sexo == 1)fem++;
                    else mac++;
            }
            printf("existe %d femeas e %d machos \n",fem,mac);
        }
        else if (escolha==2){ //apresenta a media de idade por sexo
            for(i=0;i<cont;i++){
                if(nada[i].sexo==1){t_idf+=nada[i].idade;q_fm++;}
                else
                {
                    t_idm+=nada[i].idade;q_mc++;
                }
            }
            mIf=t_idf/q_fm;
            mIm=t_idm/q_mc;
            printf("A Media De Femeas eh %.2f  e De Machos eh %.2f\n",mIf,mIm)
        }
    }while(x!=0);
}

 

  • Curtir 1
Postado

@devair1010 valeu mesmo cara ajudou muito. Comecei a mexer com linguagem de programaçao faz 4 meses e C é o que estão me ensinando então tem muita coisa que eu nao tenho as manhas ainda.

adicionado 29 minutos depois

 

@devair1010 A média de idade dos animais por sexo ta vindo zero.

int escolhatres(animal nada[]){
    int aux[30];
    int x,fem=0,mac=0,mIf,mIm;
    int escolha,t_idf,t_idm,q_fm,q_mc;
    int total[30];
    int result[30];
    struct zoo animal[30];
    int i;
    
    do{
    	printf("----------------------------------------------------------\n");
    	printf("-----------------voce escolheu estatistica----------------\n");
    	printf("----------------------------------------------------------\n");
        printf("3.1. Apresentar total de animais por sexo \n");
        printf("3.2. Apresentar a média de idade de animais por sexo \n");
        scanf("%d",&escolha);
        if(escolha == 1){       // se a escolha for ==1
            for(i=0;i<cont;i++){
                if(nada[i].sexo == 1)fem++; //contador do sexo femenino
                    else mac++; //contador do masculino
            }
            printf("existe %d femeas e %d machos \n",fem,mac);
        }
        else if (escolha==2){ //apresenta a media de idade por sexo
            for(i=0;i<cont;i++){
                if(nada[i].sexo==1){ //se o numero digitado for 1
				t_idf+=nada[i].idade; // soma a idade das femeas
				q_fm++; //vai contar a quantidade de femeas
				}
                else
                {
                    t_idm+=nada[i].idade; //soma a idade dos machos
					q_mc++; // conta a quantidade de machos
                }
            }
            mIf=t_idf/q_fm; // faz a media de femeas
            mIm=t_idm/q_mc; // faz a media de machos
            printf("A Media De Femeas eh %.2f  e De Machos eh %.2f\n",mIf,mIm);
        }
    }while(x!=0);
}

 

  • Curtir 1
Postado
10 horas atrás, Igor Vargas disse:

A média de idade dos animais por sexo ta vindo zero.

mIf e mIm declarados como int mas na saída estão sendo mostrados como float.

  • Curtir 2
Postado

@Igor Vargas   sim essa variável soma a quantidade de idade de fêmeas:

t_idf += nada[i].idade;

para depois pegar a média, e também estava dando um erro porque estava dividindo por zero , então coloquei uma condição para isso não acontecer,  e a média estava vindo zero por que estava declarada como int mesmo ,passei para float e funcionou bem .   e coloquei para pegar a opção no menu principal sem precisar digitar enter, basta digitar o número da opção que você quer ,      veja como ficou seu código :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct zoo{
    int codigoid;
    char raca[20];
    char dataentrada[20];
    int sexo;
    int idade;
    char nome[20];
};
typedef struct zoo animal;
int cont;

int seila(animal bat[]){
    struct zoo animal[30];
    int x,codg,yy,i,aux[30];
    int teste[30];
    char op;
    do{
        op='s';
        printf("-------------------");
        printf("voce Escolheu Cadastro");
        printf("-------------------\n");
        printf("Nome do Animal: \n");
        fflush(stdin);
        gets(bat[cont].nome);
        printf("Raca do animal:\n");   /*//SE A PESSOA ESCOLHER A opção UM  ELE FAZ ISSO*/
        fflush(stdin);
        gets(bat[cont].raca);
        printf("Codigo do Animal: ");
        do{
            yy=1;
            fflush(stdin);             //verefica se o numero do codigo do animal já esta registrado
            scanf("%d",&codg);
            for(i=0;i<cont;i++){
                if(codg==bat[i].codigoid){ //iguala o o codigo que a pessoa digitou a variavel codg
                    yy=0;
                    printf("Codigo Ja Existente..., Digite Outro. ");
                }
            }
        }while(yy==0); //caso o codigo for igual ele continua no laço
        bat[cont].codigoid=codg; // se a variavel n for igual ele manda ela para essa variavel
        printf("Data de Entrada: DD/MM/AA ");
        fflush(stdin);
        gets(bat[cont].dataentrada);
        printf("Idade do animal:\n");                //faz o cadastro do animal
        fflush(stdin);
        scanf("%d",&bat[cont].idade);
        while(getchar() != '\n');
        printf("Sexo do animal 1 para macho e 2 para femea:\n");
        fflush(stdin);
        scanf("%d",&bat[cont].sexo);
        cont++;
        printf("-----------Animal Cadastrado com sucesso--------------------\n");
        printf("Quer Cadastrar Outro Animal S/N ");
        fflush(stdin);                                //caso queira cadastrar outro animal sem sair
        scanf("%c",&op); //faz a pergunta caso usuario digite op='s' ele continua
    }while(op!='n'); // caso a pessoa digita algo diferente de n ele continua
}

int numerodois(animal tipo[]){
    int x=0,i;
    int escolha;
    do{
        printf("---------------------------------------------------\n");
        printf("-----------voce escolheu Pesquisar-------------------\n");
        printf("---------------------------------------------------\n");
        //while(getchar() != '\n');
        printf("2.1. Pesquisar por raca \n");
        printf("2.2. Pesquisar por sexo \n");
        scanf("%d",&escolha);
        for(i=0;i<cont;i++){                     // mostra a raça eo sexo dos animais
            printf("Nome   : ");
            puts(tipo[i].nome);
            printf("Raca   : ");
            puts(tipo[i].raca);
            printf("Codigo : %d\n",tipo[i].codigoid);
            printf("Sexo   : %d\n",tipo[i].sexo);
            printf("data   : %s\n\n",tipo[i].dataentrada);
        }
    }while (x!=0);
    printf("   Tecle");getch();
}

int escolhatres(animal nada[]){
    int aux[30];
    int x=0,fem=0,mac=0,i;
    float mIf=0,mIm=0,t_idf=0,t_idm=0,q_fm=0,q_mc=0;
    int escolha;
    int total[30];
    int result[30];
    struct zoo animal[30];
    do{
        printf("3.1. Apresentar total de animais por sexo \n");
        printf("3.2. Apresentar a média de idade de animais por sexo \n");
        scanf("%d",&escolha);
        if(escolha == 1){
            for(i=0;i<cont;i++){
                if(nada[i].sexo == 2)fem++;
                    else mac++;
            }
            printf("existe %d femeas e %d machos \n",fem,mac);
        }
        else if (escolha==2){ //apresenta a media de idade por sexo
            for(i=0;i<cont;i++){
                if(nada[i].sexo==2){t_idf+=nada[i].idade;q_fm++;}
                else
                {
                    t_idm+=nada[i].idade;q_mc++;
                }
            }
            if(q_fm>0)mIf=t_idf/q_fm;
            if(q_mc>0)mIm=t_idm/q_mc;
            printf("A Media De Idade De Femeas eh %.2f  e De Machos eh %.2f\n",mIf,mIm);
        }
        printf("Tecle");getch();
    }while(x!=0);
}

void menuprincipal(animal teste[]){
    int i, escolhe;
    int nadasei;
    struct zoo animal[30];
    do{
        printf("\n-------------Bem Vindo ao zoo registro-----------\n");
        printf("------------------------------------------------------\n");
        printf("1. Cadastrar Animal \n");
        printf("2. Pesquisar \n");	            /*//MENU PRINCIPAL*/
        printf("3. Estatisticas \n");
        printf("4. Sair \n");
        //scanf("%d",&escolhe);
        do{
            escolhe=getch()-48;//pega a tecla pressionada sem precisar de enter
        }while(escolhe<1||escolhe>4);//só continua se for de 1 ate 4
        if (escolhe==1){
            seila(teste); 	 /*//FUNÇAO COM PARAMETRO QUANDO você ESCOLHE A opção UM*/
        }
	    else if(escolhe==2){
	        numerodois(teste);
        }
        else if (escolhe==3){
            escolhatres(teste);
        }
    }while(escolhe!=4);
}
int main(){
    struct zoo animal[30];
    menuprincipal(animal);
    return 0;
}

 

  • Curtir 1
Postado

@devair1010 so faltou uma coisinha que n estou conseguindo fazer

 if(escolha==1){
        printf("Digite a raca \n");
        gets(palavra);
			getchar();
		    for(i=0;i<cont;i++){
		     raca=strcmp(palavra, tipo[i].nome);
		     if(raca==0){
			 printf("Nome   : ");
		            puts(tipo[i].nome);
		            printf("Raca   : ");
		            puts(tipo[i].raca);
           return 0;
          
		   } 
		    else if(tipo[i].raca!=palavra){
			  	printf("raca nao encontrada");
			  return 1;	
			 }  	          
			 
			  }
   // essa parte pede pra pesquisar por raça
   //estou comparando as strings e caso for diferente vai printa q n foi cadastrado
   // mas ele nao esta printando o primeiro if 

 

  • Curtir 1
Postado

@Igor Vargas    não sei onde você colocou essa parte do código, então não pude testar, mas pelo jeito é porque você colocou o comando strcmp de forma não convencional :  

getchar();
for(i=0;i<cont;i++){
    raca=strcmp(palavra, tipo[i].nome); <-- esta linha aqui não parece certa
    if(raca==0){

tente colocar assim :

getchar();
for(i=0;i<cont;i++){
    if(strcmp(palavra,tipo[i].nome)==0){

 

Postado

@devair1010 Tentei já por algum motivo ele n reconhece vou te mandar o codigo. Na linha 140 pra baixo.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct zoo{
    int codigoid;
    char raca[20];
    char dataentrada[20];
    int sexo;
    int idade;
    char nome[20];
};
typedef struct zoo animal;
int cont;

escolhatres(animal nada[]);
 seila(animal bat[]);
 numerodois(animal tipo[]);


void menuprincipal(animal teste[]){
int i, escolhe;
int nadasei;
struct zoo animal[30];
do{
    printf("\n-------------Bem Vindo ao zoo registro-----------\n");
    printf("------------------------------------------------------\n");
    printf("1. Cadastrar Animal \n");
    printf("2. Pesquisar \n");	            /*//MENU PRINCIPAL*/
    printf("3. Estatisticas \n");
    printf("4. Sair \n");
    scanf("%d",&escolhe);
    if (escolhe==1){
        seila(teste); 	 /*//FUNÇAO COM PARAMETRO QUANDO você ESCOLHE A opção UM*/
    }
	else if(escolhe==2){
	    numerodois(teste);
    }
    else if (escolhe==3){
    	escolhatres(teste);
    }
    }while(escolhe!=4);

}

int seila(animal bat[]){
    struct zoo animal[30];
    int x,codg,yy,i,aux[30];
    int teste[30];
    char op;
    do{
        op='s'; 
        printf("---------------------------------------------\n");
        printf("--------------voce Escolheu Cadastro-----------\n");
        printf("---------------------------------------------\n");
        printf("Nome do Animal: \n");
        fflush(stdin);
        gets(bat[cont].nome);
        printf("Raca do animal:\n");   /*//SE A PESSOA ESCOLHER A opção UM  ELE FAZ ISSO*/
        fflush(stdin);
        gets(bat[cont].raca);
        printf("Codigo do Animal: ");
        do{
            yy=1;
            fflush(stdin);             //verefica se o numero do codigo do animal já esta registrado
            scanf("%d",&codg);
            for(i=0;i<cont;i++){
                if(codg==bat[i].codigoid){ //iguala o o codigo que a pessoa digitou a variavel codg
                    yy=0;
                    printf("Codigo Ja Existente..., Digite Outro. ");
                }
            }
        }while(yy==0); //caso o codigo for igual ele continua no laço
        bat[cont].codigoid=codg; // se a variavel n for igual ele manda ela para essa variavel 
        printf("Data de Entrada: DD/MM/AA ");
        fflush(stdin);
        gets(bat[cont].dataentrada);
        printf("Idade do animal:\n");                //faz o cadastro do animal
        fflush(stdin);
        scanf("%d",&bat[cont].idade);
        while(getchar() != '\n');
        printf("Sexo do animal 2 para macho e 1 para femea:\n");
        fflush(stdin);
        scanf("%d",&bat[cont].sexo);
        cont++;
        /*verefica(bat);*/
        printf("-----------Animal Cadastrado com sucesso--------------------\n");
        printf("Quer Cadastrar Outro Animal S/N ");
        fflush(stdin);                                //caso queira cadastrar outro animal sem sair 
        scanf("%c",&op); //faz a pergunta caso usuario digite op='s' ele continua
        {
        }
    }while(op!='n'); // caso a pessoa digita algo diferente de n ele continua
}

int numerodois(animal tipo[]){

    int x=0,i=0;
    int escolha;
    int escolhe;
    char palavra[20];
    int raca=0;
    do{
        printf("---------------------------------------------------\n");
        printf("-----------voce escolheu Pesquisar-------------------\n");
        printf("---------------------------------------------------\n");
        while(getchar() != '\n');
        printf("2.1. Pesquisar por raca \n");
        printf("2.2. Pesquisar por sexo \n");
        scanf("%d",&escolha);
        if(escolha==1){
        printf("Digite a raca \n");
        gets(palavra);
			getchar();
		    for(i=0;i<cont;i++){
		     raca=strcmp(palavra, tipo[i].nome);
		     if(raca==0){
			 printf("Nome   : ");
		            puts(tipo[i].nome);
		            printf("Raca   : ");
		            puts(tipo[i].raca);
           return 0;
          
		   } 
		    else if(tipo[i].raca!=palavra){
			  	printf("raca nao encontrada");
			  return 1;	
			 }  	          
			 
			  }
			  
			  x=0;
			
		} else {
         printf("Escolha o sexo:\n");
         printf("1. Para Femea:\n");
         printf("2. Para Macho:\n");
         
         scanf("%d",&escolhe);
         if(escolhe==1){  
		  for(i=0;i<cont;i++){
		  	if(tipo[i].sexo==1){
        	printf("Nome: ");
            puts(tipo[i].nome);
          
         
		  } 
			}  
			x=0;
		 }	
		 
		 else{
		   for(i=0;i<cont;i++){
		   		 if(tipo[i].sexo==2){
		 	printf("Nome   : ");
            puts(tipo[i].nome);
           
           
			
		 }
		 
			 }	
		 }
        x=0;
		}
    }while (x!=0);
	
}
		


int escolhatres(animal nada[]){
    int aux[30];
    int x=0,fem=0,mac=0;
    int escolha;
	float mIf=0,mIm=0,t_idf=0,t_idm=0,q_fm=0,q_mc=0;
    int total[30];
    int result[30];
    struct zoo animal[30];
    int i;
    
    do{
    	printf("----------------------------------------------------------\n");
    	printf("-----------------voce escolheu estatistica----------------\n");
    	printf("----------------------------------------------------------\n");
        printf("3.1. Apresentar total de animais por sexo \n");
        printf("3.2. Apresentar a média de idade de animais por sexo \n");
        scanf("%d",&escolha);
        if(escolha == 1){       // se a escolha for ==1
            for(i=0;i<cont;i++){
                if(nada[i].sexo == 1)fem++; //contador do sexo femenino
                    else mac++; //contador do masculino
            }
            printf("existe %d femeas e %d machos \n",fem,mac);
        }
        else if (escolha==2){ //apresenta a media de idade por sexo
            for(i=0;i<cont;i++){
                if(nada[i].sexo==1){ //se o numero digitado for 1
				t_idf+=nada[i].idade; // soma a idade das femeas
				q_fm++; //vai contar a quantidade de femeas
				}
                else
                {
                    t_idm+=nada[i].idade; //soma a idade dos machos
					q_mc++; // conta a quantidade de machos
                }
            }
             
            if(q_fm>0)mIf=t_idf/q_fm; // faz a media de femeas
            if(q_mc>0)mIm=t_idm/q_mc; // faz a media de machos
            printf("A Media De idade para as  Femeas eh %.2f  e De Machos eh %.2f \n",mIf,mIm);
        }
    }while(x!=0);
}

main(){
    struct zoo animal[30];

    menuprincipal(animal);

}

 

  • Curtir 1
Postado

@Igor Vargas    não estava funcionando porque estava passando direto pelo gets , precisava colocar um comando para limpar o buffer do teclado, usei fflush ( stdin )  que funciona na maioria dos casos mas não em todos,  e o strcmp também não funciona daquele jeito, é melhor usar da forma normal como coloquei, então seu código ficou assim :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct zoo{
    int codigoid;
    char raca[20];
    char dataentrada[20];
    int sexo;
    int idade;
    char nome[20];
};
typedef struct zoo animal;
int cont;

int escolhatres(animal nada[]);
int seila(animal bat[]);
int numerodois(animal tipo[]);


void menuprincipal(animal teste[]){
int i, escolhe;
int nadasei;
struct zoo animal[30];
do{
    printf("\n-------------Bem Vindo ao zoo registro-----------\n");
    printf("------------------------------------------------------\n");
    printf("1. Cadastrar Animal \n");
    printf("2. Pesquisar \n");	            /*//MENU PRINCIPAL*/
    printf("3. Estatisticas \n");
    printf("4. Sair \n");
    scanf("%d",&escolhe);
    if (escolhe==1){
        seila(teste); 	 /*//FUNÇAO COM PARAMETRO QUANDO você ESCOLHE A opção UM*/
    }
	else if(escolhe==2){
	    numerodois(teste);
    }
    else if (escolhe==3){
    	escolhatres(teste);
    }
    }while(escolhe!=4);

}

int seila(animal bat[]){
    struct zoo animal[30];
    int x,codg,yy,i,aux[30];
    int teste[30];
    char op;
    do{
        op='s';
        printf("---------------------------------------------\n");
        printf("--------------voce Escolheu Cadastro-----------\n");
        printf("---------------------------------------------\n");
        printf("Nome do Animal: \n");
        fflush(stdin);
        gets(bat[cont].nome);
        printf("Raca do animal:\n");   /*//SE A PESSOA ESCOLHER A opção UM  ELE FAZ ISSO*/
        fflush(stdin);
        gets(bat[cont].raca);
        printf("Codigo do Animal: ");
        do{
            yy=1;
            fflush(stdin);             //verefica se o numero do codigo do animal já esta registrado
            scanf("%d",&codg);
            for(i=0;i<cont;i++){
                if(codg==bat[i].codigoid){ //iguala o o codigo que a pessoa digitou a variavel codg
                    yy=0;
                    printf("Codigo Ja Existente..., Digite Outro. ");
                }
            }
        }while(yy==0); //caso o codigo for igual ele continua no laço
        bat[cont].codigoid=codg; // se a variavel n for igual ele manda ela para essa variavel
        printf("Data de Entrada: DD/MM/AA ");
        fflush(stdin);
        gets(bat[cont].dataentrada);
        printf("Idade do animal:\n");                //faz o cadastro do animal
        fflush(stdin);
        scanf("%d",&bat[cont].idade);
        while(getchar() != '\n');
        printf("Sexo do animal 2 para macho e 1 para femea:\n");
        fflush(stdin);
        scanf("%d",&bat[cont].sexo);
        cont++;
        /*verefica(bat);*/
        printf("-----------Animal Cadastrado com sucesso--------------------\n");
        printf("Quer Cadastrar Outro Animal S/N ");
        fflush(stdin);                                //caso queira cadastrar outro animal sem sair
        scanf("%c",&op); //faz a pergunta caso usuario digite op='s' ele continua
        {
        }
    }while(op!='n'); // caso a pessoa digita algo diferente de n ele continua
}

int numerodois(animal tipo[]){

    int x=0,i=0,flag=0;
    int escolha;
    int escolhe;
    char palavra[20];
    do{
        printf("---------------------------------------------------\n");
        printf("-----------voce escolheu Pesquisar-------------------\n");
        printf("---------------------------------------------------\n");
        while(getchar() != '\n');
        printf("2.1. Pesquisar por raca \n");
        printf("2.2. Pesquisar por sexo \n");
        scanf("%d",&escolha);
        if(escolha==1){
            printf("Digite a raca \n");
            fflush(stdin);/* faltava esse comando aqui */
            gets(palavra);
            /*getchar();   pra que este comando aqui ?  não precisa */
		    for(i=0;i<cont;i++){
                if(strcmp(palavra,tipo[i].raca)==0){/*daquela forma não funciona */
                    printf("\n");
                    flag=1;
                    printf("Nome   : ");
                    puts(tipo[i].nome);
                    printf("Raca   : ");
                    puts(tipo[i].raca);
                    return 0;
                }
            }
            if(flag==0){
                printf("raca nao encontrada");
                return 1;
            }
            x=0;
        }
        else{
            printf("Escolha o sexo:\n");
            printf("1. Para Femea:\n");
            printf("2. Para Macho:\n");
            scanf("%d",&escolhe);
            if(escolhe==1){
                for(i=0;i<cont;i++){
                    if(tipo[i].sexo==1){
                        printf("Nome: ");
                        puts(tipo[i].nome);
                    }
                }
                x=0;
            }
            else{
                for(i=0;i<cont;i++){
                    if(tipo[i].sexo==2){
                        printf("Nome   : ");
                        puts(tipo[i].nome);
                    }
                }
            }
            x=0;
        }
    }while (x!=0);
}

int escolhatres(animal nada[]){
    int aux[30];
    int x=0,fem=0,mac=0;
    int escolha;
	float mIf=0,mIm=0,t_idf=0,t_idm=0,q_fm=0,q_mc=0;
    int total[30];
    int result[30];
    struct zoo animal[30];
    int i;

    do{
    	printf("----------------------------------------------------------\n");
    	printf("-----------------voce escolheu estatistica----------------\n");
    	printf("----------------------------------------------------------\n");
        printf("3.1. Apresentar total de animais por sexo \n");
        printf("3.2. Apresentar a média de idade de animais por sexo \n");
        scanf("%d",&escolha);
        if(escolha == 1){       // se a escolha for ==1
            for(i=0;i<cont;i++){
                if(nada[i].sexo == 1)fem++; //contador do sexo femenino
                    else mac++; //contador do masculino
            }
            printf("existe %d femeas e %d machos \n",fem,mac);
        }
        else if (escolha==2){ //apresenta a media de idade por sexo
            for(i=0;i<cont;i++){
                if(nada[i].sexo==1){ //se o numero digitado for 1
				t_idf+=nada[i].idade; // soma a idade das femeas
				q_fm++; //vai contar a quantidade de femeas
				}
                else
                {
                    t_idm+=nada[i].idade; //soma a idade dos machos
					q_mc++; // conta a quantidade de machos
                }
            }

            if(q_fm>0)mIf=t_idf/q_fm; // faz a media de femeas
            if(q_mc>0)mIm=t_idm/q_mc; // faz a media de machos
            printf("A Media De idade para as  Femeas eh %.2f  e De Machos eh %.2f \n",mIf,mIm);
        }
    }while(x!=0);
}

int main(){
    struct zoo animal[30];

    menuprincipal(animal);

}

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!