Ayuda urgente con un problema de C++

Iniciado por JohnAMH, 13 Octubre 2018, 22:47 PM

0 Miembros y 1 Visitante están viendo este tema.

JohnAMH

Buenos días, tengo un problema urgente con un ejercicio de c++ que me cuesta solucionar. el ejercicio es el siguiente:
Escribir un programa que ofrezca las siguientes opciones:
1. Client data
2. Sale data
3. Invoice
4. Totals
5. Restart
0. Exit
El programa mostrará el menú hasta que el usuario elija la opción.
. Por ahora lo que llevó es esto. Seguramente haya mucha cosa innecesaria. Si es así, me lo podéis decir. Espero respuesta.
Muchas gracias de antemano.

Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
using namespace std;
#include <cctype>
#include <iomanip>

int menu();
double cost(int descPercentage, double total, double final, double amountDisc, double amountVAT);

       int main() {
int option;
int units;
int readCost;
int readMenu;
int descPercentage;
const int VAT = 21;
const int DISCOUNT = 15;
double price;
double total;
double readcost;
double final;
double amountDisc;
double amountVAT;
       bool sale = false;
bool client = false;
char discount;
string product;
string name, nif, address;

cout << "1. Client Data" << endl;
cout << "2. Sale Data" << endl;
cout << "3. Invoice" << endl;
cout << "4. Totals" << endl;
cout << "5. Restart" << endl;
cout << "0. Exit" << endl;
cout << "Option: ";
cin >> option;
cout << endl;
switch (option) {
case 1:
if (client == false) {
cout << "Client Name: ";
cin.sync();
getline (cin, name);
cout << "Client NIF: ";
getline (cin, nif);
cout << "Client Address: ";
getline (cin, address);
cout << client;
cout << endl;
}
case 2:
if (sale == true) {
readMenu = menu();
cout << "Product Name: ";
cin.sync();
getline (cin, product);
cout << "Product Price: ";
cin >> price;
cout << "Discount (y/n): ";
cin >> discount;
discount = toupper(discount);
if (discount == 'Y') {
descPercentage = DISCOUNT;
}
else {
descPercentage = 0;
}
cout << "Units: ";
cin >> units;
sale = true;
cout << sale;
cout << endl;
}
else if (sale != false){
cout << "No sale data!" << endl;
cout << endl;
readMenu = menu();
}
case 3:
if (client == false) {
cout << "No client data!" << endl;
cout << endl;
readMenu = menu();
client = false;
cout << client;
}
else {
readMenu = menu ();
cout << endl << "Invoice:" << endl;
cout << setw(50) << right << name << endl;
cout << setw(50) << right << nif << endl;
cout << setw(50) << right << address << endl << endl;
readMenu = menu ();
client = true;
cout << client;
}
             case 4:
if (sale == false) {
cout << "No sale data!" << endl;
cout << "1. Client Data" << endl;
cout << "2. Sale Data" << endl;
cout << "3. Invoice" << endl;
cout << "4. Totals" << endl;
cout << "5. Restart" << endl;
cout << "0. Exit" << endl;
cout << "Option: ";
cin >> option;
sale = false;
cout << sale;
}
else {
readcost = cost(descPercentage, total, final, amountDisc, amountVAT);
cout << "Product: " << product << endl;
cout << setw(40) << left << "Unit Price";
cout << setw(10) << right << fixed << setprecision(2) << price << endl;
cout << setw(40) << left << "Units";
cout << setw(7) << right << units << endl;
cout << setw(40) << left << "Total";
cout << setw(10) << right << fixed << setprecision(2) << total << endl;
cout << setw(40) << left << "Discount";
cout << setw(7) << right << descPercentage << " %" << endl;
cout << setw(50) << right << fixed << setprecision(2) << -amountDisc << endl;
cout << setw(40) << left << "Total after discount";
cout << setw(10) << right << fixed << setprecision(2) << total << endl;
cout << setw(40) << left << "VAT";
cout << setw(7) << right << VAT << " %" << endl;
cout << setw(50) << right << fixed << setprecision(2) << amountVAT << endl;
cout << setw(40) << left << "Final Price";
cout << setw(10) << right << fixed << setprecision(2) << final << endl;
sale = true;
cout << sale;
}
case 5:
system ("CLS");
break;
default:
cout << "1. Client Data" << endl;
cout << "2. Sale Data" << endl;
cout << "3. Invoice" << endl;
cout << "4. Totals" << endl;
cout << "5. Restart" << endl;
cout << "0. Exit" << endl;
cout << "Option: ";
cin >> option;
cout << endl;
}
return 0;
}

     int menu() {

int option;
int readMenu;

cout << "1. Client Data" << endl;
cout << "2. Sale Data" << endl;
cout << "3. Invoice" << endl;
cout << "4. Totals" << endl;
cout << "5. Restart" << endl;
cout << "0. Exit" << endl;
cout << "Option: ";
cin >> option;
cout << endl;
while (option <= -1 || option >= 6) {
cout << "1. Client Data" << endl;
cout << "2. Sale Data" << endl;
cout << "3. Invoice" << endl;
cout << "4. Totals" << endl;
cout << "5. Restart" << endl;
cout << "0. Exit" << endl;
cout << "Option: ";
cin >> option;
cout << endl;
}
return option;
}
double cost(int descPercentage, double total, double final, double amountDisc, double amountVAT) {
const int VAT = 21;
const double DISCOUNT = 15;
char discount;

amountDisc = total * descPercentage / 100;
total = total - amountDisc;
amountVAT = total * VAT / 100;
final = total + amountVAT;

return final;
}


Beginner Web

Código (cpp) [Seleccionar]
int main()
{
mis variables...
do{
system("cls");
cout<<"1. Primera opcion"<<endl;
cout<<"2. Segunda opcion"<<endl;
cout<<"3. ...."<<endl;
cout<<"4. .."<<endl;
cout<<"5. Salir"<<endl;
cin>>opcion;
switch(opcion){
case 1: hacer_cosas();break;
case 2: hacer_cosas();break;
case 3: hacer_cosas();break;
case 4: hacer_cosas();break;
case 5: cout<<"FIN DEL PROGRAMA"<<endl;break;
default: cout<<"Opcion incorrecta"<<endl;
}
system("pause");
}while(opcion!=5);
}
7w7

JohnAMH

Gracias, pero como haría la función hacer_cosas con las variables bool? Es que las opciones dependen uno de los otros.

Escriba un programa en C ++ que ofrezca al usuario estas opciones:
Option 1: Pregunta al usuario por su client data (name, NIF and address).
Option 2: Pregunta por el nombre del producto, nº de unidades y descuento a aplicar. (product, units, discocunt).
Option 3: Genera la factura. No lo generará si el cliente no ha puesto información suya y del producto (Client Data y Sale Data), devolviéndole al menú.
Option 4: Muestra las ventas totales y el VAT Displays, solo si has puesto antes los datos del cliente y de las ventas, sino te pondrá error y te devolverá al menú.
Option 5:Todos los totales son 0 y no hay datos de clientes ni datos de ventas. Borra todos los datos ofrecidos anteriormente y empieza de 0.

Utilice dos variables bool para averiguar si se han proporcionado datos de clientes y datos de ventas (falso después de reiniciar).


Aún así muchas gracias