Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Death
4 / 4 / 1
Регистрация: 18.10.2009
Сообщений: 44
#1

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

18.10.2009, 15:26. Просмотров 507. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2009, 15:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объясните код программы (C++):

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

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

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

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

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

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

2
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
18.10.2009, 16:20 #2
Всё ясно
Значит. Есть цикл. Он будет выполняться до тех пор, пока верно это условие
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
Death
4 / 4 / 1
Регистрация: 18.10.2009
Сообщений: 44
18.10.2009, 19:21  [ТС] #3
Спасибо тебе большое kravam
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2009, 19:21
Привет! Вот еще темы с ответами:

Объясните код программы работы с двумерными массивами - C++
#include &lt;time.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;iomanip&gt; using namespace std; const int...

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

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

Объясните код программы для работы с текстовыми файлами - C++
Вот, собственно говоря, сам код: #include&gt; &quot;stdafx.h&quot; #include &lt;stdio.h&gt; void main(int argc,char *argv) { FILE *in; int ch; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.