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

Вычислить выражение (простейший цикл) - C++

Восстановить пароль Регистрация
 
Slowpok
4 / 4 / 0
Регистрация: 03.01.2012
Сообщений: 112
05.10.2013, 22:38     Вычислить выражение (простейший цикл) #1
Добрый день, помогите разобраться в задаче!
Условие:
Даны целые n, k (http://www.cyberforum.ru/cgi-bin/latex.cgi?n\geq k\geq 0). Вычислить http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{n(n-1)...(n-k+1)}{k!}.

У меня получилось так, но
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>
 
int main() {
int f,i,t,n,k;
float res; 
cout<<"k>=0 k=";
cin>>k;
while (k<0) { cout<<"k>=0 k="; cin>>k; } 
cout<<"n>=k n=";
cin>>n;
while (n<k) { cout<<"n>=k n="; cin>>n; }
f=1; i=1;
while (i<=k) { f*=i; i++; }
t=n-k+1;
res=t/f;
cout<<res<<endl; 
system("PAUSE");
return 0;
}
не очень понятно, что значит http://www.cyberforum.ru/cgi-bin/latex.cgi?n(n-1)...(n-k+1) в числителе дроби
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2013, 22:38     Вычислить выражение (простейший цикл)
Посмотрите здесь:

C++ Вычислить выражение
вычислить выражение C++
C++ Вычислить выражение
Вычислить выражение C++
C++ Вычислить выражение
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
05.10.2013, 22:45     Вычислить выражение (простейший цикл) #2
C++
1
2
3
4
int chislo=1;
for (int i = n; n>=n-k+1; i--){
chislo*=i;
}
Slowpok
4 / 4 / 0
Регистрация: 03.01.2012
Сообщений: 112
05.10.2013, 23:32  [ТС]     Вычислить выражение (простейший цикл) #3
scenotaph, возможно я не понял, но у меня не работает :с

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream.h>
 
int main() {
int f,i,t,n,k;
float res; 
cout<<"k>=0 k=";
cin>>k;
while (k<0) { cout<<"k>=0 k="; cin>>k; } 
cout<<"n>=k n=";
cin>>n;
while (n<k) { cout<<"n>=k n="; cin>>n; }
f=1; i=1;
while (i<=k) { f*=i; i++; }
 
t=1;
for (int i=n; n>=n-k+1; i--) { t*=i; }
 
res=t/f;
cout<<res<<endl; 
system("PAUSE");
return 0;
}
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
05.10.2013, 23:54     Вычислить выражение (простейший цикл) #4
Цитата Сообщение от Slowpok Посмотреть сообщение
scenotaph, возможно я не понял, но у меня не работает :с

C++
1
for (int i=n; n>=n-k+1; i--) { t*=i; }
конечно не работает-вот у вас бесконечный цикл, я чуток изменил как я это вижу...работает
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
#include <iostream>
using namespace std;
 
int main() {
    int i,n,k;
    float res,f,t; 
    cout<<"k>=0 k=";
    cin>>k;
    while (k<0) { cout<<"k>=0 k="; cin>>k; } 
    cout<<"n>=k n=";    
    cin>>n;
    while (n<k) { cout<<"n>=k n="; cin>>n; }
    f=1; i=1;
    while (i<=k) { 
        f*=i; i++; 
    }
    t=1;
    for (int i=(n-k+1); n>=i; i++) { 
        t*=i; 
    }
    res=t/f;
    cout<<res<<endl; 
    system("PAUSE");
    return 0;
}
Slowpok
4 / 4 / 0
Регистрация: 03.01.2012
Сообщений: 112
06.10.2013, 00:26  [ТС]     Вычислить выражение (простейший цикл) #5
вопросы:

1. почему f и t должны быть вещественного типа, если в ходе работы никогда не получат значение, отличное от целого? если это из-за строки:
C++
1
res=t/f;
, то почему не можем указать на тип:
C++
1
res(float)=t/f;
2. объясните пожалуйста, что в числителе условия записано?
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
06.10.2013, 00:34     Вычислить выражение (простейший цикл) #6
1. да это именно из-за той строки указывание не сработает, вы разделите инт на инт-получите целое число и потом переведете его в тоже число только с ".0"
можно вот так сделать:
C++
1
cout<<float(t)/f<<endl;
2-не понял к чему вопрос? к вашей формуле в задании или вопрос к коду?)
Slowpok
4 / 4 / 0
Регистрация: 03.01.2012
Сообщений: 112
06.10.2013, 02:19  [ТС]     Вычислить выражение (простейший цикл) #7
newb_programmer, в задании указаны некие "...", я так понимаю это какая-то числовая последовательность, где первый член это n(n-1), а последующие изменяются по некому правилу, возможно указанному во второй скобке... к коду у меня вопросов нет, но если вам не трудно, объясните пожалуйста, чего от меня хотят в условии.
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
06.10.2013, 10:38     Вычислить выражение (простейший цикл) #8
Slowpok,
Я опечатался, конечно
C++
1
2
3
4
int chislo=1;
for (int i = n; i>=n-k+1; i--){
chislo*=i;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2013, 11:25     Вычислить выражение (простейший цикл)
Еще ссылки по теме:

Цикл: Вычислить выражение по заданной формуле C++
C++ Цикл: Вычислить значение выражение
Вычислить выражение C++

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

Или воспользуйтесь поиском по форуму:
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
06.10.2013, 11:25     Вычислить выражение (простейший цикл) #9
Цитата Сообщение от Slowpok Посмотреть сообщение
newb_programmer, в задании указаны некие "...", я так понимаю это какая-то числовая последовательность, где первый член это n(n-1), а последующие изменяются по некому правилу, возможно указанному во второй скобке... к коду у меня вопросов нет, но если вам не трудно, объясните пожалуйста, чего от меня хотят в условии.
ну смотрите n(n-1)...(n-k+1). вы умножаете n на n-1 пока не дойдете до n-k+1. к примеру вы вводите n=10 и k=5 тогда в числителе будет: 10*9*8*7*6, последнее число 6, т.к. n-k+1=10-5+1=6
Yandex
Объявления
06.10.2013, 11:25     Вычислить выражение (простейший цикл)
Ответ Создать тему
Опции темы

Текущее время: 21:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru