---
# System prepended metadata

title: 'Session Four: Programs also choose! | Fund. Lógica'

---

# Session Four: Programs also choose! | Fund. Lógica
autor: Alan Oliveira Rocha Santiago
turma: InfoB
número: 02

[TOC]

## Exercicio 1
Crie uma função simples que verifique se dois retângulos são
iguais baseado em suas áreas.

- Se forem iguais, retorne:
“Os retângulos são iguais”

- Se forem diferentes, retorne:
“Os retângulos são diferentes”
```csharp=
public string RetangulosIguais(double b1,double a1,double b2,double a2)
{
    bool iguais = (b1 * a1) == (b2 * a2);
    
    string x;
    if(iguais == true)
    {
        x = "Os retângulos são iguais";
    }
    else
    {
        x = "Os retângulos são diferentes";
    }
    return x;
}

string ri1 = RetangulosIguais(2,25,2,25);
Console.WriteLine (ri1);
//Os retângulos são iguais
```
## Exercicio 2
Crie uma função compostas que
verifique se dois retângulos são
iguais baseado em suas áreas.

- Se forem iguais, retorne:
“Os retângulos são iguais”

- Se o primeiro for maior, retorne:
“O primeiro retângulo é maior.”

- Se o segundo for maior, retorne:
“O segundo retângulo é maior.”
```csharp=
public double AreaDoRetangulo(double basee,double altura)
{
    double x = basee * altura;
    return x;
}

public string RetangulosIguais2(double b1, double a1, double b2, double a2)
{
    double area1 = AreaDoRetangulo(b1,a1);
    double area2 = AreaDoRetangulo(b2,a2);
    bool iguais = area1 == area2;
    bool maior = area1 > area2;
    bool maior2 = area1 < area2;
    
    string x = ""; 
    if(iguais == true)
    {
        x = "Os retangulos são iguais";
    }
    else if(maior == true)
    {
        x ="O primeiro retângulo é maior.";
    }
    else if(maior2 == true)
    {
        x = "O segundo retângulo é maior.";
    }

    return x;
}

string ri2 = RetangulosIguais2 (5,09,2,25);
Console.WriteLine (ri2);
//O segundo retângulo é maior
```
## Exercicio 3
Crie uma função compostas que
verifique se três retângulos são
iguais baseado em suas áreas.

- Se forem iguais, retorne:
“Os retângulos são iguais”

- Se o primeiro for o maior, retorne:
“O primeiro retângulo é maior.”

- Se o segundo for o maior, retorne:
“O segundo retângulo é maior.”

- Se o terceiro for o maior, retorne:
“O terceiro retângulo é maior.”

- Se todos testes acima forem falsos,
retorne:
“Existem 2 maiores retângulos”
```csharp=
public class Retangulo
{
    public double Altura1{get; set;}
    public double Altura2{get; set;}
    public double Altura3{get; set;}
    public double Base1{get; set;}
    public double Base2{get; set;}
    public double Base3{get; set;}
}

public double AreaDoRetangulo2(double basee, double area)
{
    double x = basee * area;
    return x;
}

public string RetangulosIguais3(Retangulo ret)
{
    double r1 = (ret.Altura1 * ret.Base1);
    double r2 = (ret.Altura2 * ret.Base2);
    double r3 = (ret.Altura3 * ret.Base3);

    bool iguais = r1 == r2;
    bool iguais2 = r1 == r3;
    bool iguais3 = r2 == r3;

    string x = "error!";
    if(iguais == true && iguais2 == true && iguais3 == true)
    {
        x = "Os retângulos são iguais";
    }
    else if(r1 > r2 && r1 > r3)
    {
        x = "O primeiro retângulo é maior.";
    }
    else if(r2 > r1 && r2 > r3)
    {
        x = "O segundo retângulo é maior.";
    }
    else if(r3 > r2 && r3 > r1)
    {
        x = "O terceiro retângulo é maior.";
    }
	else
	{
		x = "existem 2 retangulos maiores";
	}
    
    return x;
}

Retangulo retangulo = new Retangulo();
retangulo.Altura1 = 5;
retangulo.Base1 = 10;
retangulo.Altura2 = 5;
retangulo.Base2 = 10;
retangulo.Altura3 = 5;
retangulo.Base3 = 15;

string retigual = RetangulosIguais3(retangulo);
Console.WriteLine (retigual);
//O terceiro retângulo é maior.
```
## Exercicio 4
Crie a(s) classe(s) representando a abstração de
função e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:

