1 Востаннє редагувалося koala (24.09.2019 07:13:52)

Тема: Поможіть з кодом, тут вроді би все просто, але в мене не виходе:(

Задали нам зробити прогу для обчислення квадрата, проблема заключається в тому що я не розумію чому тут не виходить як я написав і чому else в якому знаходиться goto не вертає назад коли введена неправильна відповідь, а просто переходить зразу до систем пауз



Поможіть будь ласка!



#include <iostream>
#include <Windows.h>
using namespace std;
int main()

{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string answer;
    float a;

    cout << "Введіть сторону квадрата...\n";
    cin >> a;


    cout << "Що потрібно знайти?" << endl;
asktheuser:
    cout << "Площу    - 1" << endl;
    cout << "Периметр - 2" << endl;
    cout << "-";
    cin >> answer;
    {
        
        if(answer == "1","2")
        {
            if (answer == "1")
            {
                float S = (a * a);
                cout << "Площа квадрата буде дорівнювати - " << S << endl;
            }

            if (answer == "2")
            {

                float P = (4 * a);
                cout << "Периметр квадрата буде дорівнювати - " << P << endl;

            }
        }
        else
        {
            cout << "Введіть 1 або 2 щоб продовжити роботу" << endl;
            goto asktheuser;
        }
    }
    system("pause");
    return 0;
}

2 Востаннє редагувалося koala (24.09.2019 07:21:11)

Re: Поможіть з кодом, тут вроді би все просто, але в мене не виходе:(

1. Не використовуйте goto. Ну, хіба що ви спеціально вивчаєте саме оператор goto або ви досвідчений професіонал і пишете критичний до часу виконання код. Якщо вам треба повертатися назад - значить, все треба переписати в циклі.
2. Ваша проблема тут:

 if(answer == "1","2")
Це, швидше за все, буде за 1-2 уроки

Якщо вам треба поставити кілька логічних умов, то маєте скористатися логічними операторами && (ТА) і || (АБО):

if(answer == "1" || answer =="2")

А у вас використовується досить неочевидний оператор , (кома), який повертає другий операнд. Цей вираз сприймається як "обчислити answer == "1" і повернути значення "2", і фактично еквівалентний if("2"). А оскільки будь-що ненульове в C++ розглядається як істинне значення при перевірках, то така умова виконується завжди.

Утім, тут вам вистачить і ланцюжка

if(answer=="1"){
...
} else if(answer=="2"){
...
} else {
...
}

3. Використовуйте теги code (кнопка <>) для фрагментів коду. На перший раз я вам додав.

Подякували: Chemist-i, leofun01, Maxwell1487, ostap34PHP4

3

Re: Поможіть з кодом, тут вроді би все просто, але в мене не виходе:(

Хвилинка ненависті ґрамарнаці

- поможіть із
- ніби-то
- ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - розставте самостійно, зайві лишіть на наступний раз.

Подякували: Maxwell14871