Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

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.