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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Анастасия Ан
0 / 0 / 0
Регистрация: 13.03.2012
Сообщений: 14
#1

Перевод из Pascal в С++ - C++

05.07.2012, 15:39. Просмотров 1439. Ответов 3
Метки нет (Все метки)

Для заданного целого N вычислить значение суммы(с помощью рекурсии)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const n = 4;
 
function f(const lvl : integer; sum : integer) : real;
var
   s : real;
   i : integer;
begin
   if lvl = 0 then f := 1 / sum
   else
   begin
      s := 0;
      for i := 1 to n do s := s + f(lvl - 1, sum + i);
      f := s;
   end
end;
 
var s : real;
    i1, i2, i3, i4 : integer;
begin
   // Это все - для проверки, правильно ли работает рекурсия
   s := 0;
   for i1 := 1 to n do
      for i2 := 1 to n do
         for i3 := 1 to n do
            for i4 := 1 to n do
               s := s + 1 / (i1 + i2 + i3 + i4);
   writeln(s:12 :8);
 
   // Вот он, вызов функции:
   writeln(f(n, 0):12 :8);
end.
Теперь о том, как это работает:
на примере N = 2.
Что надо посчитать при N = 2? Вот что:
(1/(1+1)+1/(1+2))+(1/(2+1)+1/(2+2))
При lvl=2 будет считаться вся формула, при lvl=1 - только то, что в первой или второй скобке, при lvl=0 - будет считаться каждое из слагаемых внутри скобки.

f(2, 0) = f(1, 0 + 1) + f(1, 0 + 2)
Однако, условие окончания рекурсии не достигнуто, lvl = 1, поэтому продолжаем раскрывать дальше:
= (f(0, 1 + 1) + f(0, 1 + 2)) + (f(0, 2 + 1) + f(0, 2 + 2))
А теперь смотрим на формулу сверху. Не правда ли, если взять и единицу разделить на второй параметр, то получится как раз то, что нам надо? И случай как раз подходящий: lvl = 0, дальше раскрывать формулу не нужно. Поэтому просто возвращаем тут значения, и начинаем "раскручивать" рекурсию в обратном направлении, то есть, просто суммируем то, что вернулось из более глубоких вызовов. И получаем результат...

Нужен перевод в С++
Миниатюры
Перевод из Pascal в С++  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2012, 15:39     Перевод из Pascal в С++
Посмотрите здесь:

Перевод из Pascal в C++ - C++
Помогите перевести в C++ Var s,s1,s2 : String; a : Array Of String; N,i,j : LongInt; Begin ...

перевод с Pascal на C++ - C++
Const Max=1000; Eps=0.00001; Type Para=record X: integer;

Перевод с Pascal на C++ - C++
Код на паскале, помогите его переписать в С ++ . Очень нужно ребят . Последняя задача. const mi = 100; type matrix = array of...

Перевод из Pascal в C++ - C++
Добрый день, дорогие форумчане) Буду благодарен за перевод) uses crt; const nmax = 20; type mtr = array of integer;

Перевод из Pascal в C++ - C++
Помогите,пожалуйста, с переводом программы из паскаля в C++ uses crt; function F(x:real):real; begin F:=1+x-x*x*x; ...

Перевод с Pascal на С++ - C++
Type predpr=Array of longint; rasp=Array of longint; На языке С++, как это будет выглядеть?

Перевод с Pascal на С++ - C++
Ребят, кому не сложно,переведите пожалуйста.Буду благодарна. program z1; var n,s,i : integer; begin write('n = '); ...

Перевод с Pascal на С++ - C++
Ребят, переведите кому не сложно, буду благодарна. program z1; var n,s,i : integer; begin write('n = '); readln(n); ...

Перевод из Pascal в C++ - C++
Помогите перевести исходник из Pascal в C++. В Паскале я силен,а вот Си ток немного знаю, выручайте плз, в долгу не останусь! Исходник...

Перевод из Pascal в C++ - C++
В файле W задан массив из девяти элементов. В новом файле WW сформировать массив, в котором каждому элементу будет присвоено значение...

Перевод из Pascal в C++ - C++
Здравствуйте! Помогите,пожалуйста,перевести программу из паскаля в С++ uses crt; var A, B, x, y, h, n, O: real; s: string; ...

Перевод с Pascal на C++ - C++
Помогите пожалуйста перевести код с Pascal на C++, паскаль совсем не знаю. Задание :Дана строка символов, в конце которой стоит точка....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
05.07.2012, 15:55     Перевод из Pascal в С++ #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "iostream"
#include "iomanip.h"
 
const int n = 4;
 
double f(const int lv1, int sum)
{
   double s;
   int i;
 
   if (lv1 == 0)
      return 1.0 / summ;
   else
   {
      s = 0;
      for (i=1; i<=n; i++)
         s = s + f(lv1 - 1, sum + i);
      return s;
   }
}
 
int main()
{
   double s;
   int i1, i2, i3, i4;
 
   s = 0;
   for (i1 = 1; i <= n; i++)
      for (i2 = 1; i2 <= n; i2++)
         for (i3 = 1; i3 <= n; i3++)
            s = s + 1.0 / (i1 + i2 + i3);
 
   cout << setiosflags(ios::fixed | ios::showpoint) << setprecision(8)
          << s << endl;
 
   cout << setiosflags(ios::fixed | ios::showpoint) << setprecision(8)
          << f(n, 0) << endl;
 
   return 0;
}
Анастасия Ан
0 / 0 / 0
Регистрация: 13.03.2012
Сообщений: 14
05.07.2012, 16:09  [ТС]     Перевод из Pascal в С++ #3
Цитата Сообщение от Intel~lect Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "iostream"
#include "iomanip.h"
 
const int n = 4;
 
double f(const int lv1, int sum)
{
   double s;
   int i;
 
   if (lv1 == 0)
      return 1.0 / summ;
   else
   {
      s = 0;
      for (i=1; i<=n; i++)
         s = s + f(lv1 - 1, sum + i);
      return s;
   }
}
 
int main()
{
   double s;
   int i1, i2, i3, i4;
 
   s = 0;
   for (i1 = 1; i <= n; i++)
      for (i2 = 1; i2 <= n; i2++)
         for (i3 = 1; i3 <= n; i3++)
            s = s + 1.0 / (i1 + i2 + i3);
 
   cout << setiosflags(ios::fixed | ios::showpoint) << setprecision(8)
          << s << endl;
 
   cout << setiosflags(ios::fixed | ios::showpoint) << setprecision(8)
          << f(n, 0) << endl;
 
   return 0;
}
Спасибо вам большое! А вы не проверяли, это работает? Просто я пока не могу сама проверить
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
05.07.2012, 16:15     Перевод из Pascal в С++ #4
Нет, еще не проверял. Сейчас просто возможности нет
Yandex
Объявления
05.07.2012, 16:15     Перевод из Pascal в С++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru