Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
VivianMachado0 authored Jan 17, 2023
1 parent 9967671 commit 5e801fb
Show file tree
Hide file tree
Showing 5 changed files with 399 additions and 0 deletions.
62 changes: 62 additions & 0 deletions bibliotecas de tempo/exercícios/exercicio1.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#include <iostream>
#include <windows.h>
#include <ctime>

using namespace std;

int quantidadeDePrimos(int n)
{
int quantidade = 0;
for (int i = 2; i <= n; i++)
{
bool primo = true;
for (int j = 2; j < i; j++)
{
if (i % j == 0)
{
primo = false;
break;
}
}
if (primo)
{
quantidade++;
}
}
return quantidade;
}

int totalPrimos(int n)
{
int i, j, cont = 0;
for (i = 2; i <= n; i++)
{
for (j = 2; j <= i; j++)
{
if (i % j == 0)
{
break;
}
}
if (i == j)
{
cont++;
}
}
return cont;
}

int main()
{
UINT CPAGE_UTF8 = 65001;
UINT CPAGE_DEFAULT = GetConsoleOutputCP();
SetConsoleOutputCP(CPAGE_UTF8);
time_t inicio = time(NULL);

cout << "Quantidade de números primos: " << totalPrimos(2000) << endl;

time_t fim = time(NULL);
cout << "Tempo de execução: " << difftime(fim, inicio) << " segundos" << endl;
cout << endl;
return 0;
}
133 changes: 133 additions & 0 deletions bibliotecas de tempo/exercícios/funcoes.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
#include <iostream>
#include <windows.h>
#include <iomanip>
#include <ctime>
#include "lista.hpp"

using namespace std;

void Menu();
void CadastraCarro(Carro *carro);
void RetiraCarro(TipoLista *lista, Carro *carro);
void ListarCarros(TipoLista lista);
bool PesquisaCarro(TipoLista lista, char placa[]);
void CalculaValor(Carro *carro);

void menu()
{
system("cls");
cout << "Estacionamento\n\n";
cout << "1 - Registrar entrada\n";
cout << "2 - Registrar saída\n";
cout << "3 - Listar carros estacionados\n";
cout << "4 - Sair\n";
}

void CadastraCarro(Carro *carro)
{
cout << "Registro de entrada\n";
cout << "----------------\n";
cout << "Placa: ";
cin >> carro->placa;
carro->horaChegada = time(NULL);
}

void RetiraCarro(TipoLista *lista, Carro *carro)
{
if (VerificaListaVazia(lista))
{
cout << "Estacionamento vazio!\n";
Sleep(1000);
}
else
{
cout << "Registro de saída\n";
cout << "----------------\n";
cout << "Placa: ";
cin >> carro->placa;
if (PesquisaCarro(*lista, carro->placa))
{
carro->horaSaida = time(NULL);
CalculaValor(carro);
cout << "Valor a pagar: R$ " << fixed << setprecision(2) << carro->valor << endl;
Sleep(1000);
cout << "Deseja retirar o carro? (s/n) ";
char opcao;
cin >> opcao;
if (opcao == 's' || opcao == 'S')
{
RemoveCarroPorPlaca(lista, carro->placa);
cout << "Carro retirado com sucesso!\n";
Sleep(1000);
}
else
{
cout << "Carro não retirado!\n";
Sleep(1000);
}
}
else
{
cout << "Carro não encontrado!\n";
Sleep(1000);
}
}
}

bool PesquisaCarro(TipoLista lista, char placa[])
{
Apontador aux = lista.primeiro;
while (aux != NULL)
{
if (strcmp(aux->item.placa, placa) == 0)
{
return true;
}
aux = aux->prox;
}
return false;
}

void ListarCarros(TipoLista lista)
{
cout << "Carros estacionados\n";
cout << "-------------------\n\n";
if (VerificaListaVazia(&lista))
{
cout << "Nenhum carro estacionado\n";
}
else
{
Apontador aux;
aux = lista.primeiro->prox;
while (aux != NULL)
{
cout << "Placa: " << aux->item.placa << endl;
cout << "Hora de chegada: " << ctime(&aux->item.horaChegada) << endl;
aux = aux->prox;
}
}
}

