Pesquisar este blog

Livros Recomendados

sábado, 2 de janeiro de 2021

URI - 1129 - Ad-Hoc - Leitura Ótica - C

Plataforma: URI

Problema1129

Enunciado:

O professor João decidiu aplicar somente provas de múltipla escolha, para facilitar a correção. Em cada prova, cada questão terá cinco alternativas (A, B, C, D e E), e o professor vai distribuir uma folha de resposta para cada aluno. Ao final da prova, as folhas de resposta serão escaneadas e processadas digitalmente para se obter a nota de cada aluno. Inicialmente, ele pediu ajuda a um sobrinho, que sabe programar muito bem, para escrever um programa para extrair as alternativas marcadas pelos alunos nas folhas de resposta. O sobrinho escreveu uma boa parte do software, mas não pode terminá-lo, pois precisava treinar para a Maratona de Programação.

Durante o processamento, a prova é escaneada usando tons de cinza entre 0 (preto total) e 255 (branco total). Após detectar os cinco retângulos correspondentes a cada uma das alternativas, ele calcula a média dos tons de cinza de cada pixel, retornando um valor inteiro correspondente àquela alternativa. Se o quadrado foi preenchido corretamente o valor da média é zero (preto total). Se o quadrado foi deixado em branco o valor da média é 255 (branco total). Assim, idealmente, se os valores de cada quadrado de uma questão são (255, 0, 255, 255, 255), sabemos que o aluno marcou a alternativa B para essa questão. No entanto, como as folhas são processadas individualmente, o valor médio de nível de cinza para o quadrado totalmente preenchido não é necessariamente 0 (pode ser maior); da mesma forma, o valor para o quadrado não preenchido não é necessariamente 255 (pode ser menor). O prof. João determinou que os quadrados seriam divididos em duas classes: aqueles com média menor ou igual a 127 serão considerados pretos e aqueles com média maior a 127 serão considerados brancos.

Obviamente, nem todas as questões das folhas de resposta são marcadas de maneira correta. Pode acontecer de um aluno se enganar e marcar mais de uma alternativa na mesma questão, ou não marcar nenhuma alternativa. Nesses casos, a resposta deve ser desconsiderada.

O professor João necessita agora de um voluntário para escrever um programa que, dados os valores dos cinco retângulos correspondentes às alternativas de uma questão determine qual a alternativa corretamente marcada, ou se a resposta à questão deve ser desconsiderada.

Linguagem: C

Solução:

#include <stdio.h>
#include <stdlib.h>

int main() { 
    
    short unsigned int n, codigos[5], i, j, quantidade;
    char resposta;
    
    while (1) {
        
        scanf("%hu", &n);
        
        if (!n)
            exit(0);
            
        for (i = 0; i < n; i++) {
            
            quantidade = 0;
            
            for (j = 0; j < 5; j++) {
                
                scanf("%hu", &codigos[j]);
                
                if (codigos[j] <= 127) {
                    
                    quantidade++;
                    
                    switch (j) {
                        case 0:
                            resposta = 'A';
                            break;
                        case 1:
                            resposta = 'B';
                            break;
                        case 2:
                            resposta = 'C';
                            break;
                        case 3:
                            resposta = 'D';
                            break;
                        default:
                            resposta = 'E';
                            break;
                    }
                }
            }
            
            if (quantidade != 1)
                resposta = '*';
                
            printf("%c\n", resposta);
        }
    }
    return 0; 
}

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas