Untitled
#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 = 100, colunas = 3; int tam = 100; 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; //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 //criar a matriz -- Com adição de vetor, Teste //Introdução de dados na matriz /* 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) { faz o código já feito pra adicionar stock; } else if (dec == 2) { string prod; double quant; cout << endl << "Produto a acrescentar: "; cin >> prod; cout << endl << "Quantidade a acrescentar: "; cin >> quant; for (int i = 0; i < linhas; i++) { if (vetor[i] == prod) { mat[i][1] = mat[i][1] + quant; break; } } else { cout << endl << "Numero errado, Try again"; } */ 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; } } 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 //A seguir, a posição atual recebe os dados da posição posterior 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]; //Por fim, a posição posterior recebe dados Default vetor[i + 1] = "ND"; mat[i + 1][0] = -1; mat[i + 1][1] = -1; mat[i + 1][2] = -1; totalProdutos--; break; } } } 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") { cout << endl << "Introduza o nome do produto: "; cin >> prod; cout << endl << "Quantidade desejada: "; cin >> quant; for (int i = 0; i < totalProdutos; i++) { if (vetor[i] == prod && quant <= mat[i][1]) //Talvez ao finalizar a compra, if statement pra verificar quantidade em stock { 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; } /*Randomizer para verificar se uma variável que se guarda um numero inteiro escondido do utilizador, é igual ao numero gerado pelo randomizer. O num secreto é verificado através de um If Statement para comparar se é igual ao num gerado pelo randomizer. Se for igual, a compra é grátis e Talvez se dê Skip ao resto do código*/ double pagar = 0; //FALTA ADICIONAR AQUI AO TOTAL O IVA (E OS 30% ANTES DO IVA, quant * 0.30) 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 << endl; cout << "Data e hora atual: " << buffer << endl; } // Falta aqui a data no final cout << "Verificacao de stock..." << endl; 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; } break; case 5: cout << endl << "Nothing"; break; default: cout << "Opcao invalida" << endl; break; } } }
Leave a Comment