Ir para o conteúdo
jett

Armazenando estrutura em vetor

Mensagens Recomendadas

jett

Olá, estou armazenando uma estrutura em um vetor em modo crescente, mas estou tendo alguns erros. Como na hora de checar o vetor está vazio. O que devo fazer?

#include <stdio.h>
#include <stdlib.h>

typedef struct cor{
   int quantidade;
   char nomecor[20];
   char letra [26];
}cor;

cor *preenche(cor *nova){
   int cont;
   printf("Qua o nome da cor: ");
   fflush(stdin);
   fgets(nova->nomecor, 20, stdin);
   printf("Quantidade de bolas desta cor: ");
   scanf("%d", &(nova->quantidade));
   for(cont=0; cont<nova->quantidade; cont++){
       printf("Digite uma letra");
       scanf("%c", &nova->letra[cont]);
   }
   return nova;
}

cor *inserir(cor *C, int k, int n){
   int cont, aux=n;
   while(aux>0){
       cor *nova = (cor*)malloc(sizeof(cor));
       nova = preenche(nova);
       if(C == NULL){
           C[0] = nova;
       }else{
           for(cont = 0; cont<k; cont++){
               if(C[cont]->quantidade < nova->quantidade){
                   C[continue+1] = C[cont];
                   C[cont] = nova;
               }
           }

       }
       aux = aux - (nova->quantidade);
   }
   return C;
}

int main(){
   int n, k;

   printf("Digite o numero de bolinhas que o jogo tera: ");
   scanf("%d", &n);

   printf("Quantas cores diferentes o seu jogo tera: ");
   scanf("%d", &k);

   cor C[k];

   C=inserir(C, k, n);

   return 0;
}

Editado por pmg
Falta LP no GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Antes de mais nada, aumenta os warnings do teu compilador e nao te des por satisfeito com compilacoes que produzem avisos.

Resolve todos os warnings antes sequer de correr o programa.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jett

Eu mudei todo o meu código, agora estou tendo problemas ao pegar as letras que cada cor de bola terá:

#include <stdio.h>
#include <stdlib.h>

typedef struct cor
{
   char nomecor[20];
   int quantidade;
   char letra[26];
   struct cor *prox;
} cor;

cor *inserir(cor *C, int n, int k)
{
   int j = n, i = 0, cont;

   while(i<k && j>0)
   {
       cor *nova = (cor*)calloc(1,sizeof(cor));
       printf("Digite o nome da cor: ");
       fflush(stdin);
       fgets(nova->nomecor, 20, stdin);
       printf("Digite a quantidade de bolas que terao esta cor: ");
       scanf("%d", &nova->quantidade);
       if(nova->quantidade > n)
       {
           printf("Ultrapassou!\n");
           break;
       }
       for(cont = 0; cont<nova->quantidade; cont++)
       {
           printf("Digite uma letra: ");
           scanf("%c", &nova->letra[cont]);
       }
       j = j - (nova->quantidade);
       i++;

       if(C == NULL)
       {
           C = nova;
           nova->prox = NULL;
           //return C;
       }
       else
       {
           cor *anterior = NULL;
           cor *aux = C;

           if(C->prox == NULL)
           {
               nova->prox = C;
               C = nova;
           }

           while(aux!= NULL)
           {


               if(aux->quantidade < nova->quantidade)
               {
                   anterior = aux;
                   aux = aux->prox;
               }
               if(aux->quantidade > nova->quantidade)
               {
                   anterior->prox = nova;
                   nova->prox = aux;
               }


           }

           if(aux == NULL)
           {
               anterior->prox = nova;
               //return C;
           }
       }

   }
   return C;
}

int main()
{
   int n, k;
   cor *C = NULL;

   printf("E ai carinha, quantas bolinhas serao? ");
   scanf("%d", &n);

   printf("Mas e aí, quantas cores diferentes esse teu jogo vai ter? ");
   scanf("%d", &k);

   C = inserir(C, n, k);

   return 0;
}

Editado por pmg
Falta LP no GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jett

Então, estou criando um jogo em que eu tenho 'n' numero de bolas e posso ter 'k' cores no jogo. Ou seja, posso ter um total de 6 bolas no jogo, e 3 amarelas e 3 verdes.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jett

O meu problema está sendo na hora de ler uma letra por vez para armazenar nessa estrutura

typedef struct cor
{
   char nomecor[20];
   int quantidade;
   char letra[26];
   struct cor *prox;
} cor;

porque eu quero um vetor de letras e não uma string, porque pelo visto esse meu char letra[26]; está sendo tratado como string. O que devo fazer?

Editado por pmg
formatacao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.