---
# System prepended metadata

title: 'Session Two: Getting Better  | Csharp'

---

# Session Two: Getting Better  | Csharp

autora: Isabela Silva Sousa 

[toc]

## Exercício 01

- **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.**

  **A função deve retornar uma mensagem no seguinte formato:**
  
  **“O valor da compra de XXX ingressos referente ao filme XXX é R$ XXX”**
```csharp=
using System;

public class CalcularIngressoCinemark
{
	public int QtdInteira { get; set; }
	public int QtdMeia { get; set; }
	public double Preco { get; set; }
	public string Filme { get; set; }
}

public string CalcularIngresso (CalcularIngressoCinemark ingresso)
{
	int totalIngressos = ingresso.QtdInteira + ingresso.QtdMeia;
	double totalInteira = ingresso.QtdInteira * ingresso.Preco;
	double totalMeia = ingresso.QtdMeia * (ingresso.Preco / 2);
	double total = totalInteira + totalMeia;
	
	string resposta =$"O valor da compra de {totalIngressos} ingressos referente ao filme {ingresso.Filme} é R$ {total}";
	return resposta;
}

CalcularIngressoCinemark a = new CalcularIngressoCinemark();
a.QtdInteira = 2;
a.QtdMeia = 3;
a.Preco = 17.50;
a.Filme = "Um lugar silencioso 2";

string b = CalcularIngresso(a);
Console.WriteLine(b);
```

## Exercício 02

- **Crie uma função que implemente a lógica do jogo Jokenpo entre 2 jogadores e retorne verd/falso se o jogador 1 venceu.**
 
  **As possibilidades de jogada são “Papel”, “Pedra” e “Tesoura”.**
```csharp=
using System;

public class CalcularPartida
{
	public string Jogador1 { get; set; }
	public string Jogador2 { get; set; }
}

public bool Jokenpo (CalcularPartida partida)
{
	bool jogador1venceu = (partida.Jogador1 == "Papel" && partida.Jogador2 == "Tesoura")
							||
						  (partida.Jogador1 == "Pedra" && partida.Jogador2 == "Tesoura")
	                        ||
						  (partida.Jogador1 == "Papel" && partida.Jogador2 == "Papel");
	return jogador1venceu;
}

CalcularPartida a = new CalcularPartida();
a.Jogador1 = "Papel";
a.Jogador2 = "Tesoura";

bool b = Jokenpo(a);
Console.WriteLine("Jogador venceu: " + b);
```

## Exercício 03

- **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 o valor da diária é R$ 120,00.**
```csharp=
using System;

public class CalcularHospedagem
{
    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(CalcularHospedagem hotel)
{
    double dias = TotalDias1(hotel.Checkin, hotel.Checkout);
    double a = dias * hotel.QtdPessoas * 120;
    return a;
}

CalcularHospedagem b = new CalcularHospedagem();
b.Checkin = new DateTime(2021, 5, 5);
b.Checkout = new DateTime(2021, 5, 6);
b.QtdPessoas = 4;

double c = HospedagemHotel(b);
Console.WriteLine("Hospedagem ficou " + c);
```

## Exercício 04

- **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=
using System;				

public class PassagemAereaCalcular
{
    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 CalcularTotalDias2(DateTime ida, DateTime volta)
{
    TimeSpan dif = volta - ida;
    double a = dif.TotalDays + 1;
    return a;
}

public double CalcularPassagemAerea(PassagemAereaCalcular passagem)
{
    double dias = CalcularTotalDias2(passagem.Ida, passagem.Volta);
    double b = (dias * passagem.QtdAdultos * 200) + (dias * passagem.QtdCriancas * 100);
    return b;
}

PassagemAereaCalcular c = new PassagemAereaCalcular();
c.Ida = new DateTime(2021, 5, 5);
c.Volta = new DateTime(2021, 5, 6);
c.QtdAdultos = 4;
c.QtdCriancas = 5;
c.Origem = "SP";
c.Destino = "Dublin";

double d = CalcularPassagemAerea(c);
Console.WriteLine("Total da Viagem: " + d);
```

## Exercício 05

- **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. O comprovante deve ter uma mensagem que segue o template abaixo:**

  **“A compra do Pacote de XXX dias para o destino XXX foi finalizado com sucesso! O total incluindo todas despesas é de R$ XXX”**
```csharp=
using System;				

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 a = dif.TotalDays + 5;
    return a;
}

public double CalcularPassagemAerea(PassagemAerea2 passagem)
{
    double dias = TotalDias3(passagem.Ida, passagem.Volta);
    double b = (dias * passagem.QtdAdultos * 250) + (dias * passagem.QtdCriancas * 130);
    return b;
}


public double HospedagemHotel(EstadioHotel2 hotel)
{
    double dias = TotalDias3(hotel.Checkin, hotel.Checkout);
    double c = dias * hotel.QtdPessoas * 200;
    return c;
}


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 d = new PassagemAerea2();
d.Ida = new DateTime(2021, 5, 5);
d.Volta = new DateTime(2021, 5, 6);
d.QtdAdultos = 4;
d.QtdCriancas = 5;
d.Origem = "SP";
d.Destino = "Dublin";

EstadioHotel2 e = new EstadioHotel2();
e.Checkin = new DateTime(2021, 5, 5);
e.Checkout = new DateTime(2021, 5, 6);
e.QtdPessoas = 9;

Comprovante comprovante = PacoteViagem(d, e);
Console.WriteLine(comprovante.Total);
Console.WriteLine(comprovante.TotalPassagem);
Console.WriteLine(comprovante.TotalHotel);
Console.WriteLine(comprovante.Mensagem);
```