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

Dlaczego wyświetla 2 skutki ifów

Mały hosting, OGROMNE możliwości
0 głosów
422 wizyt
pytanie zadane 24 stycznia 2016 w C i C++ przez szymi666 Bywalec (2,020 p.)

Mam pytanie dlaczego w tym programie wyświetla 2 skutki ifów pomimo jasno określonych instrukcji

#include <iostream>
#include <cstdlib>
#include <sstream>
using namespace std;
 int s[10],a;
 string str;
 
int main()
{
    cout << "podaj cyfre" << endl;
    cin>>str;
    int dl=str.length();  
    
    istringstream iss(str);
    iss >> a;
s[0]=a/2;  
if (str[dl]==1||3||5||7||9)
{
cout<<s[0]<<"r1";
}
if (str[dl]==0||2||4||6||8)
{
 cout<<s[0]<<"r0";
}
    return 0;
}

Dokładniej rzecz biorąc dlaczego wyświetla mi i to r1 i r0 nawet jeżeli podam cyfre która kończy się na np.8 lub 2.

Za odpowiedź z góry dzięki. 

2 odpowiedzi

+2 głosów
odpowiedź 24 stycznia 2016 przez Ceki Mądrala (5,310 p.)
wybrane 24 stycznia 2016 przez szymi666
 
Najlepsza

Jestem prawie pewien ze chodzi o to, że ify powinny wyglądać tak:

if (str[dl]==1||str[dl]==03||str[dl]==05||str[dl]==07||str[dl]==09)

else if (str[dl]==0||str[dl]==02||str[dl]==04||str[dl]==06||str[dl]==08)

;)

komentarz 24 stycznia 2016 przez szymi666 Bywalec (2,020 p.)
To działa dzięki powinno byc tutaj xd
komentarz 24 stycznia 2016 przez szymi666 Bywalec (2,020 p.)
Aaa bo ty napisales najpierw komentarz a potem odpowiedz jaka incepcja:)
komentarz 24 stycznia 2016 przez Ceki Mądrala (5,310 p.)
Tak ;) , ucieszyłbym się jak byś dał Najlepszą odpowiedź.
–1 głos
odpowiedź 24 stycznia 2016 przez selfdrivers Użytkownik (870 p.)
#include <iostream>
#include <cstdlib>
#include <sstream>
using namespace std;
 int s[10],a;
 string str;
  
int main()
{
    cout << "podaj cyfre" << endl;
    cin>>str;
    int dl=str.length();  
     
    istringstream iss(str);
    iss >> a;
s[0]=a/2;  
if (str[dl]==1||3||5||7||9)
{
cout<<s[0]<<"r1";
}
else if (str[dl]==0||2||4||6||8)
{
 cout<<s[0]<<"r0";
}
    return 0;
}

 

Wydaje mi się że tak powinno to wyglądać :)
komentarz 24 stycznia 2016 przez selfdrivers Użytkownik (870 p.)
Zapomniałeś poprostu o podaniu else w linijce 21 :)
komentarz 24 stycznia 2016 przez szymi666 Bywalec (2,020 p.)
Niestety tak nie jest wiem bo tak wyglądała moja pierwsza próba wtedy wyświetlało r1 niezależnie od końcówki liczby tak samo z samym else.
komentarz 24 stycznia 2016 przez Ceki Mądrala (5,310 p.)

Jestem prawie pewien ze chodzi o to, że ify powinny wyglądać tak:

if (str[dl]==1||str[dl]==03||str[dl]==05||str[dl]==07||str[dl]==09)

else if (str[dl]==0||str[dl]==02||str[dl]==04||str[dl]==06||str[dl]==08)

;)

komentarz 24 stycznia 2016 przez szymi666 Bywalec (2,020 p.)
Działa dzięki :)
komentarz 25 stycznia 2016 przez selfdrivers Użytkownik (870 p.)
dziwne mi działało :)

Podobne pytania

+1 głos
0 odpowiedzi 291 wizyt
pytanie zadane 26 stycznia 2019 w C i C++ przez dawid2002 Mądrala (5,190 p.)
0 głosów
4 odpowiedzi 867 wizyt

93,715 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,258 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...