If...else. Błąd w kompilacji programu.

0

Zastanawiam się dlaczego w tym przypadku pojawia się komunikat o braku "if" przed "else".

#include <iostream>

using namespace std;

int main()
{
    int a,b,cel;
    bool czyjuz=false;
    cin >> a >> b >> cel;

    if(czyjuz==false){
        for(int i = 1;czyjuz==false;i++){
            a = a+a;
            if(a==cel)
                czyjuz = true;
                cout << i+1;
            else a=a+a;
        }
        for(int i = 1;czyjuz==false;i++){
            b = b+b;
            if(b==cel)
                czyjuz = true;
                cout << i+1;
            else b=b+b;
    }
    return 0;
}
3

Bo nie masz klamer.

Po przepuszczeniu przez format.krzaq.cc:

#include <iostream>

using namespace std;

int main()
{
    int a, b, cel;
    bool czyjuz = false;
    cin >> a >> b >> cel;

    if (czyjuz == false) {
        for (int i = 1; czyjuz == false; i++) {
            a = a + a;
            if (a == cel)
                czyjuz = true;
            cout << i + 1;
            else a = a + a;
        }
        for (int i = 1; czyjuz == false; i++) {
            b = b + b;
            if (b == cel)
                czyjuz = true;
            cout << i + 1;
            else b = b + b;
        }
        return 0;
    }
0

Klamra musi być przed If czy zaraz po pierwszym nawiasie z instrukcją warunkową?

1

Jak nie masz klamer to tylko jedna (pierwsza) instrukcja jest w poprzedzającym ifie/pętli. Jeśli to dla Ciebie problematyczne - stosuj klamry zawsze.

0

Dobrze, jeszcze jedno odnośnie tego kodu, jeśli obie pętle for się wykonają, to ten pierwszy if zrobi się drugi raz?

0

Pierwszy if wykonuje się przed pętlami.

0

to zadziała parę zary?

#include <iostream>

using namespace std;

int main()
{
    int a,b,cel;
    bool czyjuz=false;
    cin >> a >> b >> cel;

    for(int i = 1;czyjuz==false;i++){
        for(int z = 1;czyjuz==false;i++){
            if(a==cel && a%2!=0){
                czyjuz = true;
                cout << i;}
            else {a=a+a;}
        }
        for(int y = 1;czyjuz==false;i++){
            if(b==cel && b%2==0){
                czyjuz = true;
                cout << i;}
            else {b=b+b;}
        }
        cout << a << " "<<b;
    }
    return 0;
}
0

Nie. Prześledź wykonanie programu pod debuggerem.

0

bool czyjuz=false; po czym warunek przerywajacy masz czyjuz==false

w tlumaczeniu na jezyk
"jezeli czyjuz jest rowne false przestan wykonywac"

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