Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Строка произвольной длины... http://www.cyberforum.ru/cpp-beginners/thread57297.html
Доброго дня, товарищи! Что-то я подзабыл как сделать на С++ так, чтобы можно было самому вводить строку произвольной длины в ходе программы. Такое вот char a или char a не подходит.Нужно, чтобы лишней памяти не выделялось. Вводить могу английские буквы, пробелы и знаки препинания.
C++ Классы для арифметических операций с большими числами (целые числа более 10 знаков) C++ ,Классы для арифметических операций с большими числами(целые числа более 10 знаков), и бывают ли стандартные классы поддерживающие операции с числами такой разрядности)) =-O P.S. Я в С++ пока чайник, пожалуйста объясните поподробнее http://www.cyberforum.ru/cpp-beginners/thread57288.html
Поясните новичку C++
Компилятор ругается на программу: #include <iostream> #include <string> #include <math> using namespace std; int main() {
C++ В целочисленной матрице определить элемент, который повторяется максимальное число раз
Задача. В целочисленной матрице А определить элемент, который повторяется максимальное число раз. Получить матрицу B умножением матрицы А на этот элемент. Я не знаю как распланировать алгоритм задачки, для начала....помогите, пожалуйста.
C++ программа в С http://www.cyberforum.ru/cpp-beginners/thread57276.html
Всем добрый вечер. собсна вот задача "Распечатать в порядке убывания нечетные числа из диапазона , кратные 3 и не кратные 5 одновременно." Я примерно понимаю как ето должно выглядеть, но ни как не дойдет как надо точно написать. язык С
C++ Дана символьная строка, удалить из нее путем сдвига все цифры 1) Дана символьная строка, удалить из нее путем сдвига все цифры 2) Дан массив символьных строк, найти номер строки с максимальным числом лат. букв. Зарание спасибо. подробнее

Показать сообщение отдельно
kravam
быдлокодер
1690 / 877 / 44
Регистрация: 04.06.2008
Сообщений: 5,395
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++;
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru