Olá, sou iniciante em programação em c e no momento estou aprendendo sobre fila em C. Fiz um programa e tá dando erro. Se alguém puder me ajudar fico muito grato.
Tenho que: Implementar um sistema que utilize uma fila para controlar a entrada e saída de ordens de produção (código,descrição da peça a produzir, quantidade a produzir). Utilizar uma struct para representar a ordem de produção. Deve ser possível inserir, retirar e listar as ordens da fila. A fila deve ser implementada sobre um vetor de 10 elementos .
Os erros que estão acusando é em void inserir e diz.
#include <stdio.h>
#include <stdlib.h>
#define TAMANHO 5
struct fila
{
int numeroelementos;
int inicio;
float elementos[TAMANHO];
char descricao[20];
int quantidade;
};
typedef struct fila Fila;
Fila *criarFila()
{
Fila *f= (Fila*) malloc(sizeof(Fila));
f->numeroelementos = 0;
f->inicio = 0;
return f;
}
void inserir(Fila *f, float valor,char nam[20],int qtd)
{
if(f->numeroelementos == TAMANHO)
{
printf("Fila cheia.\n");
return;
}
int fim = (f->inicio + f->numeroelementos) % TAMANHO;
f->elementos[fim] = valor;
f->descricao[fim]= nam;
//aqui dá o erro de f->descricao[fim]= nam;
//Warning: assignment makes integer from pointer without a cast [-Wint-conversion]
f->quantidade[fim]=qtd;
//aqui da o erro: subscripted value is neither array nor pointer nor vector
f->numeroelementos++;
}
void retirar(Fila *f)
{
float valor;
if(f->numeroelementos == 0)
{
printf("fila vazia.\n");
return;
} //retira o elemento da fila
valor =f->elementos[f->inicio];
f->inicio = (f->inicio + 1) % TAMANHO;
f->numeroelementos--;
printf("Elemento retirado = %.0f\n",valor);
}
void destruirFila(Fila *f)
{
free(f);
}
void mostrarFila(Fila *f)
{
printf("Conteúdo da fila\n");
int i;
for(i = 0; i < f->numeroelementos; i++)
printf("%0.f\n",f->elementos[(f->inicio + i) % TAMANHO]);
printf("\n");
}
int main()
{
Fila *fila=criarFila();
int opcao = -1;
float item;
int qtd;
char nome[20];
while(opcao != 0)
{
system("cls");
printf("Escolha a opção desejada: \n");
printf("1. Enfilera\n");
printf("2. Retira \n");
printf("3. Mostra a fila\n");
printf("0. Fim\n");
scanf("%d", &opcao);
switch (opcao)
{
case 1 : //insere
printf("Digite o codigo: ");
scanf("%f", &item);
printf("Digite a descricao da peca: ");
fflush(stdin);
gets(nome);
printf("Digite a quantidade de pecas: ");
scanf("%d", &qtd);
inserir(fila,item,nome,qtd);
break;
case 2 : //retira
retirar(fila);
break;
case 3 : //mostra
mostrarFila(fila);
break;
}//switch
printf("\n");
system("pause");
}
destruirFila(fila);
}
Pergunta
Samuelv
Olá, sou iniciante em programação em c e no momento estou aprendendo sobre fila em C. Fiz um programa e tá dando erro. Se alguém puder me ajudar fico muito grato.
Tenho que: Implementar um sistema que utilize uma fila para controlar a entrada e saída de ordens de produção (código,descrição da peça a produzir, quantidade a produzir). Utilizar uma struct para representar a ordem de produção. Deve ser possível inserir, retirar e listar as ordens da fila. A fila deve ser implementada sobre um vetor de 10 elementos .
Os erros que estão acusando é em void inserir e diz.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.