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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не могу понять где у меня ошибка с використанням if http://www.cyberforum.ru/cpp-beginners/thread619562.html
Люди помогите, подскажите где у меня ошибка в коде С++ по визуал студио #include<iostream> using std::cin; using std::endl; using std::cout; int main() { int a,b,c; cout<<endl;
C++ Массив и улитка В каждый солнечный день улитка, сидящая на дереве, поднимается вверх на 2 см, а в каждый пасмурный опускается вниз на 1 см. В начале наблюдений улитка находилась в 30 см. от земли. Задать массив из 30 элементов, содержщий сведения о том,был ли день солнечным или пасмурным. Составить программу, расчитывющую движение улитки. Вывести на экран в файл информацию о дне наблюдения и о расстоянии улитки... http://www.cyberforum.ru/cpp-beginners/thread619545.html
C++ Функции.Вызов.Алгоритм сортировки
Идея состоит в том ,чтобы ввести данные типа string через cin,разделённыйе пробелами или запятыми. И отсортировать в алфавитном порядке. Очень много ошибок.вот код:#include <iostream> #include <cstring> using namespace std; vector<string> sort(vector<string>& strlist ); //???? void Out(vector<string>& str); //???? int main()
Задача из книги Страуструпа C++
Меня настораживает несколько странная формулировка, я не понимаю зачем так предлагают решать задачу: Напишите программу, содержащую цикл while, в котором считываются и выводятся на экран два целых числа . Для выхода из программы введите символ '|'. Я как вариант написал без проверки что вводится именно 2, но чую хотели от меня что то другое! #include "std_lib_facilities.h" int main() {...
C++ Для заданного целого числа n вычислить значение суммы http://www.cyberforum.ru/cpp-beginners/thread619500.html
Задача: Для заданного целого числа n вычислить значение суммы: В знаменателе сумма всевозможных комбинаций i1+i2+...+in Для n=3 for (i1=1;i1<=n;i1++) for (i2=1;i2<=n;i2++) for (i3=1;i3<=n;i3++) S+=1/(i1+i2+i3)
C++ Ввод - вывод cBigNumber Подскажите кто нибудь несложный способ считывания с Edita в cBigNumber, обратно... подробнее

Показать сообщение отдельно
Анастасия Ан
0 / 0 / 0
Регистрация: 13.03.2012
Сообщений: 14

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

05.07.2012, 15:39. Просмотров 1461. Ответов 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 в С++  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru