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

Объясните код программы

18.10.2009, 15:26. Показов 1043. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пожалуйста объясните программу, если не трудно после каждой строчки напишите кометариий
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream.h>
int main () {
    int num;
    cout << "\nVviditi chislo :"; cin >> num;
    int half = num / 2;
    int div = 2;
    while (div <= half) {
        if (!(num % div)) cout << div << "\n";
        div++;
    }
    return 0;
}
Интересует этот кусочек программы
C++
1
2
3
4
 while (div <= half) {
        if (!(num % div)) cout << div << "\n";
        div++;
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2009, 15:26
Ответы с готовыми решениями:

Объясните код программы
Объясните пожалуйста программу!!! Добавлено через 44 секунды #include &lt;iostream&gt; #include &lt;math.h&gt; #include...

Объясните код программы
Помогите,что здесь за что отвечает и выполняется. const int N = 20; main() { int i, x, j, A, B, E, c; printf(&quot;\n...

Объясните код программы
Вот рабочий код) напротив каждой строки через 2 слеша обьясните что происходит в программе, желательно поподробнее) спасибо) #include...

2
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
18.10.2009, 16:20
Всё ясно
Значит. Есть цикл. Он будет выполняться до тех пор, пока верно это условие
C++
1
div <= half
Программа подошла к этому условию и проверяет, верно ли оно
Допустим, half== 6 (То есть ты ввёл число 12, программа вычислила half как 12/2)

Значит, программа проверяет, верно ли, что div <= half. То есть верно ли, что
2<= 6

Да, верно. Значит, выполняется цикл, (все операторы, которые в фигурных скобках)
Потом то есть идёт проверка условия
C++
1
!(num % div)
Условие проверяется так: сперва вычисляется num % div
Понятно, что если div== 2, то остаток будет либо 0 либо 1 в зависимости от того, чётное
или нечётное число num (num % div есть нахождения остатка от деления num на dev)

У нас num== 12, dev== 2. Остаток будет ноль.
То есть вместо
C++
1
!(num % div)
Можно смело писать !0 и вычислять значение ЭТОГО выражения.
Вычисляем (программа вычисляет)
Тут ты запомни, что !0 значит "не ноль"
А не ноль значит истино
Значит, условие
C++
1
!(num % div)
истино. А это, в свою очередь, значит, что
будет выполняться блок операторов соответтвующий (А если бы было ложно, то он не
выполнялся)

Ищем этот блок операторов. Он находится сразу за этим условием и либо заключён в
фигурные скобки, либо нет
У тебя не заключён. (после !(num % div) я фигурных скобок не наблюдаю)
А это значит, что вычислится всего одно выражение, котрое стоит сразу за этим условием
То есть в твоём варианте напишется
C++
1
cout << div << "\n";
И всё на этом.

А вот следующее выражение
C++
1
div++;
выполнится независимо от того, ложно или истино условие !(num % div)
То есть если фигурных скобок нет, то оператор, следующий сразу за условием, может
либо выполнятся, либо нет. А следующие операторы выполняются БЕЗУСЛОВНО.

Итак, ты инкриминировал dev. На этом одна ИТЕРАЦИЯ (или проход цикла)цикл закончилась.
После этого СНОВА проверяем условие, которое стоит после while
Ну и так далее.

Как ты уже понял, прога должна быть написана таким образом, чтобы
условие
C++
1
div <= half
не всегда было истиным., иначе цикл никогда не
закончится и прога будет продолжаться вечно. У тебя это условие соблюдено- раз от разу
меняется dev и, следовательно, значение
C++
1
div <= half
...Теперь лирика.
Если тебя удивляет, почему ты ни разу не увидел надписи в консоли, так, по-моему,
кто-то где-то уже об этом спрашивал.

Наконец, почему ещё может возникнуть непонимание
Смотри. Постарайся на первых порах ВСЕГДА заключать блоки операторов в фигурные скобки.
Ну, и с красотой как-нибудь определись (для себя то есть)
Начинающему надлежит писать так, пока не придёт полное понимание того, что ты делаешь

Тут операторы в разных строчках должны быть
C++
1
2
cout << "\nVviditi chislo :";
cin >> num;
Вот так пиши фигурные скобки
C++
1
2
3
4
if (!(num % div)) {
 cout << div << "\n";
}      
div++;
0
4 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 44
18.10.2009, 19:21  [ТС]
Спасибо тебе большое kravam
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.10.2009, 19:21
Помогаю со студенческими работами здесь

Объясните код программы
#include&lt;stdio.h&gt; //библиотека объявления функций и типов, //используемых для различных операций стандартного ввода и вывода ...

Объясните код программы
void __fastcall TForm1::Button2Click(TObject *Sender) { AnsiString s=Memo1-&gt;Text; int s_leng=s.Length(); AnsiString num=&quot;&quot;; ...

Упорядочивание массива c++. Объясните код программы
Дан целочисленный одномерный массив из n элементов (1&lt;=n&lt;=100). Задание: Не нарушая порядка следования, расположить в начале массива все...

Передача объектов функциям(объясните код программы)
Вот программа: #include &lt;iostream&gt; using namespace std; class samp { int i; public: samp(int n){i=n;} void set_i(int...

Объясните пожалуйста код и ход работы программы на С++
Вот код фрагмента программы: int i; int l=strlen(str); int k=strlen(fsubstr); bool fl=true; for...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru