No anterior exemplo o numero de notas (10) era conhecido partida, era um dado do problema. No proximo programa (Media2) pretendemos que se possa digitar pelo teclado um numero qualquer de notas. Ou seja, o programa deve processar um numero qualquer de notas fornecidas pelo standard input (teclado). Como é que o programa vai saber que deve poder parar com a entrada de notas ? E como sabe quando vai poder calcular e imprimir a media ? Um tipo de solucao para este problema é usar um "Algoritmo de Sentinela". O utilizador introduz os dados e quando achar que concluiu então introduz um valor de sentinela que geralmente é uma 'flag' ou um valor com sinal.
namespace Media2
{
class Media2
{
static void Main(string[] args)
{
int nota, numNotas, total;
double media;
total = 0;
numNotas = 0;
Console.Write("Registe a nota, -1 para Sair ");
nota=Int32.Parse(Console.ReadLine());
while (nota != -1)
{
total = total + nota;
numNotas++;
Console.Write("Registe a nota, -1 para Sair ");
nota = Int32.Parse(Console.ReadLine());
}
if (numNotas != 0)
{
media = (double)total / numNotas;
Console.WriteLine("\nA media da turma ‚ de: {0}", media);
}
else
{
Console.WriteLine("nao foram introduzidas quaisquer notas !");
}
} // Main
} // Media2
} // namespace Media2
Sem comentários:
Enviar um comentário