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

Кто обяснит как правильно строить циклы ставлю спасибо! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить программу для нахождения наименьшего общего кратного трех натуральных чисел http://www.cyberforum.ru/cpp-beginners/thread26316.html
Решите плиз задачку через функцию Составить программу для нахождения наименьшего общего кратного трех натуральных чисел.
C++ Найти среднее арифметическое элементов массива расположенных между максимальным и минимальным элементами Дан вещественный массив А в котором не повторяются значения элементов. Найти среднее арифметическое элементов массива расположенных между максимальным и минимальным элементами массива А http://www.cyberforum.ru/cpp-beginners/thread26315.html
C++ Работа со строками C++
Решил посвятить этой проблеме отдельную тему. В попытке написать ответ к этой задаче на С++ запнулся на работе со строками. Собственно вопрос, как разбить строку на составляющие... input:...
Одномерный массив C++
Привет. Прошу прощения если повторяю чей-то вопрос... Помогите программу написать пожалуйста!!! Очень-преочень нужно!!! Вот задание: В одномерном массиве, состоящем из N вещественных элементов,...
C++ Задачка по С++ http://www.cyberforum.ru/cpp-beginners/thread26293.html
#include <iostream> using namespace std; int main() { double x,z,n; int y; cout<<"vvedite summu="; cin>>x; cout<<"vvedite % stavku="; cin>>z;
C++ Дан массив Z(15). Сформировать массив В следующим образом Дан массив Z(15). Сформировать массив В следующим образом. Если положительных элементов в массиве Z больше, чем отрицательных, то заменить в нем отрицательные элементы нулями. Иначе заменить... подробнее

Показать сообщение отдельно
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
18.03.2009, 04:44
цикл for

Код
    while (1 < 2)
        printf("yes\n");
Код
    for ( ; 1 < 2; )
        printf("yes\n");
так как он включает в себя заголовок всегда, все элементы заголовка подчёркиваются, даже если их нет; может не быть ни одного элемента заголовка цикла for, тогда пишут ( ; ; )

Код
    n = 5;    
    while (n--)
        ;
Код
    for (n = 5; n--; )
        ;
первый блок заголовка цикла for называется блоком инициализации, в него записываются не просто переменные какие-то там любые, а те переменные, которые управляют циклом, то есть, если у тебя есть переменные, которые можно туда вставить, но они не относятся к циклу (к управлению им), то лучше их туда не вставлять, а записать типа

Код
    a = 3;
    for (n = 5; n--; )
        ;
но если у тебя есть что-то, что всё таки относится к циклу, то можно

Код
    a = 3;
    for (printf("loop started\n") , n = 5; n--; )
        ;
внутри блока инициализации запятая совсем не такая, как у какой-нибудь функции при вызове, эта запятая - операция запятая, которая выполняется слева направо и возвращает тип и значение своего правого операнда

Код
    a = 3;
    for (printf("loop started\n") && (n = 5); n--; )
        ;
то есть здесь просто заменили операцию в блоке инициализации

второй блок, называется: блок условия

Код
    for (n = 5; n--; )
        ;
то есть если он истинен, выполнить тело один раз, там тоже набор операций канает, только результат блока проверяется на истинность

Код
    for ( ; printf(""); )
        ;
тело не выполнится ни разу, потому что функция printf возвращает количество выведенных символов или EOF если была ошибка в файле вывода (кстати EOF обычно равно -1, а это не 0, значит истина)

Код
    for ( ; printf("x"); )
        ;
здесь же наоборот, произойдёт зацикливание, так как printf каждый раз возвращает один, и тело снова и снова будет выполняться после проверки блока условия, так как в нём истина получается каждый раз после срабатывания функции

Код
    for (n = 5; n--; )
        ;
можно записать так

Код
    for (n = 5; n; )
        n--;
а можно записать вот так

Код
    for (n = 5; n; n--)
        ;
третий блок называется блок модификации, в него записываются операции для изменения переменной, относящейся к циклу (то есть так же как с первым блоком), если у тебя есть что-то, что ты можешь туда записать, но оно не относится к управлению циклом, то лучше этого не делать, а раз нужно, то можно оставить это в теле цикла

Код
    for (printf("loop started\n") , n = 5;
         n--;
         printf("loop continuing\n"))
        ;
то есть сделать не вот так, когда вывод работы цикла находится в блоке модификации, а вот так

Код
    for (printf("loop started\n") , n = 5; n--; )
         printf("loop continuing\n");
когда вывод работы цикла находится в теле

тело выполняется всегда, даже когда оно пустое, некоторые ставят его после цикла

Код
    for (n = 5; n--; );
когда кода много, его можно спутать с разделителем операторов, поэтому оно явно подчёркивается

Код
    for (n = 5; n--; )
        ;
потому что разделитель операторов не выполняется

Код
    for (n = 5; n--; )_________;
и тогда в коде вот этого места как бы не видно, хотя оно есть
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.