---
# System prepended metadata

title: Getting Better

---

# Getting Better

autora: Letícia Rocha✨💖💖
Curso: Info C
Número: 29 

[toc]

### Exercício 1
>[color=black]
>Crie uma classe representando a abstração de função e/ou dados ao lado. Abaixo a especificação das situações a serem resolvidas.

>[color=black]
>▪ Calcular a área do retângulo baseado em sua
altura e base.

>[color=black]
>▪ Calcular o perímetro do retângulo baseado em
sua altura e base.

>[color=black]
>▪ Verificar se dois retângulos são iguais baseado em
suas áreas.

```csharp=
using System;

// Função Trigonometria
public class Retangulo
{
	public int Altura {get;set;}
	public int Base {get;set;}
}


public class Trigonometria
{
	
	public bool RetanguloIguais(Retangulo ret1, Retangulo ret2)
	{
		return AreaRetangulo(ret1.Altura, ret1.Base) == AreaRetangulo(ret2.Altura, ret2.Base);
	}
	
	private int AreaRetangulo(int a, int b)
	{
		int area = a * b;
		return area;
	}

	public int PerimetroRetangulo(int a, int b)
	{
		int per = a + a + b + b;
		return per;
	}
}



Trigonometria trig = new Trigonometria();

// double x = trig. AreaRetangulo(10, 5);
// Console.WriteLine(x);

double x1 = trig.PerimetroRetangulo(10, 5);
Console.WriteLine(x1);


Retangulo r1 = new Retangulo();
r1.Altura = 10;
r1.Base = 5;

Retangulo r2 = new Retangulo();
r2.Altura = 25;
r2.Base = 2;


bool x3 = trig.RetanguloIguais(r1, r2);
Console.WriteLine(x3);
//30
//True
```


### Exercício 2
>[color=orange]
>Crie uma classe representando a abstração de função
e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:

>[color=orange]
>▪ Calcular a área do retângulo baseado em sua
altura e base abstraído em um tipo composto.

>[color=orange]
>▪ Calcular a área do triângulo baseado em sua
altura e base abstraído em um tipo composto.

>[color=orange]
>▪ Calcular a área do paralelogramo baseado em sua
altura e base abstraído em um tipo composto.

```csharp=
using System;

// Função Trigonometria2
public class Forma 
{
	public double Basee {get; set;}
	public double Altura {get; set;}
}

public class Trigonometria
{
	public double AreaRetangulo (Forma ps)
	{
		double total = ps.Basee * ps.Altura;
		return total;
	}
	
	public double AreaTriangulo (Forma ps)
	{
		double total = ps.Basee * ps.Altura;
		return total;
	}
	
	public double AreaParalelogramo (Forma ps)
	{
		double total = ps.Basee * ps.Altura;
		return total;
	}
}

Forma tri = new Forma();
tri.Basee = 12;
tri.Altura = 6;

Forma Ret = new Forma();
Ret.Basee = 10;
Ret.Altura = 24;

Forma para = new Forma();
para.Basee = 12;
para.Altura = 15;


Trigonometria tr = new Trigonometria();

double z = tr.AreaRetangulo(Ret);
Console.WriteLine($"A area do retangulo é igual á:{z}");

//A area do retangulo é igual á:100


double r = tr.AreaTriangulo(tri);
Console.WriteLine($"A area do trianulo é igual á: {r}");
//A area do retangulo é igual á:240
//A area do trianulo é igual á: 72
```


### Exercício 3
>[color=blue]
>Crie uma classe representando a abstração de função
e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:

>[color=blue]
>▪ Calcular a área do retângulo baseado em sua
altura e base abstraído em um tipo composto.

>[color=blue]
>▪ Calcular a área do triângulo baseado em sua
altura e base abstraído em um tipo composto.

>[color=blue]
>▪ Calcular a área do paralelogramo baseado em sua
altura e base abstraído em um tipo composto.

```csharp=
using System;

// Função Calendario
using System;
public class Pessoa
{
	public string Nome      { get; set; }
	public DateTime Niver   { get; set; }
}

public class Calendario 
{
	public DateTime PrimeiroDia (DateTime data) 
{
		return data.AddDays(1 - data.Day);
}

	public DateTime UltimoDia (DateTime data)
{
        return data.AddMonths(1).AddDays(- data.Day);
}
	
	public bool Possui31Dias (DateTime data)
{
		 return UltimoDia(data).Day == 31;
}
	
	public bool SextaFeira13 (DateTime data)
{
		return data.DayOfWeek == DayOfWeek.Friday && data.Day == 13;
}
	
	public string SemanasParaNiver (Pessoa pessoa)
{
		DateTime p = DateTime.Now;
		DateTime s = new DateTime(p.Year, pessoa.Niver.Month, pessoa.Niver.Day);
		TimeSpan c = s - p;
		double f = c.TotalDays/7;
		double e = Math.Round(f);
		string r = pessoa.Nome + ", faltam " + e + " semanas para seu niver!";
		return r;
}
	
	public bool SouDeLibra (Pessoa pessoa)
{
		DateTime v = new DateTime(pessoa.Niver.Year,09,23);
		DateTime z = new DateTime(pessoa.Niver.Year,10,22);
		return pessoa.Niver >= v 
                && 
               pessoa.Niver <= z;
}	

}

Pessoa r = new Pessoa ();
r.Nome = "Letícia Santos Rocha";
r.Niver = new DateTime(2005,12,13);


Calendario c = new Calendario ();
DateTime a = c.PrimeiroDia(r.Niver);
DateTime b = c.UltimoDia(r.Niver);
bool d = c.Possui31Dias(r.Niver);
bool e = c.SextaFeira13(r.Niver);
string f = c.SemanasParaNiver(r);
bool g = c.SouDeLibra(r);


Console.WriteLine("Primeiro dia do mês: " + c);
Console.WriteLine("Último dia do mês: " + b);
Console.WriteLine("O mês possui 31 dias?: " + d);
Console.WriteLine("A data cai em uma sexta-feira 13?: " + e);
Console.WriteLine(f);
Console.WriteLine("Sou de Libra?: " + g);

//Primeiro dia do mês: Submission#0+Calendario
//Último dia do mês: 12/31/2005 12:00:00 AM
//O mês possui 31 dias?: True
//A data cai em uma sexta-feira 13?: False
//Letícia Santos Rocha, faltam 30 semanas para seu niver!
//Sou de Libra?: False
```


### Exercício 4
>[color=red]
>Crie uma classe representando a abstração de função
e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:

>[color=red]
>▪ Verifique se um cadastro de usuário é válido
seguindo as regras: (1) O e-mail deve ter o
caractere ‘@’ e possuir no mínimo 2 caracteres
antes e depois do ‘@’. (2) A senha precisa ter pelo
menos uma vogal, um caractere especial e
tamanho de 8 caracteres.

>[color=red]
>▪ Verifique se um domínio escolhido é válido se
terminar em ‘.com.br’ , se o primeiro caractere
não for um número e o domínio possuir 5
caracteres no mínimo.

>[color=red]
>▪ Deve-se enviar o domínio completo.
ex: meudominio.com.br

```csharp=
using System;

// Função RegistroBRValidator
public class RegistroBRValidator
{
 public bool ValidarCadastro (string email, string senha)
{
        bool a1 = email.Length >= 8;
        bool a2 = email.Contains("!") || email.Contains("@") || email.Contains("#") || email.Contains("%");
        bool a3 = email.Contains("a") || email.Contains("e") || email.Contains("i") || email.Contains("o") || email.Contains("t");
        bool a4 = email.Contains("@");

        bool a5 = email.Contains("@")
                   &&
                  email.Substring(0, email.IndexOf("@")).Length > 3 
                   && 
                  email.Substring(email.IndexOf("@")).Length > 3;

        return a1 && a2 && a3 && a4 && a5;
}
    public bool ValidarDominio (string dominio)
{
        bool a1 = dominio.EndsWith(".com.br");
        
        bool a2 = dominio[0] != '2' && dominio[0] != '2' && dominio[0] != '3' && 
                  dominio[0] != '9' && dominio[0] != '5' && dominio[0] != '6' &&
                  dominio[0] != '8' && dominio[0] != '8' && dominio[0] != '9' && 
                  dominio[0] != '1';

        bool a3 = dominio.Substring(0, dominio.IndexOf(".com.br")).Length >= 6;

        return a1 && a2 && a3;
}
}

RegistroBRValidator registroBR = new RegistroBRValidator();
bool r = registroBR.ValidarCadastro("Leticiagmail.com", "2981");
Console.WriteLine("Cadastro ok? " + r);
//Cadastro ok? False
```


