Você está na página 1de 2

/* 15. Elabore um programa para correcção de testes de resposta múltipla.

* Cada teste tem 10 questões com 5 respostas possíveis (a, b, c, d ou


e).
* Cada resposta correcta conta dois valores e cada resposta errada
desconta 0,25 valores.
* Eventuais classificações negativas devem ser transformadas em zero.
*
* a) O programa deve começar por ler e armazenar a chave de
correcção num array.
* De seguida, deve permitir introduzir as respostas dos alunos,
prevendo a possibilidade
* de o aluno não ter respondido a algumas questões. Depois de
introduzidas as 10 respostas
* do aluno, o programa deve apresentar a classificação final
obtida e permitir ao utilizador
* continuar o processamento inserindo as respostas de um novo
aluno ou terminar a execução do programa.

b) Alterar o programa anterior para que o programa passe a


apresentar no final um resumo com
a seguinte informação:
• Número total de alunos processados.
• Número total de alunos aprovados (classificação igual ou
superior a 9,5).
• A média das notas de todos os alunos.
*/
static void Main(string[] args)
{
const int DIM = 10;
char[] chave = new char[DIM]; // Chave das respostas certas
char[] resposta = new char[DIM]; // respostas do aluno
float soma = 0, nota = 0;
byte nalunos = 0, aprovados = 0;

// Preencher a chave da correção ( fazer validação)


Console.Write($"\n\tDigite a chave da correção do teste (a,b,c,d,e)\
n");
for (int i = 0; i < DIM; i++)
{
do
{
Console.Write($"\n\tPergunta {i + 1}: ");
chave[i] = Console.ReadKey().KeyChar;
chave[i] = char.ToUpper(chave[i]);
} while (chave[i] < 'A' || chave[i] > 'E');
}

do
{
nota = 0;
// Preencher as respostas do aluno ( fazer validação)
nalunos++; // Contabilizar mais um aluno
Console.Write($"\n\tDigite as respostas do aluno nº {nalunos}\n\t
Prima(a,b,c,d,e) ou ENTER para não responder\n");

for (int i = 0; i < DIM; i++)


{
do
{
Console.Write($"\n\tPergunta {i + 1}: ");
resposta[i] = Console.ReadKey().KeyChar;
resposta[i] = char.ToUpper(resposta[i]);
} while ((resposta[i] < 'A' || resposta[i] > 'E') &&
resposta[i] != '\r' );

// Corrigir o teste e calcular a nota


if (resposta[i] == chave[i])
nota += 2;
else if (resposta[i] == '\r') ; // não é para fazer cálculo
else
nota -= 0.25f;
}

if (nota < 0)
nota = 0;
// Verifica se nota >= 9,5 e contabilizar essa nota
if (nota >= 9.5)
aprovados++;
// Mostrar a nota do aluno
Console.WriteLine($"\n\tNota do aluno nº {nalunos} = {nota}");
soma += nota;

// Perguntar se quer corrigir mais um teste


Console.WriteLine("\n\tQuer corrigir mais um teste (S/N)? ");

} while (Console.ReadKey().KeyChar.ToString().ToUpper() == "S"); //


Para todos os alunos

// Mostrar o nº de alunos processado


Console.WriteLine($"\n\tNº de alunos com teste corrigido: {nalunos}");
// Mostrar o nº de alunos aprovados
Console.WriteLine($"\n\tNº de alunos aprovados: {aprovados}");
// Calcular a média da turma
Console.WriteLine($"\n\tMédia dos testes corrigidos:
{soma/nalunos:0.0}");
}

Você também pode gostar