• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[Początkujący] Jeśli liczba jest nieparzysta chcę ją wyświetlić.

Aruba Cloud - Virtual Private Server VPS
0 głosów
495 wizyt
pytanie zadane 9 września 2017 w C i C++ przez Stronk Użytkownik (660 p.)

Witam.
Polecenie zadania: Stwórz program sprawdzający, czy wśród liczb x,y i z wprowadzonych z klawiatury znajduje się liczba nieparzysta. Jeśli chociaż jedna z tych liczb spełnia podany warunek, ma pojawić się komunikat "TAK" i wyświetlić tą (te) liczby, w przeciwnym wypadku - komunikat "NIE".

Program działa świetnie, tylko gdy liczby są parzyste to wyskakują randomowe cyfry (przypuszczam, że numery komórek w RAM-ie).

Pytania:
1. Dlaczego one wyskakują?
2. Jak zrobić, żeby nie wyskakiwały?
3. Czy można jakoś ten kod udoskonalić/zmienić na lepszy? (zawsze można :D)
4. Czy warunek sprawdzający nieparzystość jest dobrze? (x%2==1)

Pozdrawiam i z góry dziękuję za odpowiedź.

Kod:

//algorytm sprawdzajacy czy znajduje sie liczba nieparzysta v2
#include <iostream>

using namespace std;

int main()
{
    int x,y,z,m,n,o;
    cout<<"Podaj liczby x, y, z: ";
    cin>>x>>y>>z;

    if((x%2==1)||(y%2==1)||(z%2==1)) cout<<"TAK"<<endl;
    else cout<<"NIE!!!"<<endl;
    if(x%2==1) m=x;
    if(y%2==1) n=y;
    if(z%2==1) o=z;
    cout<<"Liczby nieparzyste to: "<<m<<", "<<n<<", "<<o<<endl;

    //system "pause";
    return 0;
}

3 odpowiedzi

+1 głos
odpowiedź 9 września 2017 przez niezalogowany
wybrane 9 września 2017 przez Stronk
 
Najlepsza

1. Jeżeli który z ifów się nie spełni to zmienne m, n, o mają przypadkowe wartości z pamięci.

3. Nie potrzebujesz zmiennych m, n, o.

2:

#include <iostream>

using namespace std;

int main()
{
	int x, y, z;
	cout << "Podaj liczby x, y, z: ";
	cin >> x >> y >> z;

	if ((x % 2 == 1) || (y % 2 == 1) || (z % 2 == 1))
	{
		cout << "TAK" << endl;
		cout << "Liczby nieparzyste to: ";

		if (x % 2 == 1) cout << x << " ";
		if (y % 2 == 1) cout << y << " ";
		if (z % 2 == 1) cout << z << " ";
		cout << "\n";
	}
	else cout << "NIE!!!" << endl;

	//system("pause"); // ?
	return 0;
}

4. Dobrze.

+1 głos
odpowiedź 9 września 2017 przez unknown Nałogowiec (39,560 p.)
Bo używasz niezainicjalizowanych zmiennych. Np. zmienna m zostanie zainicjalizowana tylko wtedy gdy x jest nieparzyste. W przeciwnym wypadku będzie tam losowa wartość.
0 głosów
odpowiedź 9 września 2017 przez Stronk Użytkownik (660 p.)
Dziękuję bardzo!!
God bless you all.

Podobne pytania

0 głosów
6 odpowiedzi 554 wizyt
0 głosów
1 odpowiedź 917 wizyt

93,334 zapytań

142,328 odpowiedzi

322,406 komentarzy

62,670 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...