void CalculaValor(Carro *carro)
{
double valor;
int tempo = carro->horaSaida - carro->horaChegada;
if (tempo <= 3600)
{
valor = 2.00;
}
else if (tempo > 3600 && tempo <= 7200)
{
valor = 4.00;
}
else if (tempo > 7200 && tempo <= 10800)
{
valor = 8.00;
}
else
{
valor = 8.00 + (tempo - 10800) * 0.10;
}
carro->valor = valor;
}
111 changes: 111 additions & 0 deletions bibliotecas de tempo/exercícios/lista.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
#include <iostream>
#include <windows.h>
#include <ctime>
#include "lista.hpp"

using namespace std;

void AbreEstacionamento(TipoLista *lista)
{
if (!listaCriada)
{
lista->primeiro = new TipoElemento;
lista->ultimo = lista->primeiro;
lista->ultimo->prox = NULL;
cout << "Estacionamento aberto com sucesso!";
listaCriada = true;
}
else
{
cout << "Estacionamento já aberto!";
}
Sleep(1000);
}

bool VerificaListaVazia(TipoLista *lista)
{
return (lista->primeiro == lista->ultimo);
}

int TamanhoLista(TipoLista *lista)
{
return lista->tamanho;
}

void AtualizaUltimo(TipoLista *lista)
{
Apontador aux;
aux = lista->primeiro;
while (aux->prox != NULL)
{
aux = aux->prox;
}
lista->ultimo = aux;
}

void InsereListaUltimo(TipoLista *lista, Carro *item)
{
lista->ultimo->prox = new TipoElemento;
lista->ultimo = lista->ultimo->prox;
lista->ultimo->item = *item;
lista->ultimo->prox = NULL;
lista->tamanho++;
}

void ImprimeLista(TipoLista lista)
{
if (VerificaListaVazia(&lista))
{
cout << "Lista vazia!\n";
Sleep(1000);
return;
}
Apontador aux;
aux = lista.primeiro->prox;
while (aux != NULL)
{
cout << "Placa: " << aux->item.placa << endl;
cout << "Hora de chegada: " << ctime(&aux->item.horaChegada);
int tempo_estacionado = aux->item.horaSaida - aux->item.horaChegada;
cout << "Tempo de permanência: " << tempo_estacionado / 60 << " minutos" << endl;
aux = aux->prox;
}
system("pause");
}

void RemoveListaPrimeiro(TipoLista *lista)
{
if (VerificaListaVazia(lista))
{
return;
}
Apontador aux;
aux = lista->primeiro->prox;
lista->primeiro->prox = aux->prox;
delete aux;
lista->tamanho--;
}

void RemoveCarroPorPlaca(TipoLista *lista, char placa[])
{
if (VerificaListaVazia(lista))
{
return;
}
Apontador aux, aux2;
aux = lista->primeiro->prox;
aux2 = lista->primeiro;
while (aux != NULL)
{
if (strcmp(aux->item.placa, placa) == 0)
{
aux2->prox = aux->prox;
delete aux;
lista->tamanho--;
break;
}
aux2 = aux;
aux = aux->prox;
}
AtualizaUltimo(lista);
}
36 changes: 36 additions & 0 deletions bibliotecas de tempo/exercícios/lista.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#ifndef LISTA_H
#define LISTA_H

typedef struct Carro
{
char placa[7];
time_t horaChegada;
time_t horaSaida;
double valor;
};

typedef struct TipoElemento *Apontador;

typedef struct TipoElemento
{
Carro item;
struct TipoElemento *prox;
} TipoElemento;

typedef struct TipoLista
{
Apontador primeiro;
Apontador ultimo;
int tamanho = 0;
} TipoLista;

bool listaCriada = false;

void AbreEstacionamento(TipoLista *lista);
bool VerificaListaVazia(TipoLista *lista);
void InsereListaUltimo(TipoLista *lista, Carro *carro);
void ImprimeLista(TipoLista lista);
int TamanhoLista(TipoLista *lista);
void RemoveCarroPorPlaca(TipoLista *lista, char placa[]);

#endif
Loading

0 comments on commit 5e801fb

Please sign in to comment.