- Calcular o valor total a pagar referente a compra
de um ingresso do Cinemark considerando se o
ingresso é meia ou inteira.

- Realize a lógica acima, mas no retorno você deve
seguir o padrão abaixo:
“Compra concluída! O ingresso para o filme XXX é
de R$ XXXX”

- Realize a lógica da primeira função, mas
considerando a compra de dois ingressos.
```csharp=
public class Ingresso
{
    public bool Meia{get; set;}
    public double Preco{get; set;}
    public string Filme{get; set;}
}

public class Cinemark4
{
    public double CalcularTotal1(Ingresso ing)
    {
        double x = 0;
        if(ing.Meia == true)
        {
            x = ing.Preco / 2;
        }
        else
        {
            x = ing.Preco;
        }
        return x;
    }
    public string CalcularTotal2(Ingresso ing)
    {
        double x = 0;
        if(ing.Meia == true)
        {
            x = ing.Preco / 2;
        }
        else
        {
            x = ing.Preco;
        }
        string text = $"Compra concluída! O ingresso para o filme {ing.Filme} é de R$ {x}";
        return text;
    }
    public double CalcularTotal3(Ingresso ing1, Ingresso ing2)
    {
        double x = 0;
        if(ing1.Meia == true)
        {
            x = ing1.Preco / 2;
        }
        else
        {
            x = ing1.Preco;
        }

        double y = 0;
        if(ing2.Meia == true)
        {
            y = ing2.Preco / 2;
        }
        else
        {
            y = ing2.Preco;
        }

        return x + y;
    }
}


Ingresso ing1 = new Ingresso();
ing1.Meia = true;
ing1.Preco = 20;
ing1.Filme = "Liga da Justiça - Snyder cut";
Ingresso ing2 = new Ingresso();
ing2.Meia = false;
ing2.Preco = 20;
ing2.Filme = "Demon Slayer - Trem Infinito";
Ingresso ing3 = new Ingresso();
ing3.Meia = false;
ing3.Preco = 30;
ing3.Filme = "Liga da Justiça - Snyder cut";
Ingresso ing4 = new Ingresso();
ing4.Meia = false;
ing4.Preco = 30;
ing4.Filme = "Demon Slayer - Trem Infinito";

Cinemark4 cine4 = new Cinemark4();

double cinema1 = cine4.CalcularTotal1(ing1);
string cinema2 = cine4.CalcularTotal2(ing2);
double cinema3 = cine4.CalcularTotal3(ing3,ing4);
Console.WriteLine(cinema1);
Console.WriteLine(cinema2);
Console.WriteLine(cinema3);
//10
//Compra concluída! O ingresso para o filme Demon Slayer - Trem Infinito é de R$ 20
//60
```
## Exercicio 5
Crie a(s) classe(s) representando a abstração de
função e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:

- Calcular o valor total a pagar referente a compra
de ingressos do Cinemark considerando se os
ingressos são meia ou inteira.

- Realize a lógica acima, mas no retorno você deve
seguir o padrão abaixo:
“Compra concluída! A compra de XXXX ingressos
XXXX para o filme XXX é de R$ XXXX”