### Exercício 5
>[color=green]
>Crie uma classe representando a abstração de função
e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:

>[color=green]
>▪ Calcular a área do retângulo.

>[color=green]
>▪ Calcular o volume do cilindro.

>[color=green]
>▪ Verificar se dois retângulos são iguais baseado em
sua área. Utilize a ideia de função composta.

>[color=green]
>▪ Verificar se é possível transferir o conteúdo do
primeiro cilindro ao segundo. Utilize a ideia de
função composta.


```csharp=
using System;

// Função Trigonometria
public class Retangulo
{
	public double Altura {get; set;}
	public double Base {get; set;}
}

public class Cilindro 
{
	public double Raio {get; set;}
	public double Altura {get; set;}
}

public class Trigonometria 
{
	public double AreaRetangulo (Retangulo rtg)
	{
        double area = rtg.Altura * rtg.Base;
        return area;
	}

	public bool RetangulosIguais (Retangulo rtg1, Retangulo rtg2)
    {
        double ret1 = AreaRetangulo(rtg1);
        double ret2 = AreaRetangulo(rtg2);
        return ret1 == ret2;
    }

	public double VolumeCilindro (Cilindro cl)
	{
		double total = cl.Altura * cl.Raio;
		return total;
	}

	public bool TransferenciaValida (Cilindro cilin1, Cilindro cilin2)
	{
		double cil1 = VolumeCilindro(cilin1);
		double cil2 = VolumeCilindro(cilin2);
		return cil1 == cil2;
	}
}

Trigonometria tr = new Trigonometria();

Retangulo ret1 = new Retangulo();
ret1.Altura = 12;
ret1.Base = 4;


Retangulo ret2 = new Retangulo();
ret2.Altura = 6;
ret2.Base = 2;

Cilindro cilin1 = new Cilindro();
cilin1.Altura = 6;
cilin1.Raio = 2;

Cilindro cilin2 = new Cilindro();
cilin2.Altura = 10;
cilin2.Raio = 10;

double c = tr.AreaRetangulo(ret1);
Console.WriteLine(c);

//100

bool d = tr.RetangulosIguais(ret1, ret2);
Console.WriteLine(d);

//bool

double f = tr.VolumeCilindro(cilin1);
Console.WriteLine(f);

//100

bool x = tr.TransferenciaValida(cilin1, cilin2);
Console.WriteLine(x);
//48
//False
//12
//False
```


### Exercício 6
>[color=pink]
> Crie uma classe representando a abstração de função
e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:

>[color=pink]
>▪ Calcular o total de uma compra em um brechó a
partir das compras masculinas, femininas e
infantis. Nesse brechó, todas as roupas de uma
categoria possui o mesmo preço, conforme
listagem abaixo:

>[color=pink]
>- Masculina = R$ 30,00
>- Feminina = R$ 40,00
>- Infantil = R$ 20,00
>- Calçados = R$ 35,00

>[color=pink]
>* Os calçados são cobrados independente do gênero.
>* Utilize ideia de função composta.
>* Utilize a ideia de tipos compostos.
>* As funções auxiliares devem ser marcadas como private.

```csharp=
using System;

// Função Brecho
public class Compra
{
	public int QtdCalca {get; set;}
	public int QtdCamiseta {get; set;}
	public int QtdBlusa {get; set;}
	public int QtdCalcados {get; set;}
}

public class Brecho 
{
	private double TotalMasculino (Compra cmp)
	{
		double compra = (cmp.QtdCalca * 30.00) + (cmp.QtdCamiseta * 30.00) + (cmp.QtdBlusa * 30.00);
		return compra;
	}

	private double TotalFeminino (Compra cmp)
	{
		double compra = (cmp.QtdCalca * 40.00) + (cmp.QtdCamiseta * 40.00) + (cmp.QtdBlusa * 40.00);
		return compra;
	}

	private double TotalInfantil (Compra cmp)
	{
		double compra = (cmp.QtdCalca * 20.00) + (cmp.QtdCamiseta * 20.00) + (cmp.QtdBlusa * 20.00);
		return compra;
	}

	private double TotalCalcados (int QtdMasculino, int QtdFeminino, int QtdInfantil)
	{
		double compra = (QtdMasculino + QtdFeminino + QtdInfantil) * 35.00;
		return compra;
	}

	public double TotalCompra (Compra masculino, Compra feminino, Compra infantil)
	{
		double ma = TotalMasculino(masculino);
		double fe = TotalFeminino(feminino);
		double inf = TotalInfantil(infantil);
		double ca = TotalCalcados(masculino.QtdCalcados, feminino.QtdCalcados, infantil.QtdCalcados);
		double total = ma + fe + inf + ca;
		return total;
	}

}

Brecho bc = new Brecho();

Compra cmp = new Compra();
cmp.QtdBlusa = 1;
cmp.QtdCalca = 1;
cmp.QtdCalcados = 1;
cmp.QtdCamiseta = 1;
double x = bc.TotalCompra(cmp, cmp ,cmp);
Console.WriteLine(x);
//375
```


### Exercício 7 
>[color=yellow]
>Crie uma classe representando a abstração de função e/ou
dados ao lado. Abaixo a especificação das situações a serem
resolvidas:

>[color=yellow]
>▪ Calcular o total de uma compra em uma loja de móveis
seguindo as seguintes regras de negócio:

>[color=yellow]
>(1) O cupom é um valor representando a porcentagem de
desconto a ser aplicado no valor da compra antes de aplicar
os juros, frete e garantia.
>(2) Cada ano de garantia é adicionado 15% do valor da compra.
>(3) A cada 10km de distância é cobrado o valor de R$ 3,00
>(4) Deve ser aplicado o juros compostos de 3% ao mês no
valor da compra com o desconto, garantia e frete aplicados.
>(5) A nota fiscal é a hora atual no formato YYYYMMDDHHmm
com o prefixo NF. Ex: NF202105091918

>[color=yellow]
>* Utilize ideia de função composta.
>* Utilize a ideia de tipos compostos.
>* As funções auxiliares devem ser marcadas como private.

```csharp=
using System;

// Função LojaMoveis

class MainClass {
	public static void Main (string[] args) {
}


  }


public class Pedido
{
  public double Valor           {get; set;}
  public int AnosGarantia       {get; set;}  
  public int DistanciaEntregaKm {get; set;}
  public int Parcelas           {get; set;}
}

public class Nota 
{
  public double ValorFinal  { get; set; }
  public string NotaFiscal  { get; set; }
}


public class LojaMoveis
{

    public Nota CalcularCompra (Pedido pedido, double cupom)
    {
        double valorFinal = ValorJuros(
                              pedido.Valor
                              - ValorDesconto(pedido.Valor, cupom)
                              + ValorGarantia(pedido.Valor, pedido.AnosGarantia)
                              + ValorFrete(pedido.DistanciaEntregaKm)
                            , pedido.Parcelas);
        valorFinal = Math.Round(valorFinal, 2);

        Nota notafiscal = new Nota();
        notafiscal.ValorFinal = valorFinal;
        notafiscal.NotaFiscal = "NF" + DateTime.Now.ToString("yyyyMMddHHmmss");

        return notafiscal;
    }

    private double ValorDesconto(double valorCompra, double cupom)
    {
        return valorCompra * (cupom/100);
    }

    private double ValorGarantia(double valorCompra, int anos)
    {
        return valorCompra * (15.0 / 100.0) * anos;
    }

    private double ValorFrete(int distancia)
    {
        return distancia / 10 * 3;
    }

    private double ValorJuros(double valorCompra, int parcelas)
    {
        return valorCompra * Math.Pow(1 + 0.03, parcelas);
    }
}


 Pedido p = new Pedido();
    p.Valor = 1000;
    p.AnosGarantia = 2;
    p.DistanciaEntregaKm = 50;
    p.Parcelas = 18;
    
    double cupom = 10;

    LojaMoveis loja = new LojaMoveis();
    Nota r = loja.CalcularCompra(p, cupom);

    Console.WriteLine("Valor final é: " + r.ValorFinal);
    Console.WriteLine("Nota Fiscal é: " + r.NotaFiscal);
//Valor final é: 2068.46
//Nota Fiscal é: NF20210517005501
```