Edson_jr27 Postado Fevereiro 23, 2010 Denunciar Share Postado Fevereiro 23, 2010 Boa tarde.Preciso criar uma estrutura em C que vai capturar dados de animais (raca, cor e idade). Após a digitação dos dados o programa precisa exibir quantos animais foram cadastrados de cada raça.Edson Junior. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GABRIEL_LOGAN Postado Fevereiro 23, 2010 Denunciar Share Postado Fevereiro 23, 2010 Cara,Fiz algo semelhante ao que você quer (Ele lê e grava na memória [opção=0] e imprime [opção=1] e sai [opção<>0 ou 1]) Pra ficar igual ao que você quer basta fazer uma comparaçãozinha na raça de cada animal (lembrando que comparação de strings você usa comparação caracter por caracter e não == , existe uma biblioteca que faz isso facinho ). Tentei usar um pouco de ponteiros e alocação de memória pra te forçar a se virar e entender pra poder modificar o programa que já está quase do jeito que você quer pro jeito que você quer.#include <stdio.h> #include <stdlib.h> #define MAX 15 //================================== struct animal{ int cor; char *raca; int idade; }; struct animais{ struct animal *todos_animais; int qtd_animais; }; //================================== int main(int argc, char *argv[]) { struct animais bixos; int i=0; int ret=3; int k; bixos.qtd_animais=0; (bixos.todos_animais)=(struct animal *)realloc((bixos.todos_animais),(bixos.qtd_animais)*sizeof(struct animal)); while(i!=-1) { printf("==========================================================\n"); printf("Digite 0 para catalogar 1 para imprimir e ? para sair...\n"); printf("==========================================================\n\n"); printf("Opcao: "); scanf("%d",&ret); if(ret==0) { i++; bixos.qtd_animais=i; (bixos.todos_animais)=(struct animal *)realloc((bixos.todos_animais),(bixos.qtd_animais)*sizeof(struct animal)); printf("-------------------------------------------\n"); printf("Digite a cor: (inteiro) "); scanf("%d",&(((bixos.todos_animais)+((i-1)*sizeof(struct animal*)))->cor)); printf("Digite a idade: (inteiro) "); scanf("%d",&(((bixos.todos_animais)+((i-1)*sizeof(struct animal*)))->idade)); printf("Digite a raca: (string MAX 15 char) "); (((bixos.todos_animais)+((i-1)*sizeof(struct animal*)))->raca)=(char*)malloc(MAX*sizeof(char)); scanf("%s",(((bixos.todos_animais)+((i-1)*sizeof(struct animal*)))->raca)); printf("-------------------------------------------\n\n"); } else if(ret==1) { if(bixos.qtd_animais==0) printf("Nenhum animal...\n"); else if(bixos.qtd_animais>0) for(k=0;k<bixos.qtd_animais;k++) { printf("\n\tAnimal[%d]\n",k); printf(">> cor: %d\n",(((bixos.todos_animais)+(k*sizeof(struct animal*)))->cor)); printf(">> idade: %d\n",(((bixos.todos_animais)+(k*sizeof(struct animal*)))->idade)); printf(">> raca: %s\n\n",(((bixos.todos_animais)+(k*sizeof(struct animal*)))->raca)); } } else i=-1; } system("PAUSE"); return 0; }falou Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Edson_jr27
Boa tarde.
Preciso criar uma estrutura em C que vai capturar dados de animais (raca, cor e idade). Após a digitação dos dados o programa precisa exibir quantos animais foram cadastrados de cada raça.
Edson Junior.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.