Как ввести структуру в FIFO?
У меня есть свой .c пример FIFO и моя структура
То, что я хочу сделать, - это FIFO, который управляет моей структурой как частью информации, например. При получении заказа в нем указывается клиент и количество пицц и как только заказ будет снят он ставится в очередь обслуживания
Что я уже пробовал:
У меня есть два моих кода и я добавляю свои коды
//FIFO #include <stdio.h> #include <stdlib.h> #define MAX 10 struct Cola { int p, u; float a[MAX]; }; void iniciaCola(struct Cola *c); int agrega(struct Cola *c, float dato); int retira(struct Cola *c, float *info); void imprime(struct Cola *c); int menu(); void procesaOpcion(int opcion, struct Cola *cola); int main() { struct Cola unaCola; int opcion,r; float dato; iniciaCola(&unaCola); do { opcion = menu(); if (opcion == 1) { printf("Numero a agregar a la cola?"); scanf("%f",&dato); fflush(stdin); r = agrega(&unaCola,dato); if (r==0) printf("no fue posible agregar el numero [%f]\n",dato); else printf(">>> Agregué: (%.2f)\n",dato); } else if (opcion == 2) { r = retira(&unaCola, &dato); if (r==0) printf("No se retiro ningun numero\n"); else printf("<<<< Retiré: (%.2f)\n",dato); } imprime(&unaCola); } while (opcion != 3); return 0; } int menu() { int op,r; do { printf("\n\n-------- MENU ---------------\n"); printf("[1] Agregar un numero\n"); printf("[2] Retirar un numero\n"); printf("[3] Terminar\n"); printf("Opcion? "); r = scanf("%d",&op); fflush(stdin); if (r==0) printf("Error en el formato\n"); } while(r==0 || op<1 || op>3); return op; } void iniciaCola(struct Cola *c) { c->p = -1; c->u = -1; } int agrega(struct Cola *c, float dato) { int k,j; if (c->p == -1) { c->p = c->u = 0; c->a[0] = dato; return 1; } if (c->u==MAX-1) { /***** se alcanzo el ultimo elemento del arreglo revisar si c->p!=0 entonces hay espacio*****/ if (c->p!=0){ /*** compacta el arreglo ***/ j=0; for(k=c->p; k<=c->u; k++){ c->a[j]=c->a[k]; j=j+1; } c->p=0; c->u=j-1; } else return 0; } c->u = c->u + 1; c->a[c->u] = dato; return 1; } int retira(struct Cola *c, float *info) { if (c->p == -1) return 0; *info = c->a[c->p]; c->p = c->p+1; if (c->p > c->u) { c->u = -1; c->p = -1; } return 1; } void imprime(struct Cola *c) { int k; printf("Contenido de la cola: "); if (c->p == -1) { printf("Cola vacia\n"); return; } for (k=c->p; k<=c->u; k++) printf("%.2f ",c->a[k]); printf("\n"); } //struct #include<stdio.h> #include<windows.h> struct ordenPizza{ char cliente[200]; char nombre[200]; int cantidad; int precioUnitario; int monto; }; void leerOrdenPizza(struct ordenPizza *unaOrden); void imprimiOrdenPizza(struct ordenPizza *unaOrden); int monto(struct ordenPizza *unaOrden); int main() { struct ordenPizza *o; o=malloc(sizeof(struct ordenPizza)); leerOrdenPizza(o); monto(o); imprimiOrdenPizza(o); return 0; } void leerOrdenPizza(struct ordenPizza *unaOrden) { printf("Oferta el precio por pizza es de $199\n"); printf("Dame tu nombre\n"); scanf("%s",unaOrden->cliente); fflush(stdin); printf("Cuantas pizzas quieres?\n"); scanf("%d",&(unaOrden->cantidad)); fflush(stdin); printf("De que sera tu pizza?\n"); scanf("%s",unaOrden->nombre); fflush(stdin); printf("Escribe el precio de tu pizza?\n"); scanf("%d",&(unaOrden->precioUnitario)); fflush(stdin); system("cls"); } int monto(struct ordenPizza *unaOrden) { unaOrden->monto=(unaOrden->cantidad)*(unaOrden->precioUnitario); } void imprimiOrdenPizza(struct ordenPizza *unaOrden) { printf("Tu nombre es: %s \n ",unaOrden->cliente); printf("Tu pizza es de: %s \n",unaOrden->nombre); printf("El monto es: $%d \n",unaOrden->monto); }