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

jett

Lista encadeada

Mensagens Recomendadas

jett

Olá pessoal,

Estou fazendo um programa que aloca 'n' número de bolas e pede para o usuário preencher cada bola com uma letra e uma cor. Mas o meu programa está dando erro, vocês poderiam me ajudar?

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

typedef struct bola{
char cor[10];
char letra;
struct bola *prox;
}bola;

bola *preencher(bola *L, int n){
bola *aux=L;
int cont;

for(cont=0; cont<n; cont++){
printf("Digite a cor da bolinha: ");
fflush(stdin);
fgets(aux->cor,10,stdin);
printf("Digite a letra da bolinha: ");
fflush(stdin);
scanf(aux->cor,1,stdin);
aux=aux->prox;
}

return L;
}

void imprime(bola *L, int n){
int cont;

for(cont = 0; cont<n; cont++){
L=L->prox;
printf("Cor da bola: %s\n\n",L->cor);
printf("Letra da bola: %c\n\n", L->letra);
L=L->prox;
}

}

int main(){
int n, cont;


printf("Digite o numero de bolas: ");
scanf("%d",&n); //número de bolas

bola *L = (bola*)calloc(n,sizeof(bola));//aloca uma lista de n bolas

L = preencher(L,n);
imprime(L, n);
return 0;
}

Editado por pmg
Falta LP no GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Na função preencher():

1) remove os fflush(stdin). Não estão lá a fazer nada (acho que estavas a pensar em fflush(stdout) mas saiu-te ao contrário), além de que o seu uso não é aconselhado por fazer coisas diferentes em sistemas diferentes (ou até ser "comportamento não definido").

2) O scanf() para a letra da bolinha está mal. O que lá está é o scanf() com aspecto de fgets(). Ou queres uma coisa ou queres outra --- o meu conselho é usares fgets() para uma variável temporário e depois meteres a letra na estrutura. Além disso estás a pedir a letra e a meter o input em aux->cor.

Na função main() tens uma instrução e um comentário desfasados

bola *L = (bola*)calloc(n,sizeof(bola));//aloca uma lista de n bolas

Isto não aloca uma lista de n bolas, Isto aloca espaço (consecutivo) para n bolas (um array). Usando arrays (a solução mais prática, mas não deve ser o que o professor quer) não precisas do ponteiro dentro da estrutura.


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

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.