Форум программистов, компьютерный форум CyberForum.ru

Проблема циклами - C++

Восстановить пароль Регистрация
 
Developer
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 37
02.10.2011, 17:47     Проблема циклами #1
Приветствую форумчанин, помогите пожалуйста с задачкой. Нашел похожую на паскале, но кода не пойму, от куда берется значение.

Код, в котором не понятно от куда присвоили значение переменной b
Дано вещественное число ε (> 0). Последовательность вещественных
чисел Ak определяется следующим образом:
A1 = 2, AK = 2 + 1/AK–1, K = 2, 3, … .
Найти первый из номеров K, для которых выполняется условие
|AK – A K–1| < ε,
и вывести этот номер, а также числа AK–1 и AK.
к-1 и к индексы.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
uses crt;
var e,a,b,c:real;
    k:integer;
begin
clrscr;
write('e=');readln(e);
a:=2;b:=2.5;
k:=2;
while abs(b-a)>=e do
 begin
  a:=b;
  k:=k+1;
  b:=2+1/a;
 end;
writeln('An-1=',b:0:6,'  An=',a:0:6,'  t=',abs(b-a):0:6,'  k=',k);
readln
end.
Ниже, собственно мое условие.Буду благодаре за любую помощь, хоть за расшифровку кода, хоть в написании нового на с++
Миниатюры
Проблема  циклами  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2011, 17:47     Проблема циклами
Посмотрите здесь:

C++ 3 зaдaчи с циклами
задачи с циклами C++
C++ Работа с циклами
C++ Проблема с циклами для нахождения среднего бала.
C++ ошибка с циклами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Liraim
6 / 6 / 0
Регистрация: 28.01.2009
Сообщений: 15
02.10.2011, 18:17     Проблема циклами #2
Могу пояснить код, а ты напиши программу сам.
Delphi
1
2
3
a:=2;
b:=2.5;
k:=2;
Задание начального значения последовательности, и первого шага вычисления.
То есть так будто бы у нас уже выполнилась 1 итерация.
Delphi
1
2
3
4
5
6
while abs(b-a)>=e do
 begin
  a:=b;
  k:=k+1;
  b:=2+1/a;
 end;
Основной цикл вычисления. Так как каждый следующий элемент последовательности зависит от предыдущего, и в результате нам так же нужно вывести 2 элемента, то:
- в переменной a мы сохраняем последний вычисленный элемент последовательности;
- увеличиваем счетчик итераций, равный номеру элемента последовательности, который мы вычисляем;
- вычисляем новый элемент последовательности;
- цикл останавливается если разница между элементами станет меньше e.
- при выходе их цикла, в переменной k получаем номер элемента, разница которого с предыдущим меньше e, b - k-ый элементы последовательности, a - (k-1)-ый элемент.
Delphi
1
writeln('An-1=',b:0:6,'  An=',a:0:6,'  t=',abs(b-a):0:6,'  k=',k);
Выводим результат.

Будут вопросы задавай.
Developer
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 37
02.10.2011, 18:31  [ТС]     Проблема циклами #3
так почему b= 2.5 ?
Сколько он будет равен для моего условия ?
Liraim
6 / 6 / 0
Регистрация: 28.01.2009
Сообщений: 15
02.10.2011, 18:41     Проблема циклами #4
Потому что пропущена первая итерация.
Можно сделать так:
Delphi
1
2
3
4
5
6
7
8
a:=0;b:=2;
k:=1;
while abs(b-a)>=e do
 begin
  a:=b;
  k:=k+1;
  b:=2+1/a;
 end;
Это будет работать аналогично предыдущему коду.

Добавлено через 7 минут
То есть до цикла ты задаешь уже известные значения. Без которых не возможно начать вычисления.
В твоей задачи будет немного сложнее. Так что не поленись подумать.
Yandex
Объявления
02.10.2011, 18:41     Проблема циклами
Ответ Создать тему
Опции темы

Текущее время: 13:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru