# Session Seven: Repetição FOREACH
Cauê Freitas Barreto
INFOB
05
[toc]
## Exercício 1
````csharp=
using System;
using System.Collections.Generic;
public class Retangulo
{
public double Base { get; set; }
public double Altura { get; set; }
}
public class Notas
{
public double Nota1 { get; set; }
public double Nota2 { get; set; }
public double Nota3 { get; set; }
}
public class TreinoFocadoA
{
public int SomarImpares (List<int> numeros)
{
int soma = 0;
foreach (int item in numeros)
{
if (item % 2 == 1)
soma = soma + item;
}
return soma;
}
public List<int> CalcularCubos (List<int> numeros)
{
List<int> cubos = new List<int> ();
foreach (int item in numeros)
{
cubos.Add(Convert.ToInt32(Math.Pow(item, 3)));
}
return cubos;
}
public List<int> CalcularRaiz (List<int> numeros)
{
List<int> raizes = new List<int> ();
foreach (int item in numeros)
{
raizes.Add(Convert.ToInt32(Math.Sqrt(item)));
}
return raizes;
}
public int MaiorNumero (List<int> numeros)
{
int maior = 0;
foreach (int item in numeros)
{
if (item > maior)
maior = item;
}
return maior;
}
public double Media (List<double> numeros)
{
double soma = 0;
foreach (int item in numeros)
{
soma += item;
}
double media = soma / numeros.Count;
return media;
}
public List<double> CalcularMedias (List<Notas> notas)
{
List<double> media = new List<double>();
foreach (Notas item in notas)
{
media.Add( Math.Round((item.Nota1 + item.Nota3 + item.Nota3) / 3));
}
return media;
}
private double AreaRetangulo (Retangulo retangulo)
{
return retangulo.Base * retangulo.Altura;
}
public List<double> AreaRetangulos (List<Retangulo> retangulos)
{
List<double> areas = new List<double>();
foreach (Retangulo areass in retangulos)
{
areas.Add(AreaRetangulo(areass));
}
return areas;
}
}
TreinoFocadoA TFA = new TreinoFocadoA();
List<int> num = new List<int>() {2, 4, 5, 3, 7, 10};
int a = TFA.SomarImpares(num);
Console.WriteLine("Soma dos números ímpares na lista: " + a);
List<int> b = TFA.CalcularCubos(num);
Console.WriteLine("Cubo de cada número da lista: " + string.Join(" - ", b));
List<int> num2 = new List<int>() {49, 25, 81, 100, 36};
List<int> c = TFA.CalcularRaiz(num2);
Console.WriteLine("Raiz de cada número da lista: " + string.Join(" - ", c));
int d = TFA.MaiorNumero(num2);
Console.WriteLine("Maior número da lista: " + d);
List<double> notas = new List<double> () { 5, 5, 5, 3 };
double e = TFA.Media(notas);
Console.WriteLine("Média: " + e);
List<Notas> notasalunos = new List<Notas> ()
{
new Notas() { Nota1 = 5, Nota2 = 5, Nota3 = 5 },
new Notas() { Nota1 = 8, Nota2 = 10, Nota3 = 9 },
new Notas() { Nota1 = 4, Nota2 = 3, Nota3 = 2 }
};
List<double> f = TFA.CalcularMedias(notasalunos);
Console.WriteLine("Médias: " + string.Join(" - ", f));
List<Retangulo> retangulos = new List<Retangulo>
{
new Retangulo() {Base = 10, Altura = 5},
new Retangulo() {Base = 5, Altura = 4},
new Retangulo() {Base = 8, Altura = 3}
};
List<double> g = TFA.AreaRetangulos(retangulos);
Console.WriteLine("Área de cada retângulo da lista: " + string.Join(" - ", g));
// Soma dos números ímpares na lista: 15
// Cubo de cada número da lista: 8 - 64 - 125 - 27 - 343 - 1000
// Raiz de cada número da lista: 7 - 5 - 9 - 10 - 6
// Maior número da lista: 100
// Média: 4.5
// Médias: 5 - 9 - 3
// Área de cada retângulo da lista: 50 - 20 - 24
````
## Exercício 2
````csharp=
using System;
using System.Collections.Generic;
public class Pessoa
{
public string Nome { get; set; }
public DateTime Nascimento { get; set; }
public override string ToString()
{
return $"({Nome}, {Nascimento.ToString("dd/MM/yyy")})";
}
}
public class TreinoFocadoB
{
public List<DateTime> Ultimodia (List<DateTime> datas)
{
List<DateTime> ultimosdias = new List<DateTime>();
foreach (DateTime data in datas)
{
ultimosdias.Add(data.AddMonths(1).AddDays(-data.Day));
}
return ultimosdias;
}
public DateTime MaiorData (List<DateTime> datas)
{
DateTime maior = DateTime.MinValue;
foreach (DateTime data in datas)
{
if (data > maior)
maior = data;
}
return maior;
}
public List<Pessoa> Filtrar18 (List<Pessoa> pessoas)
{
List<Pessoa> filtradas = new List<Pessoa>();
foreach(Pessoa item in pessoas)
{
if (item.Nascimento < DateTime.Now.AddYears(-18))
filtradas.Add(item);
}
return filtradas;
}
public bool TodosMaiores18 (List<Pessoa> pessoas)
{
List<Pessoa> nivers = new List<Pessoa>();
bool todosMaiores = true;
foreach (Pessoa item in pessoas)
{
if(item.Nascimento > DateTime.Now.AddYears(-18))
todosMaiores = false;
}
return todosMaiores;
}
}
TreinoFocadoB TFB = new TreinoFocadoB();
List<DateTime> dias = new List<DateTime>() { new DateTime (1999,1,5), new DateTime (2003,11,6), new DateTime (2001,7,15) };
List<DateTime> a = TFB.Ultimodia(dias);
Console.WriteLine("Último dia do mês de cada data na lista: " + string.Join(" - ", a));
DateTime b = TFB.MaiorData(dias);
Console.WriteLine("Maior data entre as datas na lista: " + string.Join(" - ", b));
List<Pessoa> pessoas = new List<Pessoa>
{
new Pessoa() { Nome = "Maria Clara", Nascimento = new DateTime (2005,10,27) },
new Pessoa() { Nome = "Erivaldo", Nascimento = new DateTime (1973,09,19) },
new Pessoa() { Nome = "Selma", Nascimento = new DateTime (1971,11,17) }
};
List<Pessoa> c = TFB.Filtrar18(pessoas);
Console.WriteLine("Maiores de 18 anos na lista: " + string.Join(" - ", c));
bool d = TFB.TodosMaiores18(pessoas);
Console.WriteLine("Todos na lista são maiores de idade?: " + string.Join(" - ", d));
// Último dia do mês de cada data na lista: 1/31/1999 12:00:00 AM - 11/30/2003 12:00:00 AM - 7/31/2001 12:00:00 AM
// Maior data entre as datas na lista: 11/6/2003 12:00:00 AM
// Maiores de 18 anos na lista: (Erivaldo, 19/09/1973 e Selma 17/11/1971)
// Todos na lista são maiores de idade?: False
````
## Exercício 3
````csharp=
using System;
using System.Collections.Generic;
public class Pessoa
{
public string Nome { get; set; }
public DateTime Nascimento { get; set; }
public string Cidade { get; set; }
}
public class TreinoFocadoC
{
public string SepararLetras (string frase)
{
string fraseSeparada = string.Empty;
foreach(char letra in frase)
{
fraseSeparada = fraseSeparada + letra + " - ";
}
return fraseSeparada;
}
public List<int> CodigoASCII (string frase)
{
List<int> codigo = new List<int>();
foreach(char letra in frase)
{
codigo.Add(Convert.ToInt32(letra));
}
return codigo;
}
public bool TodasVogais(string frase)
{
bool todasVogais = true;
foreach(char letra in frase)
{
if (letra != 'a' && letra != 'e' && letra != 'i' && letra != 'o' && letra != 'u' && letra != 'A' && letra != 'E' && letra != 'I' && letra != 'O' && letra != 'U')
todasVogais = false;
}
return todasVogais;
}
public string Alternar (Pessoa pessoa)
{
string alternada = string.Empty;
foreach(char item in pessoa.Nome)
{
if (Convert.ToInt16(item) % 2 == 0)
alternada += item.ToString().ToUpper();
else
alternada += item.ToString().ToLower();
}
return alternada;
}
public string Inverter (string frase)
{
string fraseInvertida = string.Empty;
foreach(char letra in frase)
{
fraseInvertida = letra + fraseInvertida;
}
return fraseInvertida;
}
public bool Palindromo (string frase)
{
frase = frase.ToLower();
return frase == Inverter(frase);
}
}
TreinoFocadoC TFC = new TreinoFocadoC();
string a = TFC.SepararLetras("Maria Clara Linda!");
Console.WriteLine("Frase Separada por caracteres: " + a);
List<int> b = TFC.CodigoASCII("Maria Clara");
Console.WriteLine("Frase em código ASCII: " + string.Join("-", b));
bool c = TFC.TodasVogais("Oie");
Console.WriteLine("Todas as letras da frase são vogais?: " + c);
Pessoa p = new Pessoa () { Nome= "Maria Clara" };
string d = TFC.Alternar(p);
Console.WriteLine("Frase alternada: " + d);
string e = TFC.Inverter("Maria Clara Perfeita!");
Console.WriteLine("Frase invertida: " + e);
Console.WriteLine("Maria Clara é palindromo?: " + TFC.Palindromo("Maria Clara"));
Console.WriteLine("Pato é palindromo?: " + TFC.Palindromo("Pato"));
Console.WriteLine("Reviver é palindromo?: " +TFC.Palindromo("Reviver"));
// /Frase Separada por caracteres: L - e - t - í - c - i - a - - L - i - n - d - a - ! -
// Frase em código ASCII: 76-101-116-237-99-105-97
// Todas as letras da frase são vogais?: True
// Frase alternada: Maria Clara
// Frase invertida: !asohlivaraM aicítel
// Leticia é palindromo?: False
// Arara é palindromo?: True
// Reviver é palindromo?: True
````