Untitled
unknown
c_cpp
a year ago
13 kB
7
Indexable
#include <iostream> #include <iomanip> #include <locale.h> #include <cstdlib> #include <ctime> #include <chrono> using namespace std; int main() { // Configurar a semente para a função rand() usando o tempo atual srand(static_cast<unsigned int>(time(nullptr))); setlocale(LC_ALL, "Portuguese"); int totalProdutos = 0; int linhas = 4, colunas = 3; int tam = 4; int choice = 0; int qProd = 0; //Quantidade de Produtos a Inserir string* vetor = new string[tam]; for (int i = 0; i < tam; i++) { vetor[i] = "ND"; } //criar a matriz -- Com adição de vetor, Teste double** mat = new double* [linhas]; for (int i = 0; i < linhas; i++) { mat[i] = new double[colunas]; } for (int i = 0; i < linhas; i++) { mat[i][0] = -1; } /*Antes do while, fica aqui a adição de produtos default ao stock e outras variáveis globais que precisam de ficar fora de certos cases*/ int nCliente = 0; bool flagProd = false; //Flag para verificação de stock no final da compra em Case 4 - Fazer Compra; bool flagCompra = false; //Flag para verificação de nome do produto em Case 4 - fazer Compra; string nomeProdE; //String para verificar se o produto já existe em stock, antes de tentar adicionar como produto novo; //Adição de produtos default for (int i = 0; i < 1; i++) { if (vetor[i] == "ND") { vetor[i] = "Arroz"; //O Vetor guarda o nome dos produtos //ID Produto mat[i][0] = 0; //Quantidade Produto mat[i][1] = 5; // Preço Custo Produto mat[i][2] = 0.50; totalProdutos++; cout << endl; break; } } for (int i = 0; i < 2; i++) { if (vetor[i] == "ND") { vetor[i] = "Massa"; //O Vetor guarda o nome dos produtos //ID Produto mat[i][0] = 1; //Quantidade Produto mat[i][1] = 10; // Preço Custo Produto mat[i][2] = 1.20; totalProdutos++; cout << endl; break; } } for (int i = 0; i < 3; i++) { if (vetor[i] == "ND") { vetor[i] = "Sumo"; //O Vetor guarda o nome dos produtos //ID Produto mat[i][0] = 2; //Quantidade Produto mat[i][1] = 3; // Preço Custo Produto mat[i][2] = 0.90; totalProdutos++; cout << endl; break; } } while (choice != 5) { cout << "| |" << endl; cout << "|Bem vindo a Loja #O Deus da Compra#|" << endl; cout << "| |" << endl; cout << " 1 - Verificar Stock" << endl; cout << " 2 - Adicionar Stock" << endl; cout << " 3 - Remover Produto do Stock" << endl; cout << " 4 - Fazer Compra" << endl; cout << " 5 - Sair da Loja" << endl; cout << endl << endl << "Faca a sua Escolha --> "; cin >> choice; switch (choice) { case 1: //Verificar Stock if (totalProdutos == 0) { cout << endl << "Sem produtos para mostrar. Por favor adicione produtos ao stock"; cout << endl; cout << endl; } else { for (int i = 0; i < totalProdutos; i++) { for (int j = 0; j < 1; j++) { cout << vetor[i] << endl; cout << "ID: " << mat[i][0] << endl; cout << "Quantidade: " << mat[i][1] << endl; cout << "PrecoCusto: " << setprecision(2) << fixed << mat[i][2] << " Euros" << endl; } cout << endl; } } break; case 2: //Adicionar Stock int dec; // (valor decisão, 1 ou 2, 1 Adicionar stock, 2 Adicionar a stock existente) cout << endl << "Adicionar produto novo (1) ou adicionar stock a produto existente (2)?: "; cin >> dec; if (dec == 1) { if (totalProdutos == 4) { cout << "Stock Cheio!! Por favor remova algum item para introduzir algum produto novo!"; break; goto exitNull; } cout << endl << "Para verificacao de produtos em stock, introduza o nome do produto que deseja adicionar: "; cin >> nomeProdE; cout << endl << "A verificar... "; for (int i = 0; i < linhas; i++) { if (nomeProdE == vetor[i]) { cout << endl << "Produto ja existe em stock. Por favor tente novamente!" << endl << endl; goto exitNull; } } cout << endl << "Verificacao Completa, pode prosseguir com a adicao de produto! :D"; for (int i = 0; i < linhas; i++) { if (vetor[i] == "ND") { cout << endl << "Nome: "; cin >> vetor[i]; //O Vetor guarda o nome dos produtos cout << "ID: "; cin >> mat[i][0]; cout << "Quantidade: "; cin >> mat[i][1]; cout << "PrecoCusto: "; cin >> mat[i][2]; totalProdutos++; cout << endl; break; } } } else if (dec == 2) { string addProd; double addQuant; bool flag = false; cout << endl << "A que produto quer adicionar mais ao stock? (Aviso: Nome do produto tem de ser igual "; cout << endl << "ao que esta introduzido no stock!): "; cin >> addProd; for (int i = 0; i < totalProdutos; i++) { if (vetor[i] == addProd) { cout << "Quantidade a adicionar: "; cin >> addQuant; mat[i][1] = mat[i][1] + addQuant; flag = true; break; } } if (flag == false) { cout << endl << "Erro ao verificar nome do produto, tente novamente. " << endl << endl; } } else { cout << endl << "Numero invalido! Por favor tente novamente."; } break; case 3: //Remover Produto if (totalProdutos == 0) { cout << endl << "Sem produtos para remover. Por favor adicione produtos ao stock"; cout << endl; cout << endl; } else { cout << "O que pretende remover: "; string remove; cin >> remove; for (int i = 0; i < totalProdutos; i++) { if (vetor[i] == remove) { vetor[i] = "ND"; //Nome do Produto mat[i][0] = -1; //ID mat[i][1] = -1; //Quantidade mat[i][2] = -1; //Preco Custo break; } } for (int i = 0; i < totalProdutos - 1; i++) { ////A seguir,é feita uma verificação para encontrar a posição que tem valores Default para depois receber os dados da posição posterior if (vetor[i] == "ND") { vetor[i] = vetor[i + 1]; mat[i][0] = mat[i + 1][0]; mat[i][1] = mat[i + 1][1]; mat[i][2] = mat[i + 1][2]; vetor[i + 1] = "ND"; mat[i + 1][0] = -1; mat[i + 1][1] = -1; mat[i + 1][2] = -1; } } totalProdutos--; } break; case 4: //Fazer Compra if (totalProdutos == 0) { cout << endl << "Sem produtos para fazer compra. Por favor adicione produtos ao stock"; cout << endl; cout << endl; } else { string simNao, prod; double quant; double total = 0; while (simNao != "N") { /*Verificação para ver se existe produto em stock e avisar caso que um produto desejado não esteja em stock. Ex: "Introduza nome do produto: Arroz - (verificação) - não há quantidade em stock para arroz*/ do { cout << endl << "Introduza o nome do produto: "; cin >> prod; flagCompra = false; for (int i = 0; i < totalProdutos; i++) { if (prod == vetor[i]) { flagCompra = true; } } if (flagCompra == false) { cout << endl << "Nome de produto incorreto, tente novamente!"; } } while (flagCompra == false); do { cout << endl << "Quantidade Desejada: "; cin >> quant; flagCompra = false; for (int i = 0; i < totalProdutos; i++) { if (prod == vetor[i] && mat[i][1] == 0) //Verifica se o nome do prod é igual e se a quantidade existente do produto pedido é 0(zero); { cout << endl << "Não existe stock do produto " << prod << ". Recomece a compra do inicio."; goto exitNull; } } break; for (int i = 0; i < totalProdutos; i++) { if (prod == vetor[i] && quant > mat[i][1]) //Verifica se o nome do prod é igual e se a quantidade excede o que existe em stock; { cout << endl << "Quantidade pedida excede o stock do produto " << prod << ". Por favor introduza uma quantidade igual ou inferior existente em stock do produto"; flagCompra = true; break; } else if (prod == vetor[i] && quant <= 0) { cout << endl << "Quantidade pedida e zero ou inferior " << prod << ". Por favor introduza uma quantidade igual ou inferior existente em stock do produto"; flagCompra = true; } } } while (flagCompra == true); //FALTA ACABAR AQUI VERIFICAÇÃO DE QUANTIDADE!! for (int i = 0; i < totalProdutos; i++) { if (vetor[i] == prod && quant <= mat[i][1]) // { mat[i][1] = mat[i][1] - quant; total = total + mat[i][2] * quant; break; } } cout << endl << "Quer adicionar mais produtos á compra? [(S)im ou (N)ao]"; cin >> simNao; } //Finalização de Compra double pagar = 0; do { cout << endl << "O seu total: " << setprecision(2) << fixed << (total * 1.30) * 1.23; cout << endl << "Introduza quantidade para pagamento: "; cin >> pagar; if (pagar < total) { cout << endl << "Quantidade insuficiente. Introduza uma quantidade maior para pagamento:"; cout << endl; } } while (pagar < total); time_t tempoAtual = std::time(nullptr); tm* dataHora = localtime(&tempoAtual); char buffer[80]; strftime(buffer, sizeof(buffer), "%d/%m/%Y %H:%M:%S", dataHora); int numeroSecreto = 2; int ran = (rand() % 10 + 1); if (numeroSecreto == ran) { cout << "Parabens n pagas" << endl; int nFatura; nFatura = (rand() % (10000 + 1000)); cout << endl << "Nº Fatura: " << nFatura << endl; nCliente++; cout << "Nº Cliente: " << nCliente << endl; cout << "Produto: " << prod << endl; cout << "Quantidade: " << quant << endl; cout << "Preco Sem IVA: " << total << endl; cout << "IVA: 23%"; total = (total * 1.30) * 1.23; cout << endl; cout << "total Com IVA: " << setprecision(2) << fixed << total << endl; cout << "Valor dado para pagamento: " << "0" << endl; cout << "Troco: " << "0" << endl << endl; cout << "Data e hora atual: " << buffer << endl; } else { time_t tempoAtual = std::time(nullptr); tm* dataHora = localtime(&tempoAtual); char buffer[80]; strftime(buffer, sizeof(buffer), "%d/%m/%Y %H:%M:%S", dataHora); int nFatura; nFatura = (rand() % (10000 + 1000)); cout << endl << "Nº Fatura: " << nFatura << endl; nCliente++; cout << "Nº Cliente: " << nCliente << endl; cout << "Produto: " << prod << endl; cout << "Quantidade: " << quant << endl; cout << "Preco Sem IVA: " << total << endl; cout << "IVA: 23%"; total = (total * 1.30) * 1.23; cout << endl; cout << "total Com IVA: " << setprecision(2) << fixed << total << endl; cout << "Valor dado para pagamento: " << pagar << endl; cout << "Troco: " << pagar - total << endl; cout << "Data e hora atual: " << buffer << endl; cout << endl; } cout << "Verificacao de stock..." << endl; for (int i = 0; i < totalProdutos; i++) //Verificação de stock para ver se algumn produto têm quantidade 0(zero); { for (int j = 0; j < 1; j++) { //cout << vetor[i] << endl; //cout << "ID: " << mat[i][0] << endl; if (mat[i][1] == 0) { flagProd = true; } //cout << "Quantidade: " << mat[i][1] << endl; //cout << "PrecoCusto: " << mat[i][2] << " Euros " << setprecision(2) << fixed << mat[i][2] << "" << endl; } } } if (flagProd == false) { cout << "Verificacao Completa - Ainda existe quantidades em stock." << endl << endl; } else { cout << "Verificacao Completa - AVISO! 1 ou mais produtos sem quantidade. Por favor adicione mais quantidade ao stock dos produtos em falta!" << endl << endl; } break; exitNull: break; case 5: cout << endl << "Nothing"; break; default: cout << "Opcao invalida" << endl; break; } } }
Editor is loading...
Leave a Comment