Quer dizer que vou ter que usar alocação dinâmica para todos os itens da lista no caso:
Nome
Endereço
Tipo Comida
Nota
Quer dizer que vou ter que usar alocação dinâmica para todos os itens da lista no caso:
Nome
Endereço
Tipo Comida
Nota
[quote=paloma]Quer dizer que vou ter que usar alocação dinâmica para todos os itens da lista no caso:[/quote]Não, você não já definiu que eles são vetores de char de tamanho fixo? Não precisa fazer alocação dinâmica. Também não seria absolutamente necessário para outros nós:
No primeiro;
No segundo;
printf("%s", primeiro.nome);
primeiro->proximoNo = segundo;
printf("%s", primeiro->segundo.nome);
Não precisa. Quando você fizer malloc da estrutura, os tipos dentro dela (nome, endereço, etc) já são alocados também. Você só vai ter que ir fazendo malloc’s para cada item. É por isso que eu acho mais fácil usar um vetorzão mesmo.
Geralmente, quando se usa listas ligadas em C, você tem um ponteiro para o primeiro elemento da lista e um outro que seria o “elemento atual”, que serve para você ir percorrendo… é meio difícil explicar aqui.
Paloma, acho que você esqueceu de responder… Era você que, antes do problema com o GUJ, usava o usuário pernambuco? Só curiosidade mesmo…
Meu nick mudou depois do problema aqui no guj!
Eu já criei esse ponteiro aqui!
struct Lista *proxLista;
Olha eu tô toda enrolada com isso, eu vou dar uma pesquisada, ler algum material e depois quando compreender melhor, as dúvidas eu posto aqui.
Valeu pessoal!!
Carambra continua dando erro, agora o problema é no main
[code]#include <stdio.h>
#include <stdlib.h>
struct Lista{
char nome[51];
char Tcomida[31];
float nota;
char endereco[61];
Lista *prox;
}typedef item;
int main(void) // Erro: In function `int main()’:
{
int i, qtd;
printf ("\t\tCADASTRO DE RESTAURANTES\n\n");
printf (“Entre com a quantidade de restaurantes que deseja cadastrar: “);
scanf (”%d”, &qtd);
printf ("\n");
for (i = 0; i < qtd; i++)
{
printf ("Entre com o nome do Restaurante %d: ", i+1);
fgets (item.nome,51,stdin);
printf ("Entre com o Endereco: ");
fgets (item.endereco,61,stdin);
printf ("Entre com o tipo de comida que deseja: ");
fgets (item.Tcomida,31,stdin);
do{
printf ("Entre com uma nota de avaliacao para a cozinha [0,5]: ");
scanf ("%f",&item.nota);
} while (item.nota<0||item.nota>5);
printf ("\n");
}
system (“PAUSE”);
return (0);
}
//FUNÇÃO CRIA LISTA VAZIA
item* lst_cria (void)
{
return NULL;
}
[/code]
Você declarou errado sua estrutura. Veja as mensagens anteriores para saber como é a sintaxe.
Além disso, mesmo que estivesse certa, você esqueceu de declarar a variável da estrutura. As mensagens anteriores falam como fazer isso também.
Boa sorte
Ñ estou identificando onde está o erro, eu declarei item que é a variável da struct :roll: :oops:
[code]struct Lista{
char nome[51];
char Tcomida[31];
float nota;
char endereco[61];
Lista *prox;
}typedef item;
[/code]
O typedef é no começo:
typedef struct Lista{
char nome[51];
char Tcomida[31];
float nota;
char endereco[61];
struct Lista *prox;
} item;
Mas isso é no caso de estar trabalhando com listas, pq já fiz algums exercícios de strcut e ñ colocava no começo!! :roll:
Uma outra opção, que é a que você pode estar tentando usar é essa:
struct Lista{
char nome[51];
char Tcomida[31];
float nota;
char endereco[61];
struct Lista *prox;
};
typedef struct Lista item;
Eu já tentei assim também, mas dá o seguinte erro:
[code]struct Lista{
char nome[51];
char Tcomida[31];
float nota;
char endereco[61];
Lista *prox;
}typedef struct Lista item; erro:two or more data types in declaration of `item’
[/code]
O erro era por conta da vírgula que é antes do typedef.
Agora tá dando erro no main
int main()
O erros são esses:
1 - expected init-declarator before “int”
2 -expected ,' or
;’ before “int”
Acho que é alguma coisa com esse fgets também, pq tá dando erro em todas as linhas onde ele está!
o problema deve ser essa variavel sua
stdin
nao está declarada
Já achou o erro?
Você não declarou a variável item. Só que você vai ter que mudar de nome, já que, com seu typedef, item agora é um tipo (como int, double e struct Lista)
Simplesmente declare, dentro da main a variável:
item umItem;
e use-a onde aparece o item, por exemplo:
fgets (item.nome,51,stdin);
vira
fgets (umItem.nome,51,stdin);