ipablo77 0 Denunciar post Postado Setembro 8, 2016 Consegui fazer quase toda a questão, só tem um problema: Como fazer o 0 não entrar no valor da variável menor. Problema: Fazer um programa para ler N números, e informa o qual o menor deles, até que o 0 seja lido e o programa encerrado. Obviamente o 0 não poderá contar, se não ele será o menor valor. Já tentei, várias soluções diferentes e sem sucesso. Poderiam me dar uma luz, de como fazer esse bendito 0 não entrar como menor? O que eu fiz: int numero, menor; printf("Digite um número: "); scanf("%d",&numero); numero = menor; while (numero > 0){ printf("Digite um número: "); scanf("%d",&numero); if (numero < menor ){ menor = numero; printf("O menor número é: %d",menor); } } Compartilhar este post Link para o post Compartilhar em outros sites
santamariense 0 Denunciar post Postado Setembro 8, 2016 Pensa comigo... Quando você atribuiu o menor ao número " numero = menor;", você está substituindo o valor que você leu por uma variável ainda indefinida (geralmente 0). Então, onde diz " numero = menor;", o correto seria "menor = 999999"; Ainda te dou um toque... Você não precisa do comando ler o valor 2 vezes (printf e scanf). Se você atribuir ao numero um valor maior que zero antes de entrar no while, o while será executado.... E... mais uma coisinha... Se eu digitar no teu programa um número negativo.... O que vai acontecer???? Compartilhar este post Link para o post Compartilhar em outros sites
3Soft-Phi 0 Denunciar post Postado Setembro 16, 2016 Se você quer pegar o menor número de N números, não tem porque você apresentar o menor dentro do laço while. E para não usar o scanf duas vezes você poderia colocá-lo como argumento do próprio while. E como santamariense disse, se você quer o menor, o primeiro valor deve ser o maior valor possível dentro do seu universo de números. Segue uma ideia do problema (pelo que eu entendi). #include <climits> // Para usar o macro INT_MAX . . . printf("Digite seus números\n"); int menor = INT_MAX; // OU ... int menor_outroJeito = (2^31) - 1 ; // Tamanho máximo de inteiro (positivo) sem usar <climits>. while (scanf("%d", &n) && n>0) { // Aqui você já verifica se está pegando algo no scanf e se o valor é válido. menor = (menor > n)? n:menor; // Atualiza novo menor valor. // Ou menor_outroJeito = (menor_outroJeito > n)? n: menor_outroJeito; } // Imprima o menor valor. . . . Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Setembro 16, 2016 int is_first = 1; int number; int menor; while (scanf("%d", &number) && number != 0) { if (is_first) { menor = number; is_first = 0; } else { if (number < menor) { menor = number; } } } if (is_first) { puts("Não foi informado nenhum número"); } else { printf("Menor número: %d\n", menor); } Compartilhar este post Link para o post Compartilhar em outros sites