Помощь - Поиск - Пользователи - Календарь
Полная версия: Последовательность
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
Merlin
Задание :

Найти наименьший номер 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();
}
volvo
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;
}
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.