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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Mishania
77 / 77 / 33
Регистрация: 26.09.2012
Сообщений: 341
#1

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

30.10.2013, 13:29. Просмотров 754. Ответов 28
Метки нет (Все метки)

Здравствуйте. Помогите, пожалуйста, решить задачу. Дано натуральное число M, нужно вычислить последовательность:
1/1+1/2+1/3+...+1/M.

На Паскале знаю, как написать код, а вот на С++ - нет. Помогите, пожалуйста. Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2013, 13:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача на фактриалы (C++):

Задача: В некотором государстве ввели компьютерный паспорт гражданина.(задача) - Pascal
Доброго времени суток,форумчане. Хотелось бы попросить помощи в решении одной задачи от умных голов. Задача: В некотором...

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника - PascalABC.NET
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он уплатил по 31 талеру, а за каждого быка по...

Задача на k-тую цифру последовательности, задача на схему Горнера. - Pascal
Ну, собственно опять прошу помощи... Задача 1: Определить k-тую цифру последовательности 1234567891011121314…, в которой выписаны подряд...

Первая смешанная задача для волнового уравнения на отрезке (задача о колебаниях ограниченной струны) методом Фурье - Дифференциальные уравнения
Решить первую смешанную задачу для волнового уравнения на отрезке (задача о колебаниях ограниченной струны) методом Фурье ...

Задача о размещении весов по ящикам (задача о рюкзаках) - Delphi
Есть упорядоченный по невозрастанию набор весов предметов w1..wn, которые необходимо распределить по ящикам способным выдержать вес V,...

Задача линейного программирования, транспортная задача - Методы оптимизации
Всем привет. сижу на экзамене, помогите пожалуйста решить,сроно!!! заранее спасибо.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vigi
95 / 95 / 23
Регистрация: 28.05.2012
Сообщений: 477
30.10.2013, 13:33 #2
напишите алгоритм на паскале и увидите, что все тоже самое и на сях, малость синтаксис отличается...
0
newbie666
Заблокирован
30.10.2013, 13:34 #3
код на паскале в студию
0
Байт
Эксперт C
16062 / 10331 / 1540
Регистрация: 24.12.2010
Сообщений: 19,468
30.10.2013, 14:55 #4
C++
1
for(i=1, s=0; i<=M; i++) s += 1.0/M;
1
salam
163 / 144 / 12
Регистрация: 10.07.2012
Сообщений: 728
30.10.2013, 15:29 #5
я один не понял, при чем здесь факториалы?

Добавлено через 1 минуту
вообще говоря, считается за константу. вроде как известный ряд.
0
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.
Алгоритм мне понятен, но как написать сам код программы на С++ не знаю.

Байт, спасибо, конечно, но мне бы код полностью... Может быть, кто-нибудь знает?
0
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 829
Записей в блоге: 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;
}
1
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");
1
Аркалык
18 / 18 / 7
Регистрация: 24.09.2013
Сообщений: 160
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();
}
1
Vigi
95 / 95 / 23
Регистрация: 28.05.2012
Сообщений: 477
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;
Лишне убрать
1
Mishania
77 / 77 / 33
Регистрация: 26.09.2012
Сообщений: 341
31.10.2013, 18:39  [ТС] #11
Спасибо всем большое!!!
0
Байт
Эксперт C
16062 / 10331 / 1540
Регистрация: 24.12.2010
Сообщений: 19,468
01.11.2013, 11:39 #12
Scythian,
C
1
Res=Res+1/i;
В большинстве случаев 1/i даст 0.
0
salam
163 / 144 / 12
Регистрация: 10.07.2012
Сообщений: 728
01.11.2013, 11:57 #13
Цитата Сообщение от Байт Посмотреть сообщение
В большинстве случаев 1/i даст 0.
честно говоря, никогда.
0
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,370
01.11.2013, 12:06 #14
Честно говоря, при всех i > 1.
1
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,529
Завершенные тесты: 1
01.11.2013, 12:11 #15
CheshireCat, ага. Просто salam и Байт живут по разные стороны единицы. ))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2013, 12:11
Привет! Вот еще темы с ответами:

Задача Дам или задача Восьми - Алгоритмы
помогите найти ошибку в алгоритме. не находит ответ подозреваю ошибку в k, i, j package com.company; import java.util.Arrays;...

Задача на файл и задача на создание очереди - Pascal
1 Дан символьный файл, содержащий, по крайней мере, один символ пробела. Удалить из файла все символы, предшествующие пробелу 2 ...

задача Коши и краевая задача - Matlab
Помогите кто чем может))


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.11.2013, 12:11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru