C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Помогите с циклами
Mike
  Отправлено: 04.10.2005, 20:42


Ученик-кочегар

Группа: Участник
Сообщений: 4



Здравствуйте! biggrin.gif
С++ начал изучать вот только что в институте, и там дали такое задание: y=y*y (y в степени 2), пока y<1024. и нужно для этого написать 3 цикла: while, do while и for. У меня не получается. sad.gif
Заранее спасибо biggrin.gif
Doga
Отправлено: 04.10.2005, 21:29


Мастер участка

Группа: Участник
Сообщений: 575



Тут всё ясно.

У Вас просто не хватает уровня магии для использования этих заклинаний. Вообще то, эти заклинания довольно тривиальны, но в руках опытного мага они всегда будут сильным оружием. А маг, способный применить вложенные заклинания, можно сказать, почти Бог! WHILE, DO WHILE, FOR — это только начало! Помимо этих, продвинутым волшебникам известно ещё много других заклинаний, не мение сильных и страшных...

Что бы поднять свой магический уровень, Вам следует прочитать хотя бы одну из волшебных книг (для начинающих магов). В нашем Городе Волшебников их имеется достаточное количество. Нужно только хоршо поискать. Уверяю Вас, награда за Ваши труды стоит того.

smile.gif
Mike
Отправлено: 04.10.2005, 22:10


Ученик-кочегар

Группа: Участник
Сообщений: 4



Doga
Читаю Лафоре, но мне пока не понять!
Вот код который я сделал. Гадеюсь вы поймете и не станетесь издеваться над ошибками! smile.gif

double y, yr;
cout << "Enter y\t -> ";
cin>> y;


yr = 0.0;
while (y < 1024)
yr = y*y;
cout << "\nwhile\t\tResult = " << yr << endl ;

yr = 0.0;
do
yr = y*y;
y += y;
while (y < 1024);
cout << "\ndo while\tResult = " << yr << endl ;


for (yr = 0.0; y<1024; y++)
yr = y*y;
cout << "\nfor\t\tResult = " << yr << endl;
Gedeon
Отправлено: 05.10.2005, 11:28


Ветеран

Группа: Модератор
Сообщений: 1742



а что не понятного, советую взять Кернигана и Ричи язык С и почитать там про циклы, все просто и понятно, про ввод вывод если и не понятно, надеюсь пока, вроде как интуитивно догадаться что к чему можно.

Успехов.
Konstantine
Отправлено: 05.10.2005, 13:43


Мастер участка

Группа: Модератор
Сообщений: 545



да ладна вам посылать на книги...

значь так, вкратце:
цикл while:
CODE
while(условие)
{ ... код цикла
}

всё просто — цикл выполняется пока условие истина

цикл do-while:
CODE
do
{ ... код цикла
}while(условие)

так-же, но с отличием — промерка ПОСЛЕ выполнения 1 прохода по телу цикла (т.е. в любом случае 1 проход будет)

и наконец for:
for(нач. оператор; условие_на_повтор; оператор_след_прохода)
{ ... код цикла
}
где:
нач. оператор — оператор, выполняющийся перед выполнением цикла (самый первый, выполняется лишь 1 раз)
условие_на_повтор — если ложь, то конец цикла
оператор_след_прохода — выполняется ПОСЛЕ прохода ПЕРЕД проверкой условия...
простейший пример:
CODE
for(int i=0;i<10;i++)
{... код цикла
}

код повториться ровно 10 раз...

для всех циклов внутри можно разместить команды досрочного прерывания цикла:
continue — начать следущий проход
break — выйти из цикла
Gedeon
Отправлено: 05.10.2005, 14:26


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (Konstantine @ 05/10/2005, 13:43)
да ладна вам посылать на книги...

Не, надо посылать и читать надо, а иначе без понимания этих элементарных вещей дальше вообще ниче не получится.
Konstantine
Отправлено: 05.10.2005, 15:07


Мастер участка

Группа: Модератор
Сообщений: 545



просто я по своей практике — не книгами разбирался, а лишь практикой и Хелпами...
Mike
Отправлено: 05.10.2005, 18:40


Ученик-кочегар

Группа: Участник
Сообщений: 4



так вы можете сказать где у меня ошибка?
вам трудно что ли? знаю что надо самому разбираться, но вот не получается! sad.gif

Konstantine
Конечно спасибо, но это я уже знаю. Но вот только составить циклы толком немогу!
Gedeon
Отправлено: 05.10.2005, 19:20


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (Mike @ 05/10/2005, 18:40)
Конечно спасибо, но это я уже знаю. Но вот только составить циклы толком немогу!

Потому и не могу, что не только не знаю, а внимательно почитать то, что написал Konstantine поленился, фигурные скобки где? и вообще найди 10 отличий. И еще уточни задание, как должен расти у в итерациях у+=у или у++ (но вроде тогда дабл бессмысленно). Вот для у+=у
CODE

double starty, y, yr;
   cout << "Enter y\t -> ";
   cin >> starty; //надо начальное значение помнить
   y = starty;    // присваиваем у начальное значение

   //yr = 0.0;   // Это ни к чему и далее тоже
   while (y < 1024)
   {
       yr = y*y;
       cout << "\nwhile\t\tResult = " << yr << endl;
       y+=y;
   }

   y = starty;   // присваиваем у начальное значение
   //yr = 0.0;
   do
   {
       yr = y*y;
       cout << "\ndo while\tResult = " << yr << endl;
       y+=y;
   }
   while (y < 1024);


   y = starty;  // присваиваем у начальное значение
   for (/*yr = 0.0*/; y<1024; y+=y)
   {
       yr = y*y;
       cout << "\nfor\t\tResult = " << yr << endl;
   }

   cout << "Press Ctrl+C to quit application";
   cin >> y;
return 0;

И еще больше я на такие вопросы тебе отвечать не буду пока внимательно читать не начнешь.
Mike
Отправлено: 05.10.2005, 22:25


Ученик-кочегар

Группа: Участник
Сообщений: 4



Gedeon
Спасибо! пойду сейчас попробую! biggrin.gif
Konstantine
Отправлено: 06.10.2005, 08:07


Мастер участка

Группа: Модератор
Сообщений: 545



QUOTE (Mike @ 04/10/2005, 22:10)
while (y < 1024);

а это грубейшая ошибка — зависание проги wink.gif
пустой цикл без выхода
AVC
Отправлено: 06.10.2005, 08:55


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE (Konstantine @ 06/10/2005, 07:07)
QUOTE (Mike @ 04/10/2005, 22:10)
while (y < 1024);

а это грубейшая ошибка — зависание проги wink.gif
пустой цикл без выхода

smile.gif Нет, это синтаксис do while. (Правда если добавить Mike подразумевающихся фигурных скобок).
Konstantine
Отправлено: 06.10.2005, 14:05


Мастер участка

Группа: Модератор
Сообщений: 545



а ну тогда — да... smile.gif

Вернуться в Вопросы программирования в C++Builder