Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Multiplicacao dos digitos de inteiros de 100 a 999

Boa tarde, meu professor do curso de eng. Elétrica nos pediu que criássemos um programa que calculasse a multiplicação dos dígitos de um inteiro entre 10 e 999. Ex.: 128 = 1 * 2 * 8 = 16. Consegui criar a função que faz isso (dentro do while) e funcionou contanto que eu adicionasse um scanf antes de iniciar o while() para dizer qual numero multiplicar. Mas quando coloquei o while dentro do for para gerar os números de 100 a 999 automaticamente, todos os resultados passaram a ser 0. Nao consegui achar o erro, gostaria que alguém pudesse me ajudar. Agradeço desde já

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

int main() {
   int numero, t, produto = 1, resto, i = 100;

   for (i; i < 1000; ++i) {  

      numero = i;
      t = numero;

      while (t != 0) {
         //multiplica os digitos do inteiro
         //quando t = 0 acaba o while
         resto = t % 10;
         produto = produto * resto;
         t  = t / 10;
      }

      printf("O produto dos digitos do numero %d = %d\n", numero, produto);
   }

   return 0;
}

Segue o código funcional sem o for:

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

int main() {
   int numero, t, produto = 1, resto;

   printf("Insira o inteiro\n");
   scanf("%d", &numero);

      t = numero;
      while (t != 0) {
         resto = t % 10;
         produto = produto * resto;
         t  = t / 10;
      }

   printf("O produto dos digitos do numero %d = %d\n", numero, produto);

   return 0;
}
2 respostas
solução!

Victor, isso aconteceu porque o primeiro número da sua sequência é justamente o número 100. Usando o seu próprio exemplo, então:

produto = 1 x 0 x 0;
produto = 0;

Como você usa a própria variável produto para salvar o resultado dos produtos de todos os dígitos de todos os números entre 100 e 999, e qualquer valor multiplicado por 0 resulta em 0, todo resultado vai resultar em 0.

Tenta fazer a seguinte atribuição antes do while:

produto = 1

(lembrando que 1 é o elemento neutro da multiplicação)

Acredito que isso resulte em valores diferentes, correto?

Era isso mesmo, muito obrigado!