---
# System prepended metadata

title: 'Session Seven: Repetição FOREACH'

---

# 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
````