**Ex1. Compra concluída! A compra de 2 ingressos
INTEIRA para o filme Avengers é de R$ 50,00
Ex2. Compra concluída! A compra de 2 ingressos
MEIA para o filme Avengers é de R$ 25,00**
```csharp=
public class Ingressos
{
    public int QtdIngressos{get; set;}
    public bool Meia{get; set;}

    public double Preco{get; set;}
    public string Filme{get; set;}
}

public double CalcularMedia11(Ingressos ingresso)
{
    double x = (ingresso.QtdIngressos * ingresso.Preco) / 2;
    return x;
}

public string CalcularMedia22(Ingressos ingresso)
{

    double total = 0;
    if(ingresso.Meia == false)
    {
        total = ingresso.QtdIngressos * ingresso.Preco;
    }
    else
    {
        total = CalcularMedia11(ingresso);
    }

    string meiatexto = "";
    if(ingresso.Meia == false)
    {
        meiatexto = "Inteira";
    }
    else
    {
        meiatexto = "Meia";
    }

    string ing1 = $"Ex5: Compra concluída! A compra de {ingresso.QtdIngressos} ingressos {meiatexto} para o filme {ingresso.Filme} é de R$ {total}";
    return ing1;
}

Ingressos ingre2 = new Ingressos();
ingre2.QtdIngressos = 3;
ingre2.Meia = true;
ingre2.Preco = 10;
ingre2.Filme = "Midsommar - O mal não espera a noite";

string ingre1 = CalcularMedia22(ingre2);
Console.WriteLine(ingre1);
//Compra concluída! A compra de 3 ingressos Meia para o filme Midsommar - O mal não espera a noite é de R$ 15
```
## Exercicio 6
Crie a(s) classe(s) representando a abstração de
função e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:

- Calcular o valor total a pagar referente a compra
de ingressos do Cinemark considerando se os
ingressos são meia ou inteira e o cupom de
desconto.

- Aplicar o cupom de desconto que vem em
porcentagem em cima do valor total dos ingressos.
A função deve retornar o valor já com o desconto
aplicado.
```csharp=
public class Ingressos2
{
    public int QtdIngresso{get; set;}
    public bool Meia{get; set;}
    public double Preco{get; set;}
    public string Filme{get; set;}
}

public class Cinemark6
{
    public double CalcularTotal(Ingressos2 ingresso, double c)
    {
        double ing = 0;
        if(ingresso.Meia == true)
        {
            ing = ingresso.QtdIngresso * ingresso.Preco / 2;
        }
        else
        {
            ing = ingresso.Preco;
        }

        double total = AplicarDados(ing, c);
        return total;
    }

    static double AplicarDados(double total, double cupom)
    {
        double td = total * cupom / 100;
        double descCupom = total - td;
        return descCupom;
    }

}

Ingressos2 ingresso6 = new Ingressos2();
ingresso6.QtdIngresso = 3;
ingresso6.Meia = true;
ingresso6.Preco = 10;
ingresso6.Filme = "OldBoy";
double cupom1 = 5;
Cinemark6 cine1 = new Cinemark6();

double ingre6 = cine1.CalcularTotal(ingresso6, cupom1);
Console.WriteLine(ingre6);
//14,25
```
## Exercicio 7
Crie a(s) classe(s) representando a abstração de
função e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:

- Calcular o valor total a pagar referente a compra
de ingressos do Cinemark considerando se os
ingressos são meia ou inteira e o cupom de
desconto. Além do cupom de desconto você deve
aplicar as seguintes regras:
    * Se o total da compra de ingressos for maior
que R$ 100,00 após a aplicação do desconto,
aplicar mais 10% de desconto.

- Aplicar o cupom de desconto que vem em
porcentagem em cima do valor total dos ingressos.
A função deve retornar o valor já com o desconto
aplicado.
```csharp=
public class Ingressos3
{
    public int QtdIngresso{get; set;}
    public bool Meia{get; set;}
    public double Preco{get; set;}
    public string Filme{get; set;}
}

public class Cinemark7
{
    public double CalcularTotal22(Ingressos3 ingresso, double cupom)
    {
        double total = 0;
        if(ingresso.Meia == true)
        {
            total = ingresso.QtdIngresso * ingresso.Preco / 2;
        }
        else
        {
            total = ingresso.QtdIngresso * ingresso.Preco;
        }

        double descTotal = AplicarDados22(total, cupom);
        double x = descTotal * (10 / 100);
        double y = descTotal - x;
        double DezDesc = 0;

        if(descTotal > 100)
        {
            DezDesc = y;
        }
        else
        {
            DezDesc = descTotal;
        }
        return DezDesc;

    }

    static double AplicarDados22(double total, double cupom)
    {
        double x = total * (cupom / 100);
        double y = total - x;
        return y;
    }
}


Ingressos3 ing7 = new Ingressos3();
ing7.QtdIngresso = 5;
ing7.Meia = false;
ing7.Preco = 30;
ing7.Filme = "Mortal Kombat(2021)";

Cinemark7 ingre7 = new Cinemark7();

double desc7 = 30;

double ingresso7 = ingre7.CalcularTotal22(ing7, desc7);
Console.WriteLine(ingresso7);
//105
```
## Exercicio 8
Crie a(s) classe(s) representando a abstração de
função e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:

