Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda - URGENTE C


Edson_jr27

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0

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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...