Ayuda a migrar Un codigo en c a c++ porfa
Publicado por Eddy_Freg (1 intervención) el 12/06/2021 18:53:38
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include <stdio.h> //ingreso y salida de datos
#include <conio.h>// para captura con getch
#include <stdlib.h>//para limpiar la pantalla (cls)
struct datos{
int id;
char nom[100];//maximo de caracteres
float precio;
};
typedef struct datos DATO;//para dar un apodo a la estructura
char MenuPrincipal();
void Crear_menu();
void Mostrar_menu(); //para dar un apodo a la estructura
void Proceso_cobro();
int main(void){ //main principal
char op;//refiere a los valores de la función inicio
do{
op = MenuPrincipal();
switch(op){//para poder controlar las funciónes
case '1'://llama a la funcion crear menu
system("cls");
Crear_menu();
getch();
break;
case '2':
system("cls");
Mostrar_menu();
getch();//esperar en la terminal
break;
case '3':
system("cls");//limpiar la pantalla
printf("\n\tGracias por la preferencia :D \n\n");//imprime mensaje de
break;
}
}
while(op != '3'); //minetras la variable sea diferente de 3 se sigue ejecutando
return 0;
}
char MenuPrincipal(){ // menu principal el menu que aparece al principio del programa, de aqui retorna la opcion que se escoja
char op;
system("cls");
printf("\n RESTAURANTE \n");
printf("\n\t ---- EddyRoll sushi ---- \n\n");
printf("\n(1) Agregar al Menu");
printf("\n(2) Mostrar Menu del Dia");
printf("\n(3) Salir");
printf("\n Opcion --> ");
fflush(stdin);//limpia el buffer
op = getch();/// aqui se captura el valor ingresado (1,2,3) en la variable op
return op;// retorna la captura anterior para ser recibido en el main principal
}
void Crear_menu(){
FILE *Apun1;//puntero
DATO e;
int cantidad;
if((Apun1 = fopen("Menu/carta","ab")) == NULL){//si el apuntador no existe "ab" = escribir en puntero
printf("Fichero no existe! ");// arroja el error
}else{//en caso contrario indicamos al ususario que ingrese los datos
printf("\n Agregue los platillos del Dia!\n");
printf("Cuantos platillos desea Agregar en el Menu! : "); // pedimos cuantos platillos se van a mostrar
fflush(stdin);
scanf("%i",&cantidad); //guardamos la canidad de platillos a agregar
for(int i=1 ; i<=cantidad ; i++){//lo utilizamos para repetir el ciclo agregar hasta que se complete el valor ingresado de platillos por agregar i++ para que el ID se Autonumere
e.id = i; //declara e inicializa en 1
printf("\nID: %i\n",i);
printf("Nombre: ");
fflush(stdin);
gets(e.nom);
printf("Precio: $");
fflush(stdin);
scanf("%f",&e.precio);
fwrite(&e,sizeof(e),1,Apun1);// este es el archivo que se crea y almacena los datos es decir escribir en el archivo para guardar ID,platillo y precio
}
fclose(Apun1);//cerrar el archivo para evitar errores
}
}
void Mostrar_menu(){//funcion para mostrar el contenido/menu
FILE *Apun2;//declaracion de apuntador
DATO e;// declaracion de variable tipo estructura
if((Apun2 = fopen("Menu/carta","rb")) == NULL){//si el fichero no existe "rb"= a leer puntero
printf("Fichero no existe! ");// arroja el error
}else{//leer el archivo
fread(&e,sizeof(e),1,Apun2);//leer el archivo
printf("\n\t----EddyRoll sushi----\n");
printf("\n\t___________________________\n");
while(! feof(Apun2)){//mientras no se llegue al final del fichero que siga buscando
printf("\n (%i) %s.......> $%.2f",e.id,e.nom,e.precio);//muestra ordenada la información (tipos de datos y sus variables)para que solo muestre dos decimales sepone %.2f
fread(&e,sizeof(e),1,Apun2);//leer apuntador
}
printf("\n___________________________\n");
}
fclose(Apun2);//cerrar el fichero
Proceso_cobro();//llama a la funcion proceso cobro
}
void Proceso_cobro(){
FILE *Apun3;
DATO e;
int op,cant; //Opcion que se quiere vender y la cantidad , de lo que se va a vender
int pedidos[10],cantidad[10],contador=0; //en los Array es donde se almacena , el ID cada platillo que el cliente pide
float efectivo=0,subtotal=0,iva=0,total=0; //Aquise calcula el cobro efectivo es el dinero que nos da el cliente
if((Apun3 = fopen("Menu/carta","rb")) == NULL){//si el fichero no existe
printf("¡¡¡Apuntador inexistente!!!");// arroja el error
}else{
printf("\nSi termino su orden marque la opcion 0 \n");
do{
contador++;
printf("\n Pedido --> #%i: ",contador); //para ir guardando los productos consumidos
scanf("%i",&op);
if(op != 0){
pedidos[contador] = op;
printf("\n Cantidad del Pedido --> #%i: ",contador);
scanf("%i",&cant);
cantidad[contador] = cant;
}
}while(op != 0);//para salir del cobro
contador = 0;
system("cls");
fread(&e,sizeof(e),1,Apun3);
while(!feof(Apun3)){
contador++;
if(pedidos[contador] == e.id){
printf("\n\t*%i......%s........:$%.2f = $%.2f",cantidad[contador],e.nom,e.precio,(cantidad[contador] * e.precio));
subtotal = subtotal + (cantidad[contador] * e.precio);
}
fread(&e,sizeof(e),1,Apun3);
}
iva = (subtotal * 16) / 100; //calculo del IVA
total = subtotal + iva;
printf("\n\n");
printf("\tSUBTOTAL....................: $%.2f \n",subtotal);
printf("\tIVA.........................: $%.2f \n",iva);
printf("\tTOTAL.......................: $%.2f \n",total);
printf("\n\n");
printf("\tRecibido....................: $");
scanf("%f",&efectivo);
printf("\n\tCAMBIO......................: $%.2f \n",(efectivo - total));
printf("\n\n\t ***Gracias por Venir a EddyRoll***\n\n");
}
fclose(Apun3);
}
Valora esta pregunta


-2