Mike |
Отправлено: 04.10.2005, 20:42 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 4
|
Здравствуйте!
С++ начал изучать вот только что в институте, и там дали такое задание: y=y*y (y в степени 2), пока y<1024. и нужно для этого написать 3 цикла: while, do while и for. У меня не получается.
Заранее спасибо
|
|
Doga |
Отправлено: 04.10.2005, 21:29 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
Тут всё ясно.
У Вас просто не хватает уровня магии для использования этих заклинаний. Вообще то, эти заклинания довольно тривиальны, но в руках опытного мага они всегда будут сильным оружием. А маг, способный применить вложенные заклинания, можно сказать, почти Бог! WHILE, DO WHILE, FOR — это только начало! Помимо этих, продвинутым волшебникам известно ещё много других заклинаний, не мение сильных и страшных...
Что бы поднять свой магический уровень, Вам следует прочитать хотя бы одну из волшебных книг (для начинающих магов). В нашем Городе Волшебников их имеется достаточное количество. Нужно только хоршо поискать. Уверяю Вас, награда за Ваши труды стоит того.
|
|
Mike |
Отправлено: 04.10.2005, 22:10 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 4
|
Doga
Читаю Лафоре, но мне пока не понять!
Вот код который я сделал. Гадеюсь вы поймете и не станетесь издеваться над ошибками!
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
|
так вы можете сказать где у меня ошибка?
вам трудно что ли? знаю что надо самому разбираться, но вот не получается!
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
Спасибо! пойду сейчас попробую!
|
|
Konstantine |
Отправлено: 06.10.2005, 08:07 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
QUOTE (Mike @ 04/10/2005, 22:10) | while (y < 1024);
|
а это грубейшая ошибка — зависание проги
пустой цикл без выхода
|
|
AVC |
Отправлено: 06.10.2005, 08:55 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE (Konstantine @ 06/10/2005, 07:07) | QUOTE (Mike @ 04/10/2005, 22:10) | while (y < 1024);
|
а это грубейшая ошибка — зависание проги
пустой цикл без выхода |
Нет, это синтаксис do while. (Правда если добавить Mike подразумевающихся фигурных скобок). |
|
Konstantine |
Отправлено: 06.10.2005, 14:05 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
а ну тогда — да...
|
|