Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

jett

Armazenando estrutura em vetor

Recommended Posts

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;
}

Edited by pmg
Falta LP no GeSHi

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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;
}

Edited by pmg
Falta LP no GeSHi

Share this post


Link to post
Share on other sites
HappyHippyHippo

uma questão :

que relação existe entre quantidade de bolas e quantidade de cores ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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?

Edited by pmg
formatacao

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.