- Calcular o valor total a pagar referente a compra de
ingressos do Cinemark considerando se os ingressos
são meia ou inteira e o cupom de desconto. Além do
cupom de desconto você deve aplicar as seguintes
regras:
    * Se o dia atual for uma quarta-feira aplicar
desconto de 50% no valor da compra após aplicar
o desconto.
    * Se o total da compra de ingressos for maior que
R$ 100,00 após a verificação de quarta-feira,
aplicar mais 10% de desconto.

- Aplicar o cupom de desconto que vem em
porcentagem em cima do valor total dos ingressos. A
função deve retornar o valor já com o desconto
aplicado.
```csharp=
public class Ingressos8
{
    public int QtdIngresso{get; set;}
    public bool Meia{get; set;}
    public double Preco{get; set;}
    public string Filme{get; set;}
}

public class Cinemark8
{
    public double CalcularTotal(Ingressos8 ingresso,double cupom)
    {
        double meia = 0;
        if(ingresso.Meia == true)
        {
            meia = ingresso.QtdIngresso * ingresso.Preco / 2;
        }
        else
        {
            meia = ingresso.QtdIngresso * ingresso.Preco; 
        }
        
        double descTotal = AplicarDados(meia, cupom);

        double desc3 = meia * (50 / 100);
        double desc4 = meia - desc3;

        double desc1 = meia * (10 / 100);
        double desc2 = meia - desc1;
        
        if(DateTime.Now.DayOfWeek == DayOfWeek.Saturday)
        {
            descTotal = desc4;
        }

        if(descTotal > 100)
        {
            descTotal = desc2;
        }

        return descTotal;
    }

    static double AplicarDados(double total, double cupom)
    {
        double x = total * (cupom / 100);
        double y = total - x;
        return y;
    }
}

Ingressos8 ing8 = new Ingressos8();
ing8.QtdIngresso = 2;
ing8.Meia = true;
ing8.Preco = 15;
ing8.Filme = "Liga da Justiça - Snyder Cut";

Cinemark8 cine8 = new Cinemark8();

double desc8 = 5;

double ingre8 = cine8.CalcularTotal(ing8,desc8);
Console.WriteLine(ingre8);
//14,25
```
## Exercicio 9
Crie a(s) classe(s) representando a abstração de função
e/ou dados ao lado. Abaixo a especificação das situações a
serem resolvidas:

- Calcular o valor total a pagar referente a compra de
ingressos do Cinemark considerando se os ingressos são
meia ou inteira e o cupom de desconto. Além do cupom
de desconto você deve aplicar as seguintes regras:
    - Se o gênero for ‘NACIONAL’ o valor de cada ingresso
será R$ 5,00 independente de qualquer valor e
todas as regras abaixo serão desconsideradas.
    - Se o dia atual for uma quarta-feira aplicar desconto
de 50% no valor da compra após aplicar o desconto.
    - Se o total da compra de ingressos for maior que R$
100,00 após a verificação de quarta-feira, aplicar
mais 10% de desconto.

- Aplicar o cupom de desconto que vem em porcentagem
em cima do valor total dos ingressos. A função deve
retornar o valor já com o desconto aplicado.
```csharp=
public class Ingressos9
{
    public int QtdIngresso{get; set;}
    public bool Meia{get; set;}
    public double Preco{get; set;}
    public string Filme{get; set;}
    public string Genero{get; set;}
}

public class Cinemark9
{
    public double CalcularTotal(Ingressos9 ing, double cupom)
    {
        double meia = 0;
        if(ing.Meia == true)
        {
            meia = ing.QtdIngresso * ing.Preco / 2;
        }
        else
        {
            meia = ing.QtdIngresso * ing.Preco;
        }

        double total = AplicarDados(meia, cupom);
        double descQuarta = AplicarDescQuarta(meia);
        double desc10 = AplicarDesc10(meia);

        if(DateTime.Now.DayOfWeek == DayOfWeek.Saturday)
        {
            total = descQuarta;
        }
        if(total > 100)
        {
            total = desc10;
        }
        if(ing.Genero == "Nacional")
        {
            total = ing.QtdIngresso * 5;
        }
        return total;
    }

    static double AplicarDados(double total, double cupom)
    {
        double desc1 = total * (cupom / 100);
        double desc2 = total - desc1;
        return desc2;
    }

    static double AplicarDesc10(double total)
    {
        double desc1 = total * (10 / 100);
        double desc2 = total - desc1;
        return desc2;
    }

    static double AplicarDescQuarta(double total)
    {
        double desc1 = total * (50 / 100);
        double desc2 = total - desc1;
        return desc2;
    }
} 

Ingressos9 ing9 = new Ingressos9();
ing9.QtdIngresso = 2;
ing9.Meia = true;
ing9.Preco = 15;
ing9.Filme = "Hereditario";
ing9.Genero = "Terror";

Cinemark9 cine9 = new Cinemark9();

double desc9 = 10;

double ingre9 = cine9.CalcularTotal(ing9, desc9);
Console.WriteLine(ingre9);
//13,5
```
## Exercicio 10
Faça uma função que implemente a lógica que identifique o vencedor de uma partida
de Jokenpo dizendo se quem ganhou foi o jogador1, jogador2 ou empate.
```csharp=
public class Jogadores
{
    public string Jogador1{get; set;}
    public string Jogador2{get; set;}
}

public class Jokenpo
{
    public string Partida(Jogadores jogador)
    {
        bool x = jogador.Jogador1 == "papel" && jogador.Jogador2 == "pedra";
        bool y = jogador.Jogador1 == "pedra" && jogador.Jogador2 == "tesoura";
        bool z = jogador.Jogador1 == "tesoura" && jogador.Jogador2 == "papel";

        string ganhador = "";

        if(x == true || y == true || z == true)
        {
            ganhador = "Jogador1 Venceu";
        }
        else
        {
            ganhador = "Jogador2 Venceu";
        }

        if(jogador.Jogador1 == jogador.Jogador2)
        {
            ganhador = "empate";
        }

        return ganhador;
    }
}

Jogadores jogador = new Jogadores();
jogador.Jogador1 = "papel";
jogador.Jogador2 = "papel";

Jokenpo jogada = new Jokenpo();

string jogar = jogada.Partida(jogador);
Console.WriteLine(jogar);
//empate
```
## Exercicio 11
Faça uma função que implemente a lógica que identifique o vencedor de uma partida
de Par ou Ímpar dizendo se quem ganhou foi o jogador1, jogador2 ou empate.
```csharp=
public class JogadorPar
{
    public string Jogador1{get; set;}
    public string Jogador2{get; set;}
    public int Numero1{get; set;}
    public int Numero2{get; set;}
}

public class ImparPar
{
    public string Partida(JogadorPar jogador)
    {
        int x = jogador.Numero1 + jogador.Numero2;
        string ip = ImparOuPar(x);

        string vencedor = "";
        if(jogador.Jogador1 == ip)
        {
            vencedor = "Jogador1 venceu";
        }
        else
        {
            vencedor = "Jogador2 venceu";
        }

        if(jogador.Jogador1 == jogador.Jogador2)
        {
            vencedor = "!error";
        }

        return vencedor;
    }

    public string ImparOuPar(int numero)
    {
        string x = "";
        if(numero % 2 == 0)
        {
            x = "par";
        }
        else
        {
            x = "impar";
        }
        
        return x;
    }
}

JogadorPar ip = new JogadorPar();
ip.Jogador1 = "impar";
ip.Numero1 = 10;
ip.Jogador2 = "par";
ip.Numero2 = 8;

ImparPar jogada2 = new ImparPar();

string jogar2 = jogada2.Partida(ip);
Console.WriteLine(jogar2);
//Jogador2 venceu
```