Как вернуться в функцию «main()» после выполнения какой-либо функции?
Я написал программу для вычисления дискриминанта, но помимо неё я собираюсь дать программе ещё несколько вариантов работы с числами, но сделать это так, чтобы консольное окно не закрывалось после выполнения одной из операций с числами. Тоби-ж, зациклить программу, пока пользователь сам её не закроет. Вот код программы(если нужно) — https://pastebin.com/xQf3g1vC
Функцию «sqr()» я написал в виде заголовочного файла, ибо такой метод выглядит более читабельным, чем «x*x», ну как по мне.
- Вопрос задан более двух лет назад
- 634 просмотра
Комментировать
Решения вопроса 1
Max @maximsemin23
#include #include #include #include "int_sqr.h" using namespace std; int a, b, c, d; double x1, x2; int discriminant() < setlocale(LC_ALL, "Russian"); cout > a; cout > b; cout > c; d = sqr(b) - 4 * a * c; cout else < x1 = (-b + sqrt(d)) / (2 * a); x2 = (-b - sqrt(d)) / (2 * a); cout return 0; > void mainloop() < string parm; cout > parm; if (parm == "D") < cout > int main()
Ответ написан более двух лет назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 1
vanyamba-electronics @vanyamba-electronics
#include #include using namespace std; inline void error(const string& msg) < throw msg.c_str(); >inline void error(const char* msg = nullptr) < throw msg; >void func2() < error("Just error."); >void func() < func2(); error(); // Just return to main() >int main() < while (true) < try < func(); >catch (const char* msg) < if (msg != nullptr) cerr > return 0; >
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- C++
- +1 ещё
В чем ошибка кода?
- 1 подписчик
- 11 часов назад
- 101 просмотр
Как вернуться в начало цикла java
Вернуться в начало цикла можно, самостоятельно поменяв значение счетчика цикла.
Необходимо быть внимательным и четко прописать условия выхода из цикла, чтобы не попасть в бесконечный цикл.
Ниже приведен метод пузырьковой сортировки в рамках одного цикла с изменением счетчика для возврата в начало цикла :
import java.util.Arrays; public class App public static void main(String[] args) int[] arr = 5, 2, 4, 1, 3>; bubbleSort(arr); System.out.println(Arrays.toString(arr)); // => [1, 2, 3, 4, 5] > public static void bubbleSort(int[] arr) boolean wasSwap = false; for(int i = 0; i arr.length - 1; i++) if(arr[i] > arr[i + 1]) // меняем местами элементы int temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; wasSwap = true; > if(i == arr.length - 2) // если дошли до конца массива if(wasSwap) // и были изменения данных i = -1; // то меняем счетчик для возврата в начало цикла wasSwap = false; > else // если изменений не было return; // то сортировка закончена > > > > >
Как вернуться в начало цикла?
Откуда же нам знать «как правильно»? Это только вам известно, какие у вас должны быть значения (и где) в начале цикла. На эти ваши магические значения ничего не говорят.
5 окт 2019 в 18:16
Прошу прощения, я не ясно выразился. Вопрос такой — если я пишу continue меня перебросит в начало цикла while?
5 окт 2019 в 18:20
@Просто Кодер: continue перебрасывает вас на конец тела цикла, а не на начало. В цикле while это действительно эквивалентно переходу на начало цикла. В остальных видах циклов — в общем случае не эквивалентно.
9 окт 2019 в 17:09
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Можете упростить до:
while (l1 != r) < if (k >n_d[l1]) < k = k - n_d[l1]; l1 += 1; >else < k = k_old; count -= 1; n_d[count2] = 1; count2 += 1; >> cout
Учитывая количество участвующих обьектов, подозреваю, что весь код нуждается пересмотру
Отслеживать
ответ дан 5 окт 2019 в 18:21
AR Hovsepyan AR Hovsepyan
15.9k 3 3 золотых знака 13 13 серебряных знаков 30 30 бронзовых знаков
Странно, если вы упростили мой код, не меняя его. Я его вставил вместо своего и все заработало. Хмм, пойду разбираться в упрощение этого куска, спасибо большое)
5 окт 2019 в 18:25
@Просто Кодер, это вам кажется, что ничего не изменилось. Я просто выразил то, что вы хотели, а вы своим кодом даже компилятору можете заставить запутаться(в качестве шутки)
5 окт 2019 в 18:29
- c++
- for
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как вернуться в начало функции с
Добрый день!
Есть 2 цикла. Когда я зайду во второй, при определенных условиях мне нужно вернуться в начало первого цикла. то есть иерархия такая, цикл в цикле.
ЦИКЛ 1: Для каждого Стр из Массив Цикл
. . .
ЦИКЛ 2: Для каждого Запись из мНаборЗаписейРегистра Цикл
//вот здесь у меня условие и если оно ложь, я пишу "Продолжить;", но меня возвращает на начало второго цикла. А мне надо, чтобы на начало 1 цикла, чтобы тот код, который ниже, больше не выполнялся для Стр! Чтобы пошла следующая Стр в цикле1
КонецЦикла;
замени Продолжить на Прервать
не помогло. Идет дальше.
Сейчас структуру ниже приведу как у меня:
ЦИКЛ 1: Для каждого Стр из Массив Цикл
. . .
Если . Тогда
ЦИКЛ 2: Для каждого Запись из мНаборЗаписейРегистра Цикл
Если . Тогда
.
Иначе
Прервать;
конецЕсли;
КонецЦикла;
КОнецЕсли;
КонецЦикла;
Где прервать, выходит из второго цикла и идет ниже..Не возвращает наверх
(4) то есть из второго цикла выходит, а первый продолжает, а мне не нужно его продолжать, надо чтобы заново шел
Перейти (Goto)
Синтаксис:
Перейти ~;
Описание:
Безусловная передача управления на другой оператор программы. Передает управление от одного оператора к другому. Область действия оператора ограничивается программным модулем, процедурой или функцией; он не может передать управление за пределы программного модуля, процедуры или функции.
Метка – это идентификатор, "помечающий" определенный оператор, на который надо передать управление в ходе выполнения программы. Метка отделяется от этого оператора двоеточием и предваряется символом "~".
Пример:
Пока Истина Цикл
Для Каждого Элемент Из МассивЭлементов Цикл
Если ВыполнениеУсловия(Элемент) Тогда
Перейти ~ВыходИзДвойногоЦикла;
КонецЕсли;
.
КонецЦикла;
КонецЦикла;
~ВыходИзДвойногоЦикла:
// продолжение вычислений