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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.93
Fafle
34 / 34 / 4
Регистрация: 19.03.2010
Сообщений: 136
#1

Циклы в Си++, хотелось бы уточнить некоторые моменты - C++

22.03.2010, 00:53. Просмотров 3767. Ответов 10
Метки нет (Все метки)

Начинаю изучать Си, учусь по самоучителю при отсутствии знакомых и друзей программистов, пройдя главу про циклы так и не смог уяснить для себя в каких ситуациях и как правильно выбрать тот или иной вид цикла(for, while, do while).
Если кого то не затруднит прошу объяснить,по возможности с примерами, заранее благодарю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2010, 00:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Циклы в Си++, хотелось бы уточнить некоторые моменты (C++):

Добрый день, читал на хабре про АВЛ-деревья и хотелось бы кое-что уточнить - C++
Добрый день, читал на хабре про АВЛ-деревья и возник один вопрос вот ссылка на статью http://habrahabr.ru/post/150732/ Не могли бы Вы...

Объясните некоторые моменты из c++ - C++
Добрый день. Я хочу начать познавать сие творение, т.к. 1 семестр на первом курсе 3 года назад познанием и обучением назвать сложно. А в...

Объясните некоторые моменты в задаче - C++
Здравствуйте, вот мне накинули задачу Пользователь вводит число А не более 4-х разрядов. Вывести всевозможные комбинации из цифр этого...

Шейкер Сортировка! Непонятны некоторые моменты - C++
Столкнулся с задачей реализации Шейкер сортировки .Почитал теорию и понял , что она очень похожа на пузырьковую. Но столкнулся с примером...

Quick sort, не понятно некоторые моменты. - C++
здравствуйте нужно реализовать quicksort Есть код с учебника по которому мы учимся, и вот не понятно некоторые моменты кода ...

Задача по наследованию в C++, нужно реализовать некоторые моменты - C++
Написать программу с объектами и реализовать наследование. Ситуация: Klimat (базовый объект), Derevo (выводной объект). a. Klimat:...

10
M128K145
Эксперт С++
8299 / 3519 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
22.03.2010, 01:20 #2
for - в том случае, если известно количество итераций цикла.
C++
1
2
3
int mas[10];
for(int i = 0; i < 10; ++i)
    mas[i] = i;
while - если не известно количество итераций
C++
1
2
3
4
char str[] = "some string"
int i = 0;
while(str[i])
    ++i;
do while - если не известно количество итераций и необходимо до проверки условий выполнить какое-то действие
C++
1
2
3
4
5
6
7
int mas[10];
int i = 0;
do
{
    mas[i] = i;
    ++i;
}while(i < 10);
1
Fafle
34 / 34 / 4
Регистрация: 19.03.2010
Сообщений: 136
22.03.2010, 01:25  [ТС] #3
парочку задачек элементарных не подскажешь? Чтоб руку набить, если не сложно.
Предельно понятно спс.
0
M128K145
Эксперт С++
8299 / 3519 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
22.03.2010, 01:35 #4
Fafle, в этой ветке любая задача на массивы или расчет функции, берите и решайте. И себе опыт и другим помощь
0
Day
1159 / 964 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
22.03.2010, 10:34 #5
Небольшое, но, возможно, полезное пояснение.
Цикл while может и не выполниться не разу, если его условие сразу неверно.
(сначала "меряем" потом "режем")
цикл do - while обязательно выполнится хотя бы один раз
(сначала "режем", потом "меряем")
Тоже самое, но чуток другими словами.
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
22.03.2010, 10:41 #6
Цитата Сообщение от M128K145 Посмотреть сообщение
while - если не известно количество итераций
Не совсем так видимо, во всех трех случаях я знаю что итераций будет 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
    i = 1;
    while(i < 10)
        cout << i++ << ' ';
    cout << endl;
 
    i = 0;
    while(++i, i < 10)
        cout << i << ' ';
    cout << endl;
    
    for(i = 1; i < 10; ++i)
        cout << i << ' ';
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
22.03.2010, 10:59 #7
Можно всегда использовать цикл for.
Например цикл while( <EXPR> ) { <BODY> } заменяется на
C
1
2
3
for ( ; <EXPR>; ) {
    <BODY>
}
Цикл do { <BODY> } while ( <EXPR> ); заменяется на
C
1
2
3
4
for ( ; ; ) {
    <BODY>;
    if ( !<EXPR> ) { break; }
}
Добавлено через 1 минуту
Поэтому вопрос какой вариант цикла выбирать немного бессмысленный.
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
22.03.2010, 11:04 #8
Цитата Сообщение от odip Посмотреть сообщение
Поэтому вопрос какой вариант цикла выбирать немного бессмысленный.
Тут наверное все больше зависит от конкретного момента, где что эффективнее,
Мне почему-то кажется, что вот в таком моменте цикл while эффективнее ну или как минимум симпатичнее
C++
1
2
3
4
5
6
7
8
9
10
11
void fwhile(int x)
{
    while(x--)
        // some code
}
 
void ffor(int x)
{
    for(int i = 0; i < x; ++i)
        // some code
}
И наоборот
C++
1
2
3
4
5
6
7
8
9
    for(int i = 0; i < 10; i += 2)
        // some code
        
    int i = 0;
    while(i < 10)
    {
        // some code
        i += 2;
    }
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
23.03.2010, 10:38 #9
Мне почему-то кажется, что вот в таком моменте цикл while эффективнее
Эффективность кода оценивается не на глазок, а тестами, изучением какой код в ASM-е генерится и проверкой что быстрее работает.
ну или как минимум симпатичнее
Если кажется что симпатичнее - используй такой вариант.
0
Day
1159 / 964 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
23.03.2010, 10:58 #10
odip,
Можно всегда использовать цикл for.
Можно вообще обойтись без циклов, используя только if и goto
На ASM это и в самом деле будет так.
Дело-то в выразительности и понятности конструкции...
И тут слово "симпатичнее" вполне уместно.
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,342
Завершенные тесты: 1
23.03.2010, 12:28 #11
сам фор использую для счетчика,или заполнения массивов...ду-вайл хорош тем что полюбому один раз тело работает.Даже если условие не истенно
0
23.03.2010, 12:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2010, 12:28
Привет! Вот еще темы с ответами:

Задача по наследованию. Не понимаю некоторые моменты в формулировке задания - C++
Здравствуйте! Вот есть задание: Описать базовый класс СТРОКА Обязательные поля класса: # Указатель на char - хранит адрес...

Тема для меня новая. Несколько моментов, которые хотелось бы уточнить - Контроллеры PLC
Осваиваю контроллеры ПЛК Mitsubishi. Конкретно, MELSEC iQ-F Series iQ Platform-compatible PLC Тема для меня новая. Много белых пятен. ...

Проясните некоторые моменты - Turbo Pascal
Читал книгу, но не все уяснил... 1. В каких конкретно случаях нужно писать writeln и readln вместо write и read? 2. В каких...

Не могу понять некоторые моменты - Java SE
Пожалуйста, объясните на пальцах вот эти вещи: В чем разница интерфейсов Comparator и Comparable? Почему в джаве нельзя использовать...


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

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

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