Programação Progressiva
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Programação Progressiva

Fórum para dúvidas dos sites: Programação Progressiva, Java Progressivo, C Progressivo


Você não está conectado. Conecte-se ou registre-se

Erro em exercício

Ir para baixo  Mensagem [Página 1 de 1]

1Erro em exercício Empty Erro em exercício Ter Jan 28, 2014 2:15 pm

lcletos


Convidado

Boa tarde,

Primeiramente agradeço muito pelo material e informações que encontro neste site. Estão sendo muito importantes para meu curso de engenharia de controle e automação. Então, estudando alguns exercícios, encontrei uma divergência em uma resolução. O exercício é o seguinte :

Lista de laço FOR em c:

6. Escreva um programa em C que solicita 10 números ao usuário, através de um laço while, e ao final mostre os dois maiores números digitados pelo usuário.

O trecho :

if(maior < segundo_maior)
{
   count = maior;
   maior = segundo_maior;
   segundo_maior = maior;
}

Percebi que o count não era necessário, pois ele recebe um valor que não é utilizado, além disso, se na lista dos 10 numeros, os dois primeiros numeros sao os maiores, senso o segundo maior que o primeiro, por exemplo:
1 - 30
2 - 50
3 - 1
4 - 3
5 - 4
6 - 5
7 - 12
8 - 10
9 - 13
10 - 15

o resultado sera: Maior numero: 50
                       Segundo maior numero: 50;

Devido a este trecho do código.
O meu código completo está assim:

#include <stdio.h>


int main()
{
   int n,numero,  maior1 = 0, maior2 = 0;

   printf("\tMaior numero entre 10\n\n");

   for(n = 1; n<=10; n++ ){

       printf("Numero %d:  \n", n);
       scanf("%d", &numero);

       if(numero>maior1){
           maior1 = numero;
       }
       if(numero>maior2 &&  numero<maior1){
           maior2 = numero;
       }
   }
   printf("\nOs maiores numeros sao %d e %d  ", maior1, maior2);

}

Novamente, agradeço muito pelo conteúdo do site.

2Erro em exercício Empty Re: Erro em exercício Seg Fev 03, 2014 12:46 am

Admin


Admin

Olá lcletos,

Realmente está errado, mas foi um erro de digitação.
Do jeito que estava no site realmente o count é inútil.

O correto é:
Código:

if(maior < segundo_maior)
{
  count = maior;
  maior = segundo_maior;
  segundo_maior = count;
}

O count é uma variável pra ajudar na troca de valores, queremos que o 'maior' tenha o valor de 'segundo_maior' e vice-versa.
A gente faz essa verificação com os dois números iniciais que o usuário fornecer, pra poder ser bem geral no quesito números que o usuário colocar.

No seu caso, você começa dizendo que o valor máximo é 0.
A sua lógica está correta para valores positivos.
Experimente colocar 10 números negativos, o resultado vai dizer que os maiores números são 0 e 0, sendo que você nem forneceu o valor 0.

Obrigado pela correção, se achar mais erros, por favor nos avise!

https://progressiva.forumeiros.com

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos