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

Объяснить работу кода

21.02.2018, 20:55. Показов 1887. Ответов 48
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int main()
{
int i, j;
for (i=2; i<6; i++)
{
for (j=2; j<=(i/j); j++)
if (!(i%j)) break;
if (j > (i/j)) cout << i << " - simple number\n";
}
return 0;
}
Мужики, объясните мне, пожалуйста, как понимать эту прогу? Всю голову сломал. не понимаю условное выражение для j. Почему оно такое? ну и if'ы тоже не догоняю. Вроде не дурак. Просто крыша уже едет.

Добавлено через 1 минуту
и еще. что случится если заменить cout << i на cout << j
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.02.2018, 20:55
Ответы с готовыми решениями:

Объяснить работу кода
Объясните что происходит в данном коде #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include&lt;cmath&gt; int _tmain(int argc, _TCHAR*...

Объяснить работу кода
Подскажите пожалуйста как работает этот код при F(9). На экран выводит 131159, но как это происходит? void F(int n) { if (n &gt;...

Просьба объяснить работу std::thread в двух коротких примерах кода
Доброго времени суток! Я использую std::thread чтобы поднять два разных потока. В первом случае всё работает хорошо. Во втором нет. ...

48
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
21.02.2018, 20:58
Руслан92, 1. Используйте BB-коды
2. Она ищет простые числа
1
45 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 114
21.02.2018, 21:00  [ТС]
Да я понимаю что он делает. не понимаю КАК.
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
21.02.2018, 21:06
for (i=2; i<6; i++) Перебирает числа от 2 до 5
for (j=2; j<=(i/j); j++) Ищет к ним делители
if (!(i%j)) проверка на деление, если деление удачно, то останавливаем

Добавлено через 1 минуту
P.S. Такие простые примеры, ну напишите на листоке с цифрами и прорешайте, сразу станет наглядно и понятно
1
45 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 114
21.02.2018, 21:09  [ТС]
Первая итерация первого цикла выдает число 2. оно уходит во внутренний цикл и проходит все итерации. после этого идет на проверку на четность (нафига она нужна эта проверка?), затем идет на еще какой-то if. Затем вторая итерация первого цикла делает все то же самое и так до 5, так?

Добавлено через 1 минуту
Да я пробовал блин на листке сделать. если бы понимать ход программы я бы и на листке прошел. просто только вот начал заниматься с++. Образование высшее, правда больше по физике. Логика мне тоже ясна. Не ясно КАК работает код
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
21.02.2018, 21:12
Руслан92, Во второй цикл входит только при условии (i/j)
Я же говорю, проще вам, если хотите понять код, сесть и самому на листочке все решить
P.S. С четность я ошибся, текст исправил

Добавлено через 1 минуту
Цитата Сообщение от Руслан92 Посмотреть сообщение
Не ясно КАК работает код
А при чем здесь код? Это математика!
1
45 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 114
21.02.2018, 21:13  [ТС]
что значит конкретно запись j<=(i/j) как условное выражение. с цифрами напишите. Просто я пробовал подставить i=4, пройти все итерации и из программы получается что последний if (кстати что он значит?) выполняется и при i=4, но 4 - не простое число. Значит я чего то не понимаю.
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
21.02.2018, 21:15
У вас все формулы перед глазами, а циклы работают так:
Инициализация; условие; инкремент
Сначала j = 2
потом проверка условия, если истина то входим в тело цикла, если нет то выходим
после тела цикла инкремент
далее опять проверка условия и т.д.
1
45 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 114
21.02.2018, 21:16  [ТС]
i = 2 наверное

Добавлено через 50 секунд
а при 4 проверка дает ЛОЖЬ?
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
21.02.2018, 21:21
допустим, i = 4, j = 2
значит условие 2 <= 4/2 Истина? Да
входим в тело
далее проверяем if (!(i%j)) break; 4 / 2 дает ноль в остатке, переворачиваем ! и получаем истину, значит выполняется выход из цикла break; и сообщение не выводится
1
45 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 114
21.02.2018, 21:40  [ТС]
ну допустим с i = 3 то условие цикла уже не выполняется. подставим j=2. 2<=3/2 - ЛОЖЬ. дальше 2<=3/3 - ЛОЖЬ. как он тогда дальше 3 пропускает?

Добавлено через 16 минут
Ну же, Avaddon74 ответь. меня эта прога с ума сведет
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
21.02.2018, 21:44
Тело цикла состоит только из if (!(i%j)) break;
Т.е. эту программу нужно рассматривать как:
C++
1
2
for (j=2; j<=(i/j); j++) if (!(i%j)) break;
if (j > (i/j)) cout << i << " - simple number\n";
или так
C++
1
2
3
4
for (j=2; j<=(i/j); j++) {
   if (!(i%j)) break;
}
if (j > (i/j)) cout << i << " - simple number\n";
if (j > (i/j)) cout << i << " - simple number\n"; не входит в тело цикла
1
45 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 114
21.02.2018, 21:45  [ТС]
хорошо. понял.
ну допустим с i = 3 то условие цикла уже не выполняется. подставим j=2. 2<=3/2 - ЛОЖЬ. дальше 2<=3/3 - ЛОЖЬ. как он тогда дальше 3 пропускает? - а с этим что?
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
21.02.2018, 21:47
Цитата Сообщение от Руслан92 Посмотреть сообщение
ну допустим с i = 3
тогда условие if (j > (i/j)) будет читаться так 2 > 3/2, а 3/2 даст 1
1
45 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 114
21.02.2018, 21:50  [ТС]
стоп. если условное выражение не выполняется оно же не идет дальше в тело.
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
21.02.2018, 21:51
Условие только для второго цикла а if (j > (i/j)) принадлежит первому циклу, где перебираем i
1
45 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 114
21.02.2018, 21:52  [ТС]
получается что условное выражение не выполнено. Как себя ведет в этом случае for?
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
21.02.2018, 21:54
В тело цикла не идет, а значит код if (!(i%j)) break; не будет выполнен, но код if (j > (i/j)) cout << i << " - simple number\n"; будет, где он нам и сообщит, что 3 простое число
1
45 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 114
21.02.2018, 21:57  [ТС]
как последний if принадлежит к первому циклу если j, входящий в выражение последнего if'а получается из второго цикла?

Добавлено через 2 минуты
J то ко второму циклу относится и во втором перебирается...блин. что за прога. до этого вообще все понятно было. и посложнее встречал. это блин наваждение какое-то
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
21.02.2018, 21:57
int i, j; Инициализация вообще вне цикла идет, точнее объявление
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2018, 21:57
Помогаю со студенческими работами здесь

Замена двойных пробелов из входного файла на одиночный пробел и запись в выходной файл (объяснить работу кода)
Здравствуйте, нашла код программы, которая заменяет в файле Input.txt двойные пробелы в исходном файле на одиночные пробелы и выводит это...

Объяснить работу
Что здесь значит if(i&gt;5... И что делает конкретно i и что означает #define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; ...

Объяснить работу функции
Может кто объяснить работу функции void zagalovok() { Node *t; head=new Node(); t=head; int V; ...

Объяснить работу конструктора
простите за тупое название темы Добрый вечер, возникла проблема в изучении деструкторов целом проблема не самое в деструкторов, а в...

Объяснить работу Memcpy
Доброго времени суток! Можете пояснить работу memcpy под C++? Что-то у меня определённо работает не так. Например такой код: ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru