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

C++. "Wypadają" dwie opcje tekstowe zamiast jednego.

Object Storage Arubacloud
0 głosów
410 wizyt
pytanie zadane 26 marca 2019 w C i C++ przez KayonPL Nowicjusz (150 p.)
edycja 26 marca 2019 przez KayonPL
#include <iostream>

using namespace std;

int main()
{
    int wiek1, wiek2, wiek3;
    wiek3=wiek1&&wiek2;

    cout<<"Podaj jeden wiek tutaj: ";
    cin>>wiek1;
    
    cout<<"Podaj drugi wiek tutaj: ";
    cin>>wiek2;
    

    if (wiek3<=100)
    {
        cout<<"Gratulacje! Macie oboje 100 albo i ponad 100 lat, a mianowicie: "<<wiek1<<" i "<<wiek2<<" lat. Gratuluje!\n";
    }

    else ((wiek1>>100)&&(wiek2>>100));
    {
       cout<<"Macie oboje "<<wiek1<<" i "<<wiek2<<" lat. ";
    }

    return 0;
}


 

Więc tak: chciałem stworzyć mały program (gdyż jestem dopiero początkujący) który prosi o podanie wieku dwóch osób i jeżeli te osoby mają po 100 albo ponad 100 lat to program miał się zachować wyjątkowo, a gdyby osoby miały mniej niż 100 lat to wyświetlać komunikat jak wyżej. Problem w tym, że po wpisaniu wieków wyświetla mi od razu dwa komunikaty. Czy ktoś mógłby mi pomóc? Dziękuję z góry.

komentarz 26 marca 2019 przez Hiskiel Pasjonat (22,830 p.)
To ci się kompiluje w ogóle?
komentarz 26 marca 2019 przez KayonPL Nowicjusz (150 p.)
Zapewne jest to głupi błąd, ale dopiero co zacząłem przygodę z programowaniem i nie wiem co tutaj zrobić. No chyba, że cały kod jest źle napisany :O
komentarz 26 marca 2019 przez criss Mędrzec (172,590 p.)

No chyba, że cały kod jest źle napisany :O

W zasadzie tak :D Zobacz moją odpowiedź 

1 odpowiedź

0 głosów
odpowiedź 26 marca 2019 przez criss Mędrzec (172,590 p.)
wybrane 26 marca 2019 przez KayonPL
 
Najlepsza
wiek3=wiek1&&wiek2;

Co to wg ciebie robi? W tym miejscu wiek1 oraz wiek2 są niezainicjalizowane, więc cokolwiek by to robiło - nie ma sensu. Wyjaśniając jednak operator &&: to jest operator logiczny więc wiek1 ora wiek2 zostają zrzutowane na bool (konwersja na bool: 0->false, [wartość różna od 0]->true). Następnie operator && daje true jeśli oba argumenty są true, lub daje false w innym przypadku. Następnie wynik operatora jest przypisywany do wiek3 i rzutowany na int na zasadzie false->0, true->1.

    if (wiek3<=100)
    {
        cout<<"Gratulacje! Macie oboje 100 albo i ponad 100 lat, a mianowicie: "<<wiek1<<" i "<<wiek2<<" lat. Gratuluje!\n";
    }

 Dlaczego w takim razie stosujesz operator mniejszy-lub-równy?

    else ((wiek1>>100)&&(wiek2>>100));
    {
       cout<<"Macie oboje "<<wiek1<<" i "<<wiek2<<" lat. ";
    }

Prawdopodobnie chodziło ci o else if. Co to obecnie robi: jeśli nie (wiek3<=100), to wykonuje ((wiek1>>100)&&(wiek2>>100)) (czyli w zasadzie nic nie robi, bo wynik nie jest nigdzie zapisywany);, a cout w linii 24 wykonywany jest bezwarunkowo.

komentarz 26 marca 2019 przez KayonPL Nowicjusz (150 p.)
Ajajajajaj. No, ale cóż, dzięki za odpowiedź.
komentarz 26 marca 2019 przez Hiskiel Pasjonat (22,830 p.)
A może mi ktoś do kija wyjaśnić co tam robi operator strumienia?
1
komentarz 26 marca 2019 przez criss Mędrzec (172,590 p.)
A, tego nie zauważyłem nawet XD Obstawiam, że zamiast >> miało być > lub =>.

@KayonPL, generalnie operatory >> oraz << dla intów to są bitshifty (tj. przesunięcia bitowe, doczytaj). wiek1>>100 oznacza "przesuń bitowo wartość wiek1 o 100 w prawo" co wg standardu jest UB (Undefined Behaviour, doczytaj) bo 100 jest większe od długości bitowej int (typ zmiennej wiek1), ale w praktyce możesz być pewien, że po prostu dostaniesz 0.
komentarz 26 marca 2019 przez Hiskiel Pasjonat (22,830 p.)
E.. No tak.. Dwuznaczność operatorów. Dzięki.

Podobne pytania

0 głosów
1 odpowiedź 488 wizyt
pytanie zadane 8 kwietnia 2021 w C i C++ przez Dawidziu Bywalec (2,610 p.)
0 głosów
0 odpowiedzi 221 wizyt
pytanie zadane 8 maja 2022 w C i C++ przez Bollo Początkujący (460 p.)
0 głosów
2 odpowiedzi 720 wizyt
pytanie zadane 24 listopada 2016 w C i C++ przez mcsobieski00 Nowicjusz (220 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,940 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...