Untitled
unknown
c_cpp
2 years ago
9.6 kB
14
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 = 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;
}
}
}Editor is loading...
Leave a Comment