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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2010, 01:04   #1
PPPPPP
Пользователь
 
Регистрация: 28.02.2010
Сообщений: 22
По умолчанию Написание программы на языке C (по теме - сумма чисел в последовательности)

Задана некоторая последовательность чисел:
n(n-1)...(n-k)+(n-1)(n-2)...(n-k-1)+(k+1)k(k-1)...1
Как я понял задание, то вводя с клавиатуры значения n и k необходимо найти сумму элементов последовательности. Не знаю даже, за что зацепиться. Еще нужно ввести еще число членов этой последовательности. В общем как-то надо раскрутить... Язык программирования: С. Использовать можно только функции библиотек <stdio.h> и <math.h>... Помогиите!
PPPPPP вне форума Ответить с цитированием
Старый 28.02.2010, 01:57   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,760
По умолчанию

Даю наводку: общий член вашей суммы записывается, как (n-i+1)!/(n-i-k)!. Суммирование идет до 0 в меньшей скобке, отсюда сразу получаем формулу для количества членов.
p51x вне форума Ответить с цитированием
Старый 28.02.2010, 21:10   #3
PPPPPP
Пользователь
 
Регистрация: 28.02.2010
Сообщений: 22
По умолчанию

А еще идеи воплощения этой программы есть у кого-нибудь!?
PPPPPP вне форума Ответить с цитированием
Старый 28.02.2010, 21:53   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,760
По умолчанию

А чем вам не нравиться простой цикл и подсчет факториалов?
p51x вне форума Ответить с цитированием
Старый 01.03.2010, 01:49   #5
PPPPPP
Пользователь
 
Регистрация: 28.02.2010
Сообщений: 22
По умолчанию

А хотя бы набросок программы можно:? В голове не укладывается, как это можно соорудить...
PPPPPP вне форума Ответить с цитированием
Старый 01.03.2010, 11:08   #6
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

например так:
но мне не очень понятно начальное условие цикла...
Код:
#include <stdio.h>
#include <math.h>

int fact(int n){
    int result=1;
    if(n==0) return 1;
    while(n>0) result*=n--;
    return result;
}


int main(void)
{
    int n,k,i;
    double sum=0;
    scanf("%d%d", &n, &k);
    for(i=n; i>0; i--)
       sum += (double)fact(n-i+1) / (double)fact(n-i-k);
    printf("Sum = %f\n", sum);
    getch();
    return 0;
}
NiCola999 вне форума Ответить с цитированием
Старый 01.03.2010, 12:10   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,760
По умолчанию

Ладно. Для оптимизации и облегчения себе жизни "развернем ряд" (сумма не изменится) и сразу посчитаем первый член (чтоб не вставлять лишнее сравнение в цикл).

Код:
unsigned int fact1 = k+1;
unsigned int fact2 = 1;
double res = double(fact1)/fact2;

for(unsigned int i = 1; i < n-k; ++i){
  fact1 *= k+1+i;
  fact2 *= i;
  res +=  double(fact1)/fact2;
}
Проверки сами добавите.
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить k-ую цифру последовательности Фибоначчи и последовательности натуральных чисел. Med Помощь студентам 1 20.03.2009 11:40
обмен чисел последовательности maziLa Паскаль, Turbo Pascal, PascalABC.NET 2 09.12.2008 00:15
Ввод последовательности чисел POPOV Общие вопросы Delphi 5 16.02.2008 22:13
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных Белка Помощь студентам 3 27.10.2007 11:53
Сумма ряда на ЭВМ и вычисленная аналитически, программы на языке Pascal SunCHO Помощь студентам 2 02.05.2007 22:37