Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2010, 22:18   #1
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию указатели с++, дорешать)

Пожалуйста, помогите дорешать задачку:

SuperSum функция, найденная из:
• SuperSum(0 , n) = n, для положительных n.
• SuperSum(k , n) = SuperSum(k-1 , 1) + SuperSum(k-1 , 2) + ... + SuperSum(k-1 , n), для положительных k, n.
Для данных k , n вернуть значение функции SuperSum(k , n)

Код:
Например:
Input 	Output 
1 3	        6,    то есть   когда k = 1, SuperSum равна сумме n = 3 чисел: 1 + 2 + 3 = 6.
2 3 	        10 , то есть   SuperSum(2 , 3) = SuperSum(1 , 1) + SuperSum(1 , 2) + SuperSum(1 , 3) = 1 + 3 + 6 = 10.
Как добавить в функцию это условие SuperSum(k , n) = SuperSum(k-1 , 1) + SuperSum(k-1 , 2) + ... + SuperSum(k-1 , n)?
Код:
#include <iostream>
using namespace std;
	
	int superSum (int k, int *n) {
	int sum = 0;
	if (k==0) return *n;
		else if (k==1) {
		for (int i=k; i<*n+1; i++)
		sum+=i;
		 return sum;
				 }
				            }
	int main() {
	   int k, n;
	   cin >>k>>n;
	  cout << superSum (k, &n);
	   
	return 0;
	}
I'm a rebel. [I think positively].

Последний раз редактировалось Guzal; 09.11.2010 в 22:56.
Guzal вне форума Ответить с цитированием
Старый 09.11.2010, 23:01   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

вот, проверьте
если я конечно правильно понял условие
Код:
#include <iostream>
using namespace std;
	
int superSum (int k, int *n) 
{
	int i,sum = 0;
    
	if (k==0) 
		return *n;

	else if (k==1) 
	{
		for (i=1; i<=*n; i++)
			sum+=i;
		return sum;
	}

	else if (k>0)//если к!=0,!=1, тогда если он хотя бы >0
	{
		while (*n>0)//так как надо сделать суммирование несколько раз
		{
			for (i=1;i<=*n;i++)
			{
				sum+=i;
			}
		*n--;//то мы и делаем его, несколько раз, проще говоря это выглядит так
			//sum+1+2+3 *n-- +1+2 *n-- +1
	}
	return sum;
	}

}

int main() {
int k, n;
cin >>k>>n;
cout << superSum (k, &n);
system("pause");
return 0;
}
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 09.11.2010, 23:19   #3
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

ответ получается слишком большой, переставила скобки, вроде для одного примера подходит, для другого нет ( ..а где мы здесь складываем значение к-1?
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 09.11.2010, 23:30   #4
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

хм, нигде >_>
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 10.11.2010, 00:39   #5
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Код:
#include <iostream>

int super_sum(int k, int n) {
  if (k == 0) return n;
  int result = 0;
  for (int i = 1; i <= n; i++)
    result += super_sum(k - 1, i);
  return result;
}

int main() {
  std::cout << super_sum(1, 3) << std::endl;
  std::cout << super_sum(2, 3) << std::endl;
  return 0;
}
still_alive вне форума Ответить с цитированием
Старый 11.11.2010, 19:22   #6
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

Спасибо, но немного не то)
Вот как объяснил учитель:
Код:
например:
вводятся числа 2 и 3:
(2, 3) = (2, 2) + (1, 2) + (1, 3)
 k   n      0, 1      0, 1       0, 1        
                         0, 2       0, 2
                                      0, 3
             1            3            6     = 10 -ответ


• SuperSum(k , n) = SuperSum(k-1 , 1) + SuperSum(k-1 , 2) + ... + SuperSum(k-1 , n), для положительных k, n.
I'm a rebel. [I think positively].

Последний раз редактировалось Guzal; 11.11.2010 в 21:38.
Guzal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как дорешать? Клеом Общие вопросы C/C++ 0 19.06.2010 00:44
Дорешать строку surf135 Помощь студентам 4 02.06.2010 18:35
как дорешать chehroma Помощь студентам 0 05.05.2010 22:38
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39
Помогите дорешать задачу на While Andrux Помощь студентам 12 29.12.2008 21:24