Как сделать завершение цикла?

381
13 мая 2017, 21:11

Мне нужно сделать выход по нажатию определенной кнопки, как сделать?

int main()
{   
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
    while (1)
    {
        int x, y, Xk, Xn, sum = 0, k, count = 0;
        bool find = false;
        cout << "Введите размерность массива (x, y): ";
        while (!(cin >> x) || (cin.peek() != '\n' || !(x>0))) //проверка на корректность ввода
        {
            cin.clear();
            while (cin.get() != '\n');
            cout << "Введено недопустимое значение. Повторите попытку." << endl;
        }
        while (!(cin >> y) || (cin.peek() != '\n' || !(y>0))) //проверка на корректность ввода
        {
            cin.clear();
            while (cin.get() != '\n');
            cout << "Введено недопустимое значение. Повторите попытку." << endl;
        }
        cout << "Введите диапазон чисел, для заполнения массива (Xn, Xk): ";
        while (!(cin >> Xn) || (cin.peek() != '\n')) //проверка на корректность ввода
        {
            cin.clear();
            while (cin.get() != '\n');
            cout << "Введено недопустимое значение. Повторите попытку." << endl;
        }
        while (!(cin >> Xk) || (cin.peek() != '\n')) //проверка на корректность ввода
        {
            cin.clear();
            while (cin.get() != '\n');
            cout << "Введено недопустимое значение. Повторите попытку." << endl;
        }
        int **mas = new int*[x];//создание массива
        for (int i = 0; i < x; i++)
            mas[i] = new int[y];
        cout << "Начальный массив => " << endl;
        for (int i = 0; i < x; i++) //заполнение массива и вывод
        {
            for (int j = 0; j < y; j++)
            {
                mas[i][j] = (rand() % Xk) + Xn;
                cout << mas[i][j] << " ";
            }
            cout << endl;
        }
        cout << "Введите K: ";
        while (!(cin >> k) || (cin.peek() != '\n')) //проверка на корректность ввода
        {
            cin.clear();
            while (cin.get() != '\n');
            cout << "Введено недопустимое значение. Повторите попытку." << endl;
        }
        for (int i = 0; i < x; i++) //заполнение массива и вывод
        {
            for (int j = 0; j < y; j++)
            {
                if (i + j == k)
                {
                    sum += mas[i][j];
                    find = true;
                    count++;
                    cout << "Элемент с индексом [" << i << "]+[" << j << "]=" << k << " к сумме добавил " << mas[i][j] << endl;
                }
            }
        }
        if (find == true)
            cout << "Сумма " << count << " элементов для которых [i]+[j]=" << k << " равна " << sum << endl;
        else
            cout << "Таких элементов для которых [i]+[j]=" << k << " нет" << endl;
    }
}
Answer 1

На вопрос в комментарии

Вот так? While ( c != 0) { kod cout << "Для завершение работы программы нажмите 0" cin >> c; } cout << "Текст"; return 0; Вот так правильно будет?

Нет, потому что cin>>c считывает символ. А он не 0, а '0'.

Так что правильно

char c = '0';
while( с != '0')
{
    // Работаем
    cout << "Для продолжения работы введите 0: ";
    cin >> c;
}

И учтите, что cin >> c требует не только нажать клавишу скажем с 0, но и потом нажать Enter.

READ ALSO
Как создать шаблонный алиас?

Как создать шаблонный алиас?

Хочу сделать проверку типа итератора каким-то таким способом:

386
Последовательность от a до zzz

Последовательность от a до zzz

Как перебрать последовательность букв в цикле? каждую последовательность нужно иметь возможность получить, зная номер позиции

320
Непонятная битовая операция

Непонятная битовая операция

Что может означать операция i = i & (i+1) в реализации дерева отрезков?

291
C++ теорема синусов [требует правки]

C++ теорема синусов [требует правки]

Здравствуйте! У меня есть задание написать дочерний класс Треугольник от класса УголКласс Угол уже готов, но у меня есть задание: имея класс...

246