IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> Последовательность, C
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 114
Пол: Мужской
Реальное имя: Ден

Репутация: -  0  +


Задание :

Найти наименьший номер n последовательности, для которого выполняется условие
| an – an-1| < e. Заданная последовательность an = 2 + 1/ an-1 , a1 = 2. Вывести на экран этот номер и все элементы ai, где i =1, 2, …, n, если e = 10*(-3), т.е. (В степени)
----------------------------------------
У меня есть прога в Паскале , теперь её надо перевести на С, вот только не получается , помогите пожалуйста.


Program z;
Var
a,a_next:real;
n:integer;
const
eps=0.001;
begin
a_next:=2;
n:=1;
repeat
a:=a_next;
a_next:=2+1/a;
if abs(a_next-a)>eps then begin
writeln('a[',n:2,']=',a:10:5);
inc(n);
end;
until abs(a_next-a)<eps;
writeln('n=',n);
readln;
end.



А вот она же на С, только в мойм корявом исполнении :

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
void main()
{
float a, a_next;
int n;
a_next=2;
n=1;
const eps=0.001;
do
{ a=a_next;
a_next=2+1/a;
if (abs(a_next-a) > eps)

cout<<"a['," << n<<",']=, " << a <<endl;
n++;

}
while (abs(a_next-a) <eps);
cout<<"n="<<n<<endl;
getche();
}


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






1. С чего ты взял, что тебе надо пользоваться abs ? Это для целых...
2. В конструкции do { ... } while условие - не "обратное", как в Repeat ... Until , а "прямое"
3. Не забывай приводить результаты к вещественному типу: С не делает этого автоматически...

4. (не обязательно, но ты же начал делать программу на С++, а не я) - чтобы программа соответствовала Стандарту, функция main должна возвращать значение типа int ...

#include <conio.h>
#include <iostream.h>
#include <math.h>

int main() {
float a, a_next = 2.0;

int n = 1;
const float eps = 0.001;

do {
a = a_next;
a_next = 2 + 1.0 / a;
if(fabs(a_next - a) > eps)
cout << "a[" << n++ <<"]= " << a << endl;

}
while(fabs(a_next - a) > eps);

cout << "n=" << n << endl;
getche();

return 0;
}
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 24.10.2017 7:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"