-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9967671
commit 5e801fb
Showing
5 changed files
with
399 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Oops, something went wrong.