Warunek c++


(maciek03) #1

jak zapisać warunek, który sprawdza czy x mieści się w zakresie od 1 do 6, włącznie z 1 i 6 ??


(Damgora) #2

x>=1 && x<=6


(maciek03) #3

{

}


([alex]) #4

Warunek poprawny tak jak zamawiałeś tylko że masz go odwrócić aby było zgodnie z tym gdzie go używasz.

Generalnie może lepiej tak:

#include using namespace std;

(Ob Serwator) #5

Witam.

Słusznie Ci pokazuje źle, gdyz wpisałeś warunek odnoszący się do wyboru z zadanego przedziału:

if(( x >= 1) && (x <= 6) ) { // opis akurat dobrego wyboru}

Powinno być:

if(( x <= 1) || (x >= 6) ) {// opis złego wyboru i powrot do ponownego wybierania}

( poprawione dzięki spostrzegawczości @alexa - opis w późniejszych komentarzach )

Poza tym, jest dobzre, tyle że w zasadzie nie powinno się używać instrukcji skoku goto, o wiele lepiej wszytsko załatwić pętlą. Np pętlą nieskończoną i w niej podać warunek wyjścia z niej za pomocą instrukcji break. Na przykład, kiedy wpiszemy liczbę z przedziału (1,6), wyskakujemy z pętli:

int a;

  while(1)

  {

      cout << "Podaj loiczbe z zakresu 1-6: ";

      cin >> a;

      if (a >=1 && a<=6) break;

  }

  cout << "Podałeś liczbę " << a;

Można też użyć pętli for (;:wink: - nie podająć nic pomiędzy średnikami. Dzięki temu jest też czytelniej, bo wiesz, że wykonuje się jakaś pętla. Ja musiałęm szukać jakiś czas, do czego odnosi się to goto, zanim znalałem linijkę z "a:".

Proszę też robić odpowiednie wcięcia, by kod był czytelniejszy.

Pozdrawiam.


([alex]) #6

Nie, zły wybór to:

if((x<=1)||(6<=x))


(Ob Serwator) #7

@alex

Witam.

W jaki sposób wklejasz kolorową składnię kodu? Mnie zawsze na zielono wkleja, a kopiuję z Code::Blocks.

Pozdrawiam.

-- Dodane 11.11.2010 (Cz) 20:16 --

Dałem opis do programu kolegi, bez żadnych zmian. W przypadku opisanym przeze mnie, akurat jest dobrze, gdyż, kiedy liczba wybierana jest spoza przedziału (1,6), wtedy ma wracać do etykiety a: instrukcją goto. To tylko tak odnośnie programu oryginalnego kolegi, bez żadnych innych zmian, a więc z użyciem goto.


([alex]) #8

Ob.Serwator , załóżmy że użytkownik wprowadził 100, sprawdzamy twój warunek:

( ( 100 <= 1 ) && ( 100 >= 6) )

( ( false ) && ( true ) )

( false)

więc goto nie zadziała. Jak nie znasz podstaw logiki to czemu bierzesz się za dawanie porad na temat programowania?


(Ob Serwator) #9

@alex

A, tu masz rację, powinno być "lub" a dałem "i". Teraz zauważyłem, że dałeś "lub" a nie "i", ja się skupiłem na porównanaich, a nie spójnikach. Mea culpa, że akurat nie wkleiłem kodu, żeby sprawdzić, jak zadziała i wyszłoby mi wtedy.

Więc przepraszam i dzięki za poprawkę.

Pozdrawiam.


(Damgora) #10

jeśli 'dobrym wyborem' jest: x>=1 && x<=6

to 'złym' chyba: !(x>=1 && x<=6), czyli: x<1 || x>6

(przeoczyłem coś?)


(Ob Serwator) #11

@cayman3_11

Nie chyba, a na pewno :slight_smile:

Też dziękuję.

Pozdrawiam.