# Session Two: Getting Better - Fundamentos de Lógica
Autor: Jonathan Fernando Costa Galo.
[toc]
# Exercícios Tipos Compostos II - Exercícios no C#
## Crie uma função que implemente a lógica para calcular o valor total a ser pago na compra de ingressos do Cinemark. A partir do total de ingressos inteiras, meias e o preço cheio do ingresso, realize o cálculo.
```csharp=
public string IngressosCinema (int qtdInteira, int qtdMeia, double preco, string filme)
{
double ing1 = qtdInteira * preco;
double ing2 = (qtdMeia * preco)/2 ;
double tot = ing1 + ing2;
int qtdIng = qtdInteira + qtdMeia;
string text = "O valor da compra de " + qtdIng + " ingressos referente ao filme " + filme + " é de R$ " + tot + ".";
return text;
}
string x = IngressosCinema(2, 1, 20, "Velozes e Furiosos");
Console.WriteLine(x);
```
## Crie uma função que implemente a lógica do jogo Jokenpo entre 2 jogadores e retorne verdadeiro ou falso se o jogador 1 venceu.
```csharp=
public class Partida
{
public string Jogador1 { get; set; }
public string Jogador2 { get; set; }
}
public bool Jokenpo(Partida partida)
{
bool jogador1Venceu = (partida.Jogador1 == "Papel" && partida.Jogador2 == "Pedra")
||
(partida.Jogador1 == "Pedra" && partida.Jogador2 == "Tesoura")
||
(partida.Jogador1 == "Tesoura" && partida.Jogador2 == "Papel");
return jogador1Venceu;
}
Partida p = new Partida();
p.Jogador1 = "Papel";
p.Jogador2 = "Tesoura";
bool x2 = Jokenpo(p);
Console.WriteLine("Jogador Venceu: " + x2);
Console.WriteLine();
Console.WriteLine();
```
## Crie uma função composta que a partir das datas de checkin (entrada) e checkout (saída) em um hotel, considerando a quantidade de pessoas que serão hospedadas, calcule o valor total a ser pago, sendo que valor da diária é R$ 120,00
```csharp=
public class EstadioHotel
{
public DateTime Checkin { get; set; }
public DateTime Checkout { get; set; }
public int QtdPessoas { get; set; }
}
public double TotalDias1(DateTime ida, DateTime volta)
{
TimeSpan dif = volta - ida;
double dias = dif.TotalDays + 1;
return dias;
}
public double HospedagemHotel(EstadioHotel hotel)
{
double dias = TotalDias1(hotel.Checkin, hotel.Checkout);
double total = dias * hotel.QtdPessoas * 120;
return total;
}
EstadioHotel estadia = new EstadioHotel();
estadia.Checkin = new DateTime(2021, 5, 7);
estadia.Checkout = new DateTime(2021, 5, 9);
estadia.QtdPessoas = 4;
double x3 = HospedagemHotel(estadia);
Console.WriteLine("Hospedagem ficou: " + x3);
Console.WriteLine();
Console.WriteLine();
```
## Crie uma função composta que implemente a lógica para calcular o valor total de uma compra de passagem aérea. A companhia de viagem está com uma promoção que independente do destino, os passageiros serão cobrados por dia de viagem, onde cada dia custa R$ 200,00. Crianças são cobradas pela metade.
```csharp=
public class PassagemAerea
{
public DateTime Ida { get; set; }
public DateTime Volta { get; set; }
public int QtdAdultos { get; set; }
public int QtdCriancas { get; set; }
public string Origem { get; set; }
public string Destino { get; set; }
}
public double TotalDias2(DateTime ida, DateTime volta)
{
TimeSpan dif = volta - ida;
double dias = dif.TotalDays + 1;
return dias;
}
public double CalcularPassagemAerea(PassagemAerea passagem)
{
double dias = TotalDias2(passagem.Ida, passagem.Volta);
double total = (dias * passagem.QtdAdultos * 200) + (dias * passagem.QtdCriancas * 100);
return total;
}
PassagemAerea passagem = new PassagemAerea();
passagem.Ida = new DateTime(2021, 5, 7);
passagem.Volta = new DateTime(2021, 5, 9);
passagem.QtdAdultos = 2;
passagem.QtdCriancas = 2;
passagem.Origem = "SP";
passagem.Destino = "Dublin";
double x4 = CalcularPassagemAerea(passagem);
Console.WriteLine("Total da Viagem: " + x4);
Console.WriteLine();
Console.WriteLine();
```
## Crie uma função composta que implemente a lógica da compra de um Pacote de Viagem em Família. Esse pacote é composto pela viagem aérea e hospedagem em um hotel. Utilize as mesmas regras descritas nos exercícios anteriores e retorne um comprovante da compra do pacote contendo os totais do hotel, passagem e o valor final da compra.
```csharp=
public class EstadioHotel2
{
public DateTime Checkin { get; set; }
public DateTime Checkout { get; set; }
public int QtdPessoas { get; set; }
}
public class PassagemAerea2
{
public DateTime Ida { get; set; }
public DateTime Volta { get; set; }
public int QtdAdultos { get; set; }
public int QtdCriancas { get; set; }
public string Origem { get; set; }
public string Destino { get; set; }
}
public class Comprovante
{
public double Total { get; set; }
public double TotalHotel { get; set; }
public double TotalPassagem { get; set; }
public string Mensagem { get; set; }
}
public double TotalDias3(DateTime ida, DateTime volta)
{
TimeSpan dif = volta - ida;
double dias = dif.TotalDays + 1;
return dias;
}
public double CalcularPassagemAerea(PassagemAerea2 passagem)
{
double dias = TotalDias3(passagem.Ida, passagem.Volta);
double total = (dias * passagem.QtdAdultos * 200) + (dias * passagem.QtdCriancas * 100);
return total;
}
public double HospedagemHotel(EstadioHotel2 hotel)
{
double dias = TotalDias3(hotel.Checkin, hotel.Checkout);
double total = dias * hotel.QtdPessoas * 120;
return total;
}
public Comprovante PacoteViagem(PassagemAerea2 passagem, EstadioHotel2 estadia)
{
double totalHotel = HospedagemHotel(estadia);
double totalPassagem = CalcularPassagemAerea(passagem);
double dias = TotalDias3(passagem.Ida, passagem.Volta);
Comprovante comprovante = new Comprovante();
comprovante.TotalHotel = totalHotel;
comprovante.TotalPassagem = totalPassagem;
comprovante.Total = totalHotel + totalPassagem;
comprovante.Mensagem = $"A compra do Pacote de {dias} dias para o destino {passagem.Destino} foi finalizado com sucesso! O total incluindo todas despesas é de R$ {comprovante.Total}";
return comprovante;
}
PassagemAerea2 passagem2 = new PassagemAerea2();
passagem2.Ida = new DateTime(2021, 5, 7);
passagem2.Volta = new DateTime(2021, 5, 9);
passagem2.QtdAdultos = 2;
passagem2.QtdCriancas = 2;
passagem2.Origem = "SP";
passagem2.Destino = "Dublin";
EstadioHotel2 estadia2 = new EstadioHotel2();
estadia2.Checkin = new DateTime(2021, 5, 7);
estadia2.Checkout = new DateTime(2021, 5, 9);
estadia2.QtdPessoas = 4;
Comprovante comprovante = PacoteViagem(passagem2, estadia2);
Console.WriteLine(comprovante.Total);
Console.WriteLine(comprovante.TotalPassagem);
Console.WriteLine(comprovante.TotalHotel);
Console.WriteLine(comprovante.Mensagem);
Console.WriteLine();
Console.WriteLine();
```
{"metaMigratedAt":"2023-06-15T23:59:51.432Z","metaMigratedFrom":"Content","title":"Session Two: Getting Better - Fundamentos de Lógica","breaks":true,"contributors":"[{\"id\":\"f59e6c25-3cb1-4556-be8b-0ad8b709be8c\",\"add\":6906,\"del\":0}]"}