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

Почему в цикле не срабатывает break

02.02.2018, 14:23. Показов 5272. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем! Объясните почему в этом цикле при i=2 не срабатывает break?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
int main()
{
    int i,j;
for (i=2;i<10;i++)
{ 
    for(j=2;j<=(i/j);j++)
   
        if(!(i%j)) break;
        cout<<"i="<<i<<"j="<<j<<"\n"<<' '<<"i делить на j остаток="<<(i%j)<<"\n";
        if (j>(i/j)) cout<<i<<" - Это число простое\n";
         
    
}
   
 
    return 0;
}
Добавлено через 1 минуту
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.02.2018, 14:23
Ответы с готовыми решениями:

Не срабатывает условие в цикле while не могу понять почему
При решении задачки в которой необходимо сделать игру Однорукий Бандит, наткнулся при тестировании что одно из условий цикла while не...

комманда break в двойном цикле
как сделать так, чтобы при выполнении условия происходил выход из двойного цикла? Я пробую for(int i=0; i&lt;imageLabel.GetSize1();...

Оператор break в цикле и нарушение пошаговости
День добрый, уважаемые форумчане! Находимся с дочерью на начальном уровне изучения Паскаля :)) Спасибо данному форуму , очень помогает! ...

13
68 / 51 / 27
Регистрация: 27.04.2015
Сообщений: 203
02.02.2018, 15:00
Он-то как раз срабатывает. А всё что дальше - выполняется в первом цикле.
Потому что на табуляцию компилятору плевать, а вот на составные операторы нет.

Кликните здесь для просмотра всего текста
PS Фигурные скобки расставь как задумывал для начала {}
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
02.02.2018, 15:01
При этом j чему равно?
UPD
Туплю )))) Отвечать не нужно, на условие второго цикла посмотрел
0
-7 / 0 / 0
Регистрация: 27.11.2016
Сообщений: 74
02.02.2018, 15:05  [ТС]
j=2 я спецом cout j сделал, чтобы проверить
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
02.02.2018, 15:07
Твой код правильно выглядит так:
C++
1
2
3
4
5
6
7
for (i=2;i<10;i++)
{ 
    for(j=2;j<=(i/j);j++)  if(!(i%j)) break;
 
    cout<<"i="<<i<<"j="<<j<<"\n"<<' '<<"i делить на j остаток="<<(i%j)<<"\n";
    if (j>(i/j)) cout<<i<<" - Это число простое\n";
}
0
-7 / 0 / 0
Регистрация: 27.11.2016
Сообщений: 74
02.02.2018, 15:08  [ТС]
Если break срабатывает, то почему 4 не "простое число" ? ведь j(3)>i(4)/j(3)
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
02.02.2018, 15:10
BlueScreen666, У тебя второй цикл выполняется только для строчки:
C++
1
if(!(i%j)) break;
И всё А Break срабатывает для второго цикла а не первого
0
-7 / 0 / 0
Регистрация: 27.11.2016
Сообщений: 74
02.02.2018, 15:10  [ТС]
А что изменилось?
0
68 / 51 / 27
Регистрация: 27.04.2015
Сообщений: 203
02.02.2018, 15:13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using std::cout;
 
int main()
{
    for (int i = 2; i<10; i++)
    {
        int j;
        for (j = 2; j <= (i / j); j++)
        {//читай мой первый ответ внимательно
            if (!(i%j)) break;
            cout << "i=" << i << " j=" << j << "\n" << ' ' << "i делить на j остаток=" << (i%j) << "\n";
        }//фигурные скобки!
        if (j >(i / j)) cout << i << " - Это число простое\n";
 
    }
    return 0;
}
Пожалуйста.
0
-7 / 0 / 0
Регистрация: 27.11.2016
Сообщений: 74
02.02.2018, 15:19  [ТС]
Тогда вопрос: Вот стало i=4 . Проверила 12 строка (твоего кода) - сработала break. Дальше проверяется 15 строчка? и чему равны переменные? i,j ?
0
68 / 51 / 27
Регистрация: 27.04.2015
Сообщений: 203
02.02.2018, 15:24
Это твой код, я только добавил фигурные скобки и проверил, что мне действительно вывелись простые числа.

i будет равно 4
j будет равно 2
Научись пошагово тестировать программу, если плохо понимаешь синтаксис и его работу. Быстрей освоишься.
0
-7 / 0 / 0
Регистрация: 27.11.2016
Сообщений: 74
02.02.2018, 15:46  [ТС]
Все ясно, т.е. после break j=3(если break сработал) удаляется и из памяти берется J=2 (может глупо написал, но для себя понятно стало)

Добавлено через 6 минут
в паскале можно было пошагово программу выполнять,а тут щас нет возможности в оффлайн компиляторе работать и делаю через сайт, а там не разобрался как Так бы и на форум не пришел
0
68 / 51 / 27
Регистрация: 27.04.2015
Сообщений: 203
02.02.2018, 15:50
Лучший ответ Сообщение было отмечено BlueScreen666 как решение

Решение

Нет. Читайте про цикл for.
в 10ой строке, когда i==4, сначала выполниться:
j = 2
затем
j <= (i / j)
программа зайдет в цикл, выполнит проверку и прервет цикл.
j++ выполнено не будет
поэтому значения перед выполнением 15ой строчки будут
Цитата Сообщение от YarRainbow Посмотреть сообщение
i будет равно 4
j будет равно 2
0
-7 / 0 / 0
Регистрация: 27.11.2016
Сообщений: 74
02.02.2018, 15:58  [ТС]
аааа j++ я сразу плюсовал, поэтому тупил) По-моему понял, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.02.2018, 15:58
Помогаю со студенческими работами здесь

Правильное использование оператора Break в цикле
В общем есть у меня вот такой цикл, связанный с двумерным массивом. for (int i = 0; i &lt; Y; i++) { ...

Как сделать два условия в цикле без break
Нужно, чтобы как только sum стало 10 он выходил из цикла, но чтобы был шаг i, который меняется на единицу import random b =...

Цифра после break во вложенном цикле что означает?
Если у меня двумерно вложенный цикл то break 2 это обращение к внешнему циклу? если он будет трехмерным то нужно будет писать break 3 ? ...

В цикле разбора результата поставить условие и break при $num > 100 ?
Здравствуйте! Подскажите пожалуйста, как в цикле разбора результата поставить условие и break при $num &gt; 100 ? ...

Почему break нельзя использовать в if?
почему break нельзя использовать в if вот код if(f.eof()==1) { break; } про break MVS говорит что ОПЕРАТОР break...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru