Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Poprawne zagnieżdżenie if w ifie

Ostatnio zmodyfikowano 2017-05-16 23:15
Autor Wiadomość
TheFandorn
Temat założony przez niniejszego użytkownika
Poprawne zagnieżdżenie if w ifie
» 2017-05-14 21:20:02
Witam,
chcę napisać prosty program, do którego będzie można wprowadzić dwie zmienne, które muszą być większe od 50 ale mniejsze od 200. Program musi także uważać na błędy przy próbowaniu wpisania litery zamiast liczby. Napisałem na razie tylko część programu i mam problem z zagnieżdżeniem w IFie linijki kodu odpowiedzialnej za kontrole przedziału liczb (większe od 50, mniejsze od 200). Nie wiem jak go poprawnie zagnieździć. Mógłby mi ktoś poproszę pomóc?

C/C++
#include <iostream>
int main() {
    int a;
    int b;
    using namespace std;
   
    cout << "Po wprowadzeniu dlugosci bokow prostokatu program obliczy i poda jego pole oraz obwod." << endl;
    cout << "Podaj dlugosc boku A. Musi sie ona miescic w przedziale od 50 do 200 jednostek." << endl;
    do
    {
        cin >> a;
        if( cin.good() )
             cout << "Wczytano." << endl;
       
        if( 50 < a > 200 )
             cout << "Podales zla liczbe" << endl;
        else
             cout << "Blad, podaj liczbe a nie litere." << endl;
       
        cin.clear();
        cin.sync();
       
    }
    while( cin.good(), 50 > a < 200 );
   
    return 0;
}

Wiem, bez linijek "if(50 < a > 200)" i "cout << "Podales zla liczbe" << endl;" wszystko działa poprawnie. One psują działanie programu najprawdopodobniej dlatego, że nie wiem jak poprawnie je zagnieździć.

Z góry dziękuję za pomoc i pozdrawiam.
P-161098
Saran
» 2017-05-14 21:46:42
if( a > 50 && a < 200 ) { }
P-161100
TheFandorn
Temat założony przez niniejszego użytkownika
» 2017-05-14 22:20:20
Niestety nie działa jak powinno

http://www.fotosik.pl/zdjecie​/419f07d53dc8f90b

Co mam objąć tymi klamrami?
P-161103
wojownik266
» 2017-05-14 22:38:03
Na Przykład:
C/C++
if( a > 50 && a < 200 )
{
    cout << "Podales zla liczbe" << endl
}
P-161105
TheFandorn
Temat założony przez niniejszego użytkownika
» 2017-05-14 22:42:00
Nadal to samo
P-161106
wilkoo13
» 2017-05-14 22:47:09
Jeszcze while
P-161107
latajacaryba
» 2017-05-14 22:48:21
Zakładam, że chodzi o "blad, podaj liczbe a nie litere"
C/C++
if( 50 < a && a > 200 ) // tu byl blad, nie ma takiego zapisu w c++ jak (50 > a < 200) czy nawet (50 < a < 200)
     cout << "Podales zla liczbe" << endl;
else
     cout << "Blad, podaj liczbe a nie litere." << endl;


Po pierwsze:
a > 50 i a > 200 - bez sensu, jeśli a > 200 to zawsze będzie większe od 50

Po drugie
masz else, więc jeśli if nie jest prawdziwy, to zawsze wystąpi instrukcja else. Zamiast else wpisz
C/C++
else if( warunek )

Czyli "w przeciwnym wypadku, jeśli ..."
Powinno być tak:

C/C++
if( 50 > a || a > 200 ) // '||' oznacza "lub"
     cout << "Podales zla liczbe" << endl;
else if( cin.good == false )
     cout << "Blad, podaj liczbe a nie litere." << endl;


Jeśli a > 200 lub mniejsze od 50, to: ...
w przeciwnym wypadku, jeśli cin.good == false, to...
P-161108
TheFandorn
Temat założony przez niniejszego użytkownika
» 2017-05-14 22:53:43
Wielkie dzięki, to ">" "<" poprawilem po chwili ale właśnie nie wiedziałem jak działa "else if".

JEDNAK NIE. Cholera, wiem, że robie zamieszanie. Jeszcze raz wkleję cały kod
C/C++
#include <iostream>
int main() {
    int a;
    int b;
    using namespace std;
   
    cout << "Po wprowadzeniu dlugosci bokow prostokatu program obliczy i poda jego pole oraz obwod." << endl;
    cout << "Podaj dlugosc boku A. Musi sie ona miescic w przedziale od 50 do 200 jednostek." << endl;
    do
    {
        cin >> a;
        if( cin.good() )
             cout << "Wczytano." << endl;
       
        if( 50 > a || a > 200 ) // '||' oznacza "lub"
             cout << "Podales zla liczbe" << endl;
        else if( cin.good() == false )
             cout << "Blad, podaj liczbe a nie litere." << endl;
       
        cin.clear();
        cin.sync();
    }
    while( cin.good() && 50 < a && a < 200 );
   
    return 0;
}

Po wpisaniu litery wyswietla się "podales zla liczbe" i funkcja while ewidentnie tez nie dziala poprawnie. Przepraszam za ten cholerny ambaras.
P-161109
« 1 » 2
  Strona 1 z 2 Następna strona