Я просто новичок и пробую код, который научил нас учитель, и что-то из учебника.
Эта программа предназначена для того, чтобы пользователь мог ввести свое имя и ввести пароль, как то, что система просит их записать.
Может кто-нибудь объяснить мне, почему этот цикл продолжает бесконечно зацикливаться, когда else срабатывает?
Кроме того, что cin.ignore делает с памятью имени char? Почему 80 лучше, чем 20?
И почему случайные числа на самом деле не случайные? Каждый раз, когда я запускаю его, цифры совпадают.
Большое спасибо всем вам!
#include #include using namespace std; int main () < char name[20]; int pwd, rand1, rand2; for (int i=0;i>pwd; if(pwd == rand1*rand2) < coutelse < cout> return 0; >
Решение
Сначала форматирование кода поможет вам лучше понять.
Также избегайте использования пространства имен std, его плохой практики и загромождающего глобальную область имен. Вместо этого используйте std :: xxxx, если вы не хотите каждый раз писать std :: cout, std :: cin и т. Д.
Программа Erasmus+. Как бесплатно поехать учиться в Европу
#include #include using std::cin; using std::cout; using std::endl; int main () < char name[20]; int pwd, rand1, rand2; for (int i = 0; i < 1; i++) < cout > pwd; cin.ignore(); if(pwd == rand1*rand2) < cout else < cout > return 0; >
Во-вторых, как вы можете видеть в приведенном выше коде, строка cin.ignore (); был добавлен после cin >> pwd. До того, как ваш код получал имя cin >>, оставляя « n» на входе, игнорируя « n», получая cin >> pwd, оставляя « n» на входе, зацикливая и читая ввод как пустой с помощью n ‘, оставляя другой’ n ‘на входе, первый’ n ‘удаляется с помощью ci.ignore (), второй’ n ‘читается с помощью cin >> pwd, … и т. д. Или, по крайней мере, я так понимаю Это.
Другие решения
Кто-то ответил на первый вопрос: потому что, когда вы i—, i в цикле for продолжает уменьшаться, а затем увеличиваться.
Затем, если ваш ввод длиннее 20, программа может остановиться. Так что вам нужно cin.ignore (80, ‘ n’), чтобы игнорировать лишний ввод. Число 80 — это просто большое число. Вы можете заменить его другим номером, только если он достаточно большой.
Вы должны использовать srand со временем. srand(time(null)) может помочь
Источник: web-answers.ru
Зацикленность — ошибка при построении процесса
З ацикленности — э то частые и многократные вхождения в один и тот же блок, происходящие как напрямую, так и через последовательность блоков.
Важно: Зацикленности вызывают задержки в выполнении задач и осложняют работу с ними из-за многократно дублирующихся записей в истории.
Если в логике процесса содержатся действия, которые приводят к зацикленности, то такой процесс требует исправлений и оптимизации.
Рассмотрим примеры ошибок, возникающих при использовании зацикленностей:
Всё о тренировках с дополнительным весом — Стритлифтинг
- Почему возникает сообщение «Более 3 вхождений в одном запуске. Похоже, что есть зацикливание»?
- Почему происходит замедление процесса?
- Почему процесс может быть остановлен?
Ссылка на это место страницы: #finish
1. Сообщение «Более 3 вхождений в одном запуске. Похоже, что есть зацикливание» возникает, если происходят частые повторные вхождения в блок, и приводит к автоматическому завершению задач по процессу.
Для решения необходимо перестроить процесс , перенаправив зацикленный вход на другой блок для последовательного выполнения действия в процессе.
Ссылка на это место страницы: #timer
2. Выполнение действий по процессу замедляется, если для него превышена частота обращений к системе.
П оэтому важно соблюдать минимальное рекомендуемое значение для блока «Задержка» — 5 минут. Для блока «Ожидание условия» время периодической проверки задается автоматически, а потому подобной ситуации не возникает.
Ссылка на это место страницы: #stop
3. Процесс может быть полностью остановлен, если в нем присутствуют бесконечные зацикливания. Задачи по такому процессу остаются в статусе «Отложена», а значение в колонке «Результат» для блоков отсутствует.
Дл я решения следует исправить зацикленность и ограничить количество циклов , заменив блок «Задержка» на «Ожидание условия» . Для данного блока предусмотрен отдельный выход после наступления определенного времени (таймаута).
Пт 16 Июля 14:27
Алина Голубцова удалить
Если вхождение в 1 блок происходит реже чем раз в неделю, появится ошибка зациклинности? И на какой раз? На 4-ый?
Сохранить или отменить редактирование
Вт 01 Фев 2022 Нравится • Ответить
Здравствуйте, Алина.
Да, ошибка будет зафиксирована на 4-ый раз. На данный момент нет возможности обозначить «допустимый» интервал вхождений.
Обратите, пожалуйста, внимание: рекомендуется избегать настроек, которые приведут к зацикленности действий — независимо от интервала вхождений.
Источник: getcourse.ru
1) В каком случае программа, содержащая цикл с условием, может зациклиться ? Приведите пример такой программы.
2) В каком случае цикл с переменной не выполняется ни разу ?
3) Верно ди , что любой цикл с переменной можно заменить циклом с условием ? Верно ли обратное утверждение ? Ответ обоснуйте.
4) В каком случае можно заменить цикл с условием на цикл с переменной ?
Помогите ответь, пожалуйста срочно надо завтра урок .
1. Если в теле цикла нет операций, влияющих на условие так, чтобы цикл завершился.
2. В случае, если начальное значение параметра больше конечного.
3. Верно. Если в тело цикла добавить переменную, являющуюся счетчиком, каждый повтор цикла её изменять на один шаг, а в условии цикла указать конечное значение счетчика. Обратное утверждение.Реализовать цикл с условием в цикле for технически возможно, но это тупо.
4. В случае, если известно количество итераций цикла.
1) Если ввести два равных значения, то программа «зациклится». Цикл будет повторяться бесконечное количество раз.
2) Если условие с самого начало ложно, то цикл выполняться не будет.
3) Да, возможно. В цикле с переменной сама переменная может встречаться несколько раз, что позволяет производить над ней действия.
4) В случае, когда необходимо выполнить арифметические вычисления (возведение в квадрат и тд);
Источник: educatic.ru