Błąd z pętlą for C++

0

Napisz program wczytujący ciąg liczb całkowitych. Wydrukuj na ekranie kolejno wszystkie liczby, które mają wszystkie cyfry parzyste.
To mój kod, ale coś kompilator pokazuje błąd przy długiej pętli mimo ze przepuszcza przez kompilacje, ale wyniki się nie wyświetlają, coś przeoczyłem :/
kod niżej

int main()
{

	int ilosc_liczb;
	cout << "Ile liczb chcesz wprowadzic?: ";
	cin >> ilosc_liczb;

	int* wybor = new int[ilosc_liczb];
	

	for (int i = 0; i < ilosc_liczb; i++) {
		cout << "Podaj " << i+1 << "liczbe: ";
		cin >> wybor[i];


	}

	for (int i = 0; i < ilosc_liczb; i++) {
		if ((((wybor[i] / 10) % 10) == 0) && ((wybor[i] % 10) == 0)) {
			cout << wybor[i];
		}

	}
	return 0;
}
2
  if ((((wybor[i] / 10) % 10) == 0) && ((wybor[i] % 10) == 0)) {
  	cout << wybor[i];
  }

To nie jest warunek na parzystość wszystkich cyfr liczby.
Liczba a jest parzysta jeśli a % 2 == 0.
Mając dany zbiór liczb musisz nie tylko iterować po wszystkich liczbach, ale i po wszystkich cyfrach tych liczb. Dlatego przydałaby się druga pętla.

0

zapomniałem dodać ze domyślne jest wpisywanie liczby 2 cyfrowej, a nie większej

0

ale odnośnie warunku masz racje, coś mi się pokiełbasiło :p

0

działa, banalne rozwiązanie, dzięki bo przeoczylem!
a z ciekawości, jakby liczba byla X cyfrowa, to jak to zrobic?

0

Masz mieć podwójna pętle; Iteruj po tablicy liczb, a wewnątrz po cyfrach liczby, sprawdzając czy są parzyste.

0

niezbyt rozumiem

0

kompilator pokazuje błąd

Wypadałoby zacytować.

0

problem już rozwiązany jeśli chodzi o ten problem co w temacie.
Teraz dopytuje jak by to zrobić, zeby to było dla X liczb a nie tylko dla dwóch.

0
cryptondr napisał(a):

problem już rozwiązany jeśli chodzi o ten problem co w temacie.
Teraz dopytuje jak by to zrobić, zeby to było dla X liczb a nie tylko dla dwóch.

Dla X cyfr (nie liczb). Np. tak:

for (int i = 0; i < ilosc_liczb; i++) 
{
    int current = wybor[i];
    bool allDigitsEven = true;
   
    do {
        if(current % 2 != 0) 
        {
            allDigitsEven = false;
            break;
        }
    }
    while((current /= 10) != 0);
    
    if(allDigitsEven)
        std::cout << wybor << "\n";
}
1

problem już rozwiązany jeśli chodzi o ten problem co w temacie.
Teraz dopytuje jak by to zrobić, zeby to było dla X liczb a nie tylko dla dwóch

niezbyt rozumiem

Właśnie, bo pisałem o sprawdzeniu liczby o dowolnej ilości cyfr, trzeba po nich iterować:

int isEvenDigitsNumber(int n) {
	while (n != 0) {
		if ((n % 10) % 2 != 0) return 0;
		n /= 10;
	}
	return 1;
}
0

Dzieki za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1