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

Gdzie to skopalem ?

Object Storage Arubacloud
0 głosów
100 wizyt
pytanie zadane 11 maja 2016 w C i C++ przez 0xf Dyskutant (8,180 p.)

Zadanie proste nawet bardzo kod sie kompiluje ale robi dziwna rzecz nie wazne jaka udziele odpowiedz program zawsze uwaza ze jest ona "tak"

kod :

#include <iostream>
#include <string>

using namespace std;

  class Pytanie_odpowiedz
    {
       public:
        string pytanie="";
        bool odpowiedz;
        public:
            void zadaj()
            {
                cout<<pytanie<<endl;
                cout<<"Podaj odpowiedz tak lub nie : "<<endl;
                pytanie.clear();
                cin>>pytanie;
                if(pytanie=="tak"||"Tak")
                    odpowiedz=true;
                else odpowiedz=false;
            }
    };

int main()
{
    int ile=2, odp_tak=0, odp_nie=0;
    Pytanie_odpowiedz *tablica=new Pytanie_odpowiedz[ile];
    tablica[0].pytanie="Czy masz psa ?";
    tablica[1].pytanie="Czy masz kota ?";

    for(int i=0;i<ile;i++)
    {
        tablica[i].zadaj();
        if(tablica[i].odpowiedz==true)
            odp_tak++;
        else if(tablica[i].odpowiedz==false)
            odp_nie++;
    }

    cout<<"Odpowiedzi na tak : "<<odp_tak<<endl;
    cout<<"Odpowiedzi na nie : "<<odp_nie<<endl;


  return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 11 maja 2016 przez Radfler VIP (101,030 p.)
wybrane 11 maja 2016 przez 0xf
 
Najlepsza
if(pytanie=="tak"||"Tak")

Taki warunek zawsze da prawdę. Popraw go.

komentarz 11 maja 2016 przez 0xf Dyskutant (8,180 p.)
nie rozumiem dlaczego zawsze da prawde a nie w tych dwoch przypadkach ?
komentarz 11 maja 2016 przez Radfler VIP (101,030 p.)

Rozłożę to na dwa warunki:

const bool _1 = pytanie == "tak";
const bool _2 = "Tak";

Wartość _1 będzie równa true ⇔ pytanie będzie miało zawartość "tak". Wartość _2 jest zawsze równa true, gdyż adres tablicy znaków nigdy nie jest równy nullptr. Alternatywa wyrazów _1 i _2 daje więc zawsze true.

komentarz 11 maja 2016 przez criss Mędrzec (172,590 p.)
operator == zwraca bool a "Tak" to const char*. Tak więc używasz operatora || na typach bool i const char*.
komentarz 11 maja 2016 przez 0xf Dyskutant (8,180 p.)
aha dziwne gdybym na sile chcial uzyc tego II to jak musialbym to zadeklarowac ?
1
komentarz 11 maja 2016 przez Radfler VIP (101,030 p.)

W sensie? Co deklarować? Prawidłowy warunek powinien wyglądać tak:

if(pytanie=="tak"||pytanie=="Tak")
komentarz 11 maja 2016 przez 0xf Dyskutant (8,180 p.)
aa ok dzieki

Podobne pytania

0 głosów
3 odpowiedzi 740 wizyt
pytanie zadane 29 kwietnia 2019 w C i C++ przez Dominik Modrzejewski Nowicjusz (140 p.)
+1 głos
1 odpowiedź 401 wizyt
0 głosów
1 odpowiedź 165 wizyt

92,615 zapytań

141,465 odpowiedzi

319,783 komentarzy

61,997 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!

...