Liczby Filza - program C/C++

Liczby Filza - program C/C++
B7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Witam
Chcę napisać program znajdujący trzycyfrowe liczby Filza np.144 =(1+4+4)*1*4*4. Chcę znaleźć liczby Filza mniejsze od 100 000. Podpowie mi ktoś co dalej miałbym zrobić, chyba że mam źle, to w jaki sposób. Aktualnie mam coś takiego:

Kopiuj
#include <iostream>

using namespace std;

int x,y,suma=0;

int main()
{
	for(x=100;x<10000;x++)
	{
		while(x>0)
		{
			y=x%10;
			x=x/10;
			suma=suma+y;
		}
	}
	
	return 0;
}

Pozdrawiam

WeaverBird
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
2

Musisz policzyć sumę i iloczyn cyfr w liczbie. Sumę już masz, iloczyn robi się analogicznie. Potem tylko prosty warunek, czy iloczyn tych dwóch zmiennych jest tą liczbą.

Oprócz tego, zauważ, że w pętli for iterujesz przy użyciu x po czym wewnątrz tej pętli modyfikujesz wartość tej zmiennej(x=x/10), przez co po każdym obrocie pętli x będzie mieć wartość 0. Polecam zamiast x iterować po innej zmiennej np. i, a potem na samym początku przypisywać pod x to i dzięki czemu unikniesz tego problemu.

I tak na marginesie jak deklarujesz zmienną suma globalnie, to jej domyślna wartość to 0 - nie trzeba do niej nic przypisywać.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
1

Już Wiesz, tylko poskładać do kupy:)

Kopiuj
    int s = 0,  p = 1, y = 0, tmp = 0;
    for(int x = 10; x < 10000; x++)
    {   
        tmp = x;
        while(tmp > 0)
        {
            y = tmp % 10;
            s += y;
            p *= y;
            tmp /= 10;
        }
        if (x == s * p)
        {
              cout << x<<"\n";
        }
        s = 0;
        p = 1;
    }
99xmarcin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2420
1

Jak szukasz 3-cyfrowych to możesz na "sztywno":
screenshot-20201122201653.png

B7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Super, dzięki wielkie! :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.