pet_gf
(usa Ubuntu)
Enviado em 24/04/2009 - 16:11h
Faça um algoritmo para simular a fila de atendimento a um caixa de supermercado o mesmo devera simular a fila para pagamento das mercadorias. Sabendo que cada cliente compra ate 20 produtos, utilize o algoritmo de empilhamento dos produtos para completar o ciclo de atendimento. Simular o atendimento de 10 clientes.
consegui um exemplo e fiz, mais naum ta compilando e eu naum sei como fazer pra ficar com 10 cliente e vinte produtdos. quem puder me ajudar AGRADEÇO!
#include <stdio.h>
#include <string.h>
struct supermercado
{
char nome[50];
int n1;
}*m2,*m3;
int i=0,y=0;
typedef struct supermercado fila;
void menu1(void);
void menu(void);
int insere(fila *emp, int c);
int retira(int c);
void status(int c);
void imptopo(fila *imp, int c);
void lista(fila *list, int c);
int cria(void);
int libera(void);
void show(fila *p);
int main()
{
fila produto[10];
int j=0,op;
for(i=0;i<10;i++)
{
produto[i].n1=0;
produto[i].nome[0]='{TTEXTO}';
}
i=0;
for(;;)
{
menu();
scanf("%i",&op);
system("clear");
switch(op)
{
case 0:
exit(0);
break;
case 1:
cria();
break;
case 2:
i=insere(produto,i);
break;
case 3:
i=retira(i);
break;
case 4:
status(i);
break;
case 5:
lista(produto,i-1);
break;
case 6:
imptopo(produto,i-1);
break;
case 7:
libera();
break;
default:
printf("comando (%i) desconhecido\n",op);
sleep(4);
break;
}
}
};
void menu1(void)
{
system("clear");
printf("*******************MENU*******************\n\n");
printf("1 - retira 1 dado\n");
printf("2 - retira 2 dados\n");
printf("3 - retira n dados\n");
printf("4 - retira todos os dados da fila\n");
printf("\n*****************************************\n");
printf("Digite sua opcao: ");
};
void menu(void)
{
system("clear");
printf("*******************MENU*********************\n\n");
printf("0 - sai do programa\n");
printf("1 - cria uma fila\n");
printf("2 - insere um produto na fila\n");
printf("3 - chama menu de retira\n");
printf("4 - verifica se a fila esta vazia\n");
printf("5 - lista o conteudo da fila\n");
printf("6 - imprime o ultimo elemento da fila\n");
printf("7 - libera espaco de memoria alocado\n");
printf("\n********************************************\n");
printf("Digite sua opcao: ");
};
int insere(fila *emp, int c)
{
int a;
int b=0;
for(b=0, b<3, b++){
print("Cliente: %d",b+1);
if(c<=3)
{
getchar();
for(a=c;a>=0;a--)
{
strcpy(emp[a+1].nome,emp[a].nome);
emp[a+1].n1=emp[a].n1;
}
printf("Digite o nome do produto\n");
fgets(emp[0].nome,50,stdin);
printf("Digite o valor do produto:\n");
scanf("%i",&emp[0].n1);
c++;
}
else
{
printf("A fila esta cheia!!!\n");
sleep(4);
}
return c;
}
};
int retira(int c)
{
int k,a;
if(c>0)
{
menu1();
scanf("%i",&k);
switch(k)
{
case 1:
c--;
return c;
case 2:
if(c>=2)
c=c-2;
else
{
printf("Impossivel retirar!!!\n");
sleep(3);
}
return c;
case 3:
system("clear");
printf("Digite a quantidade de produtos a ser retirados: ");
scanf("%i",&a);
if(a>c)
{
printf("\n\nImpossivel retirar!!!\n");
sleep(4);
}
else
c=c-a;
return c;
case 4:
c=0;
return c;
default:
return c;
}
}
else
{
printf("Verifique se a fila foi criada ou se ela esta vazia!!\n");
sleep(4);
}
return c;
};
void status(int c)
{
if(c==0)
printf("A fila esta vazia\n");
else
printf("A fila contem dados\n");
sleep(4);
};
void imptopo(fila *imp, int c)
{
if(c>=0)
{
printf("Ultimo produto da fila e:\n\n");
printf("Nome produto: %s\n",imp[c].nome);
printf("Valor: %i\n",imp[c].n1);
}
else
printf("Verifique se a fila foi criada ou se ela esta vazia!!\n");
sleep(4);
};
void lista(fila *list, int c)
{
int m=0;
while(m<=c)
{
printf("Nome Produto: %s\n",list[m].nome);
printf("Valor: %i\n",list[m].n1);
m++;
}
if(c==-1)
printf("Verifique se a fila foi criada ou se ela esta vazia!!\n");
sleep(4);
};
int cria(void)
{
m3=(fila *) calloc(10,sizeof (fila));
system("clear");
printf("Foi alocado um espaco em memoria para outra fila\n");
sleep(4);
return 0;
};
int libera(void)
{
free(m3);
system("clear");
printf("Foi liberado da memoria o espaco de m3\n");
sleep(4);
return 0;
};
void show(fila *p)
{
int c;
for(c=0;c<i;c++)
{
printf("%s\n",p->nome);
printf("%i\n",p->n1);
p++;
sleep(4);
}
};