Ir ao conteúdo
  • Cadastre-se

C Colocando uma funçao com paremetro dentro de uma funçao


Igor Vargas

Posts recomendados

#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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

  

@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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

 

 

@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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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){

 

Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

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