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

Задача на фактриалы - C++

Восстановить пароль Регистрация
 
 
Mishania
77 / 77 / 33
Регистрация: 26.09.2012
Сообщений: 341
30.10.2013, 13:29     Задача на фактриалы #1
Здравствуйте. Помогите, пожалуйста, решить задачу. Дано натуральное число M, нужно вычислить последовательность:
1/1+1/2+1/3+...+1/M.

На Паскале знаю, как написать код, а вот на С++ - нет. Помогите, пожалуйста. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vigi
 Аватар для Vigi
84 / 84 / 19
Регистрация: 28.05.2012
Сообщений: 442
30.10.2013, 13:33     Задача на фактриалы #2
напишите алгоритм на паскале и увидите, что все тоже самое и на сях, малость синтаксис отличается...
newbie666
Заблокирован
30.10.2013, 13:34     Задача на фактриалы #3
код на паскале в студию
Байт
 Аватар для Байт
13954 / 8785 / 1221
Регистрация: 24.12.2010
Сообщений: 15,894
30.10.2013, 14:55     Задача на фактриалы #4
C++
1
for(i=1, s=0; i<=M; i++) s += 1.0/M;
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
30.10.2013, 15:29     Задача на фактриалы #5
я один не понял, при чем здесь факториалы?

Добавлено через 1 минуту
вообще говоря, считается за константу. вроде как известный ряд.
Mishania
77 / 77 / 33
Регистрация: 26.09.2012
Сообщений: 341
31.10.2013, 17:53  [ТС]     Задача на фактриалы #6
Цитата Сообщение от Vigi Посмотреть сообщение
напишите алгоритм на паскале и увидите, что все тоже самое и на сях, малость синтаксис отличается...
Не знаю синтаксиса на С++, поэтому прошу помощи в написании кода программы.

Цитата Сообщение от newbie666 Посмотреть сообщение
код на паскале в студию
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var
    i,M: integer;
    Res: real;
begin
       Writeln('Введите значение натурального числа M='); Readln(M);
       Res:=0;
       for i:=1 to M do begin
            Res:=Res+1/i;
       end;
       Writeln(Res:0:2);
Readln;
end.
Алгоритм мне понятен, но как написать сам код программы на С++ не знаю.

Байт, спасибо, конечно, но мне бы код полностью... Может быть, кто-нибудь знает?
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
31.10.2013, 17:59     Задача на фактриалы #7
Цитата Сообщение от Mishania Посмотреть сообщение
Не знаю синтаксиса на С++, поэтому прошу помощи в написании кода программы.



Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var
    i,M: integer;
    Res: real;
begin
       Writeln('Введите значение натурального числа M='); Readln(M);
       Res:=0;
       for i:=1 to M do begin
            Res:=Res+1/i;
       end;
       Writeln(Res:0:2);
Readln;
end.
Алгоритм мне понятен, но как написать сам код программы на С++ не знаю.

Байт, спасибо, конечно, но мне бы код полностью... Может быть, кто-нибудь знает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <locale>
 
 
using namespace std;
 
 
 
int main()
{
    std::locale::global(std::locale(""));
    int M;
    double S=0;
    cout<<"Введите натуральное M "<<endl;
    cin>>M;
    for(int i=1; i<=M; i++) S += 1.0/i;
    cout<<"Сумма ряда = "<<S<<endl;
    system("pause");
    return 0;
}
Scythian
 Аватар для Scythian
58 / 58 / 8
Регистрация: 01.01.2010
Сообщений: 222
31.10.2013, 18:01     Задача на фактриалы #8
C++
1
2
3
4
5
6
7
8
int i=0,M;
double Res;
cout<<"Введите значение натурального числа M=";
cin>>M;
for(i=1;i<M;i++)
 Res=Res+1/i;
cout<<Res;
system("pause");
Аркалык
13 / 13 / 4
Регистрация: 24.09.2013
Сообщений: 138
31.10.2013, 18:13     Задача на фактриалы #9
У меня так выходит:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<conio.h>
#include<stdio.h>
#include<math.h>
void main()
{
clrscr();
int m;
float i,s;
s=0;
printf("vvedite chislo M:");
scanf("%d",&m);
for (i=1; i<=m; i++) s+=1/i;
printf("Summa:%6.2f",s);
getch();
}
Vigi
 Аватар для Vigi
84 / 84 / 19
Регистрация: 28.05.2012
Сообщений: 442
31.10.2013, 18:32     Задача на фактриалы #10
Ну и вот еще как вариант транслейта вашего паскаля:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int m;
    double Res(0),temp(0);
    cout << "Введите значение натурального числа M=";
    cin >> m;
    for (int i = 1; i <= m; i++)
        temp += 1.0 / i;
    Res = int(temp * 100) / 100.0;
    cout << Res << endl;
    
    _getch();
    return 0;
}
Добавлено через 9 минут
Да, если сильно с округлением не мудрить можно в инклюды добавить
C++
1
#include <iomanip>
и тогда вывод будет так
C++
1
cout << setprecision(3) << temp << endl;
Лишне убрать
Mishania
77 / 77 / 33
Регистрация: 26.09.2012
Сообщений: 341
31.10.2013, 18:39  [ТС]     Задача на фактриалы #11
Спасибо всем большое!!!
Байт
 Аватар для Байт
13954 / 8785 / 1221
Регистрация: 24.12.2010
Сообщений: 15,894
01.11.2013, 11:39     Задача на фактриалы #12
Scythian,
C
1
Res=Res+1/i;
В большинстве случаев 1/i даст 0.
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
01.11.2013, 11:57     Задача на фактриалы #13
Цитата Сообщение от Байт Посмотреть сообщение
В большинстве случаев 1/i даст 0.
честно говоря, никогда.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
01.11.2013, 12:06     Задача на фактриалы #14
Честно говоря, при всех i > 1.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
01.11.2013, 12:11     Задача на фактриалы #15
CheshireCat, ага. Просто salam и Байт живут по разные стороны единицы. ))
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
01.11.2013, 12:12     Задача на фактриалы #16
мы, по-моему, по разные стороны математики живем.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
01.11.2013, 12:18     Задача на фактриалы #17
Цитата Сообщение от salam Посмотреть сообщение
честно говоря, никогда.
практически завсегда
ты с 1.0/i не путай

Добавлено через 55 секунд
Цитата Сообщение от salam Посмотреть сообщение
мы, по-моему, по разные стороны математики живем.
есть математика и есть программирование
целочисленные типы дробь не дают
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
01.11.2013, 12:19     Задача на фактриалы #18
спасибо всем за ценные сведения.
Байт
 Аватар для Байт
13954 / 8785 / 1221
Регистрация: 24.12.2010
Сообщений: 15,894
01.11.2013, 12:53     Задача на фактриалы #19
Цитата Сообщение от ValeryS Посмотреть сообщение
есть математика и есть программирование
целочисленные типы дробь не дают

Не по теме:

Спасибо, выручил! А то совсем заклевали. Даже комплексы появились, думаю, о может я и правда того?



Добавлено через 59 секунд
Цитата Сообщение от CheshireCat Посмотреть сообщение
Честно говоря, при всех i > 1.

Не по теме:

И вам спасибо!

SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
01.11.2013, 13:28     Задача на фактриалы #20
Цитата Сообщение от salam Посмотреть сообщение
мы, по-моему, по разные стороны математики живем.
При i больше единицы живет Байт. Вы же - при i меньше единицы. i равная единице - мост.

Цитата Сообщение от ValeryS Посмотреть сообщение
ты с 1.0/i не путай
Кстати да. / - это не деление. Это получение целой части от деления.
Yandex
Объявления
01.11.2013, 13:28     Задача на фактриалы
Ответ Создать тему
Опции темы

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