c++ problem z if

Odpowiedz Nowy wątek
2011-07-22 23:31
0

Dlaczego nawet jeśli japowalce >= 1 się zgadza to wyskakuje mi cout << "Dokopal Ci Menel, wstydz sie !\n"; ?
Jakieś pomysły?

 if(japowalce >= 1 or menelpowalce <=0 )
 
    cout << "Pokonales Menela. Gratulacje.";
    else
    cout << "Dokopal Ci Menel, wstydz sie !\n";
edytowany 1x, ostatnio: madmike, 2011-07-24 13:15

Pozostało 580 znaków

2011-07-22 23:35
0

a spróbuj z dodatkowymi nawiasami, może kolejność działań jest inna niż ci się wydaje:

if((japowalce >= 1) or (menelpowalce <=0))

Pozostało 580 znaków

2011-07-22 23:41
0

Dalej nic

if((japowalce >= 1)|| (menelpowalce <=0)) - allocer 2011-07-22 23:50
allocer - w c++ można zamiennie stosować || lub or i && lub and, tak dla sprostowania :P - tomepaw 2011-07-23 16:34

Pozostało 580 znaków

2011-07-23 00:17
0

Spróbuj po if i else dać {} i między nimi instrukcje do wykonania i zamiast pisać or pisz ¦¦ czyli pionowe kreski (pisze z telefonu dlatego więcej teraz nie pomogę). Pionowe czyli bez tych odstępów..ja po prostu nie mam tego znaku na telefonie, ale na pewno wiesz ocb ;)


Programista uczy się całe życie....
edytowany 1x, ostatnio: Dr Zielu, 2011-07-23 00:18
Nie działa nadal - Nortos 2011-07-23 00:37

Pozostało 580 znaków

2011-07-23 06:56
0

Jeżeli to:

if(japowalce >= 1 || menelpowalce <=0 )
    cout << "Pokonales Menela. Gratulacje.";
else
    cout << "Dokopal Ci Menel, wstydz sie !\n";

wypisuje "Dokopal Ci Menel, wstydz sie !" tzn. , że japowalce jest mniejsze od 1 i menelpowalce jest większe od 0 - innej możliwości po prostu nie ma.


edytowany 1x, ostatnio: byku_guzio, 2011-07-23 06:57

Pozostało 580 znaków

2011-07-23 08:16
0

zamiast pisać or pisz ¦¦ czyli pionowe kreski

słowa and, or, not itp. są w standardzie C++ na równi z &&, || i !.

Pozostało 580 znaków

2011-07-23 10:58
0

byku ale to jest nie możliwe bo mam pętle

while(menelpowalce<=0 or japowalce >=1);
Takie coś się kompiluje? Jakim prawem? - Patryk27 2011-07-23 11:04
Normalnym, to jest poprawny zapis - byku_guzio 2011-07-23 13:37

Pozostało 580 znaków

2011-07-23 11:29
0
#include <iostream>
using namespace std;
int main()
{
    int japowalce, menelpowalce=0;
    while(menelpowalce<=0 or japowalce >=1)
    {
        if(japowalce >= 1 || menelpowalce <=0 )
            cout << "Pokonales Menela. Gratulacje.";
        else
            cout << "Dokopal Ci Menel, wstydz sie !\n";
    }
} 

Sprawdziłem^^ Coś takiego się kompiluje, tak wyglądał program, na którym to wypróbowałem. Wypisuje się oczywiście "Pokonałeś menela". Nie widzę jednak sensu w tym kodzie. Jeśli warunek pętli nie będzie się zgadzał, to i else się nie wykona, bo pętla mu nie pozwoli. No i po kiego diabła masz tam postawiony na końcu pętli średnik (w programie, który próbowałem oczywiście go nie ma)?

edytowany 3x, ostatnio: Filar, 2011-07-23 11:35

Pozostało 580 znaków

2011-07-23 12:32
Kumashiro
0
Nortos napisał(a)

Dlaczego nawet jeśli japowalce >= 1 się zgadza to wyskakuje mi cout << "Dokopal Ci Menel, wstydz sie !\n"; ?
Jakieś pomysły?

Jesteś pewien, że "japowalce" jest większe lub równe 1? Sprawdziłeś debuggerem lub zwykłym printf()em, czy tylko Ci się wydaje, że musi być >=1?

Jeśli rzeczywiście zastosował te instrukcje warunkowe w pętli, o której napisał, to gdyby japowalce było mniejsze od 1, program niczego by nie wypisał. - Filar 2011-07-23 13:05

Pozostało 580 znaków

2011-07-23 13:08
0
Azarien napisał(a)

zamiast pisać or pisz ¦¦ czyli pionowe kreski

słowa and, or, not itp. są w standardzie C++ na równi z &&, || i !.

Owszem masz racje :) Ale niektóre kompilatory (starsze) mogą ich nie rozumieć. A nie wiesz jaki on ma kompilator :)
Co do autora tematu - spróbuj jeszcze dać klamry...po if{} i else {}.


Programista uczy się całe życie....
edytowany 1x, ostatnio: Dr Zielu, 2011-07-23 13:09

Pozostało 580 znaków

2011-07-23 13:39
0

@autor: daj cały kod tej pętli, bo tu nawet szklana kula nie pomoże. Na 100% warunek jest niespełniony, pewnie gdzieś jakieś obliczenia w tej Twojej pętli tak zmieniają zmienne, że if jest nie spełniony.


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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