Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.02.2022
Сообщений: 20

Выйти из цикла по условию

19.02.2022, 16:00. Показов 1743. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два массива, простая нумерация и раздомные числа.

C++
1
2
3
4
int start = 2;
int temp;
int nums[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 } ;
int random[] { 9, 2, 14, 7, 13, 23, 8, 6, 22, 19, 3, 24, 10, 11, 15, 4, 21, 16, 18, 20, 1, 25, 12, 5, 17 } ;
Есть цикл, который выводит соответствие значения и относительно индекса.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main() {
cout << "Нумерация: " << nums [start] << endl;
cout << "Выпало: " << random [start] << endl;
cout << "---------------------------------------------" << endl << endl;
temp = random [start];
 
int i = start;
while (i < 24) {
cout << "Нумерация: " << nums [temp - 1] << endl;
cout << " Выпало: " << random [temp - 1] << endl << endl;
temp = random [temp - 1];
i++;
}
}
Видно, что с третьей итерацией все пойдет по кругу.
Как выйти из цикла перед тем как начнутся повторения?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2022, 16:00
Ответы с готовыми решениями:

Как можно выйти из цикла по условию?
Здравствуйте ребята!, сравнительное время назад вами был предствавлен код по моей просьбе вот: Private Sub Command1_Click() ...

Выйти из потока по условию
есть поток, в котором много всего, и оно выполняется последовательно и один раз мне нужно на любом этапе в run() проверить переменную...

Выйти из цикла
Есть курсор, который работает в While. Надо сделать так, что по достижению переменной определенного значения происходил выход из цикла. ...

26
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
19.02.2022, 21:49
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от CatBlue Посмотреть сообщение
Не надо меня отговаривать от цикла, он мне нужен.
Зачем? Расскажите, наконец, что вам в итоге нужно сделать? Прервать цикл - это средство достижения цели, а не цель. Зачем вам понадобилось выводить на консоль текст "нумерация:.. выпало..."?
0
0 / 0 / 0
Регистрация: 19.02.2022
Сообщений: 20
19.02.2022, 21:53  [ТС]
Цитата Сообщение от avgoor Посмотреть сообщение
Прервать цикл - это средство достижения цели, а не цель
Не надо за меня решать)) Моя цель как раз таки прервать цикл тем путем, что я описал. Я не могу понять вы знаете как написать такое условие или нет? Если нет или нет скажете, давайте закончим плз.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
19.02.2022, 21:53
Цитата Сообщение от ram876 Посмотреть сообщение
Посмотрите.
Ну вот. Так и случилось, как в приведенной ссылке про проблему XY.
Причем, в случае ТСа, его random массив, скорее всего, перестановка, а значит можно просто проверять на совпадение с первым числом.
0
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,282
20.02.2022, 08:44
Цитата Сообщение от CatBlue Посмотреть сообщение
Моя цель как раз таки прервать цикл тем путем, что я описал. Я не могу понять вы знаете как написать такое условие или нет?
Канешна знаем. Например если выбирается число 12, можно вместо него вписать в массив 0. И проверять каждое новое число на 0 - значит оно уже было. Если массив важен для последующего алгоритма, можно создать его копию.

Немного непонятен смысл первого массива. Если выпадает случайный индекс (пусть те же 12) - в первом массиве в этой ячейке будет число 11 - потому что индексация начинается с нуля. В чём тут сакральный смысл? Ну вот и записывайте 0 или -1 в первый массив, если число уже было выбрано. Восстановить его при необходимости проще простого.
1
0 / 0 / 0
Регистрация: 19.02.2022
Сообщений: 20
20.02.2022, 08:49  [ТС]
Цитата Сообщение от alexu_007 Посмотреть сообщение
Канешна знаем.
Спс, тоже подойдет.
Я уже и сам понял, что первый массив бесполезен. Он всегда будет +1.
0
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,282
20.02.2022, 09:29
Цитата Сообщение от CatBlue Посмотреть сообщение
Спс, тоже подойдет.
Можно во втором массиве при выбранном числе прибавлять к нему (например) 100 - тогда выбранное число 12 станет 112, что будет признаком использования. Восстановить при необходимости просто - в цикле вычесть 100.

Не очень понятен рэндомный выбор из массива, в котором числа уже перемешаны. Это что - дабл рэндом, или недоверие к алгоритму перемешивания?
0
0 / 0 / 0
Регистрация: 19.02.2022
Сообщений: 20
20.02.2022, 09:55  [ТС]
Цитата Сообщение от alexu_007 Посмотреть сообщение
Не очень понятен рэндомный выбор из массива, в котором числа уже перемешаны. Это что - дабл рэндом, или недоверие к алгоритму перемешивания?
Это просто название, потому что там как бы рандомный порядок. Можно его назвать как угодно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2022, 09:55
Помогаю со студенческими работами здесь

Выйти из цикла
Доброе время суток форумчани. Не могу выйти из цикла. Может кто напишит почему не работает, желательно так, что бы и я понял. ...

Выйти из цикла
Всем привет Не понял, как можно выйти из цикла. Мне нужно, чтобы он выходил если if (IsValid) будет тру. Все ок, если это все внутри...

Не могу выйти из цикла
Подскажите, пожалуйста, почему не выходит из цикла при вводе Y: do { cout &lt;&lt; &quot;Do you want to calculate again? (Y/N)&quot;; ...

Выйти из цикла forEach
function sumOfSquaresForTwo(...args) { let N = args; args.splice(args.length-1); let result = 0; ...

Не могу выйти из цикла
Не могу понять, как выйти из цикла через 35 раз #!/bin/bash while true; touch a`date +%s`.text touch b`date +%s`.text touch...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru