Другие языки программирования и технологии

Азы C++: "while" заменяем на "for"

Не могу разобраться, как работает оператор for. Написал перебор чисел от x1 до x2 с помощью while, но теперь хочу заменить while на for. Не могу разобраться, как это сделать, не меняя сути программы. Буду благодарен за пояснения. Вот код:
#include
int main()
{
int x1, x2;
std::cout << "Enter the limits:" << std::endl;
std::cin >> x1 >> x2;
if (x1 <= x2)
{
while (x1 <= x2)
{
std::cout <<" " << x1 << std::endl;
++x1;
}
}
else
{
std::cout << "Error: The first one must be less than the second one or equal. Also they both must be numbers and integral." << std::endl;
std::cout << "Finishing programm due to mistake (your most likely)." << std::endl;
}
system("pause");
return 0;
}
for ( ; x1 <= x2; ++x1)
{
std::cout <<" " << x1 << std::endl;
}
Aliшеr Ll
Aliшеr Ll
11 297
Лучший ответ
while (x1 <= x2) эквивалентен for(;x1 <= x2;)
while - это упрощенный for. В for внутрь заголовка цикла может быть вставлено то, что в while обычно делается отдельными операторами перед циклом while и внутри него.
Не могу разобраться- это действительно серьезно. Почитайте книжку для новичков, там оператор for прекрасно описан с диаграммами. Отрывочные знания никому не нужны.
Грубо
----
уcтановить_значения;
while(условие_на_неноль) {
действие;
преобразовать (значения_для условий);
}
----
Примерно совпадает с

for(уcтановить_значения : условие_на_неноль_делать_ли: после_деланья_начинки_сделать_что_угодно_обычно_преобразовать_значения_для условий) {действие; }

(затравка : пока не ноль рассматриваемое : после деланья перед новым заходом сделать) {что делать}
Юрий Уламасов
Юрий Уламасов
27 060
"Не могу разобраться, как работает оператор for" - это серьезно.
Конструкция for состоит из трех частей
for(int i = 0; i < 10; i++)
1 - int i = 0 - начало цикла
2 - i < 10 - цикл продолжается, пока переменная i меньше 10
3 - i++ -инкрементация переменной i
Что тут непонятного?
Дмитрий Доля
Дмитрий Доля
20 186
Уркунов Владислав Да, неправильно выразился. Суть понимаю, не мог (благодаря менторам выше, теперь могу) заменить этим оператором while в данной проге. Не знал куда вставить вывод перебора.
#include
int main()
{
int x1, x2, i;
std::cout << "Enter the limits:" << std::endl;
std::cin >> x1 >> x2;
if (x1 <= x2)
{
for (i=x1; x1<=x2; i++)
{
std::cout <<" " << x1 << std::endl;
}
}
else
{
std::cout << "Error: The first one must be less than the second one or equal. Also they both must be numbers and integral." << std::endl;
std::cout << "Finishing programm due to mistake (your most likely)." << std::endl;
}
system("pause");
return 0;
}
BG
Bobur Gulamkodirv
978
Серега Дон не
std::cout <<" " << x1 << std::endl;
а
std::cout <<" " << i << std::endl;
и все ок
Виктор Чарный у вас бесконечный цикл получился
Радик Сайфутдинов Тогда уж x1+=i; в цикле нужно добавить)