Ir para conteúdo
Fórum Script Brasil
  • 0

Comando do While


Vivian Almeida

Pergunta

Olá pessoal,

O professor passou um exercício com esse enunciado:

Melhor desempenho

Apresentação

Em um evento de computação foi proposta uma "codificação relâmpago", na qual os participantes se inscreviam na competição e ganhavam um código numérico (inteiro positivo) de participação, além de terem acesso a uma sala com computador para realizar a programação.

Na prova, era apresentado um problema e cada competidor realizava sua implementação. Quando terminavam, o programa escrito era entregue para correção.

Cada programa era avaliado por um comitê, recebendo notas de 0 a 10.

Como incentivo, houve um prêmio para o melhor colocado, que era o que tinha recebido a melhor nota. Em caso de empate de notas, o vencedor seria o que tivesse entregue sua solução antes.

Informações

O controle das entregas foi feito em uma planilha em papel, na qual eram registrados, na hora da entrega do programa, os códigos de inscrição dos candidatos. Desta forma, necessariamente a lista definia a ordem de entrega (que poderia, se necessário, ser usada para desempate).

Depois de avaliados os programas, na mesma planilha eram escritas as notas.

Um programa deve ser elaborado para permitir digitar os dados da planilha (código de inscrição e nota obtida) para todos os inscritos, o que se dará na ordem da planilha e, portanto, na ordem de entrega. Ao final, deve ser apresentado o código de inscrição do vencedor da competição, juntamente com sua nota.

Especificação

Escreva um algoritmo que resolva o problema proposto e implemente uma versão deste algoritmo em C. Não são necessárias verificações de consistência (ou seja, não é preciso verificar se os códigos são válidos nem se as notas estão realmente no intervalo válido).

Eu desenvolvi o seguinte código:

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


using namespace std;

int main(int argc, char *argv[])
{
int codigoInscricao, codigoVencedor;
int nota, notaVencedor;
char tecla;                                                                     //opção para leitura de novos dados

//Entrada de dados dos candidatos e calculos intermediários

codigoInscricao = 0;
do
{
//Leitura dos dados
printf ("Informe o codigo de inscricao: ");
scanf ("%d",&codigoInscricao);
printf ("Informe a nota do candidato em numero inteiro nessa escala [0 a 10]:");
scanf ("%d", ¬a);
fflush (stdin);


//mudança de variável de controle de laço
printf ("Deseja inserir mais um candidato? \n");
printf ("[tecle s ou n para continuar]: ");
scanf ("%c", &tecla);
printf("\n");

}
while (tecla == 's' || tecla == 'n');

while ((codigoInscricao,"fim") !=0)

        codigoVencedor = codigoInscricao;

        notaVencedor = nota;
        
if (notaVencedor = -1)
        
        printf ("Não houve vencedor.");
        
    else
    
        printf("O codigo vencedor é: " ,codigoVencedor,notaVencedor);


system("PAUSE");

return 0;
}

porém ele não me apresenta a nota maior e o número da inscrição, onde eu estou errando?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá Vivian! Pelo que eu entendi, você não está querendo criar uma lista como os dados dos candidatos nesse exercicio, portanto é necessário guardar apenas os dados do vencedor para apresentar no final.

do{
      //Leitura dos dados
      printf ("Informe o codigo de inscricao: ");
      scanf ("%d",&codigoInscricao);
      printf ("Informe a nota do candidato em numero inteiro nessa escala [0 a 10]:");
      scanf ("%d", ¬a);
      fflush (stdin);


      //mudança de variável de controle de laço
      printf ("Deseja inserir mais um candidato? \n");
      printf ("[tecle s ou n para continuar]: ");
      scanf ("%c", &tecla);
      printf("\n");

}while (tecla == 's' || tecla == 'n');
Acho que não é necessário limpar o buff nessa situação Seu laço deve permanecer ativo apenas quando a tecla s for digitada ou seja
while(tecla == 's')
Outro ponto interessante é que você pode fazer as comparaçoes dentro deste mesmo laço, pois veja: Ao ler uma nota e uma inscrição você verifica se e nota é maior que a notaVencedor fazendo o seguinte teste:
if (nota>notaVencedor){
      notaVencedor = nota;
      codigoVencedor = codigoInscricao;
}
Depois é só fazer o teste:
if (notaVencedor == -1){        
      printf ("Não houve vencedor.");        
 else            
      printf("O codigo vencedor %d e sua nota é %d: " ,codigoVencedor, notaVencedor);

Espero ter ajudado!

Editado por PeriWinkle
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...