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

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

Войти
Регистрация
Восстановить пароль
 
OldFile
0 / 0 / 0
Регистрация: 10.04.2014
Сообщений: 15
#1

Вывод числа,через дробь - C++

14.04.2014, 23:51. Просмотров 446. Ответов 7
Метки нет (Все метки)

Вот у меня такая задача:
Написать программу вычисления суммы 1+1/2+1/3+...+1/n для заданного числа n. Результат представить в виде несократимой дроби p/q (p, q — натуральные).Решить задачу с помощью функции.
Нашел ответ,сделан на паскале,но без помощи процедур.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program nom11;
var p, q, n, i: integer;
begin
write('n=');
readln(n);
p:=1;
q:=1;
for i:=2 to n do
 begin
   p:=p*i+q;
   q:=i*q;
 end;
write('Summa=',p,'/',q);
readln
end.
Попробовал перевести,но я не пойму как вернуть вот эту строчку
C++
1
cout << p << "/" << q;
Вот сама программа:
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
#include <iostream>
using namespace std;
int sum(int n);
 
int main()
{
    int n;
    cout << "Enter n:", cin >> n;
    cout << "Sum = " << sum(n) << endl;
    system("pause");
}
 
int sum(int n)
{
    int p, q;
    p = 1; q = 1;
    for (int i = 2; i <= n; i++)
    {
        p *= i + q;
        q = i*p;
    }
    return p / q;
       // Но нужно что бы оно не считало,а выводило дробью
}
И кстати,правильная ли вообще программа,которая была изначально?)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2014, 23:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод числа,через дробь (C++):

Как написать класс «несократимая дробь» (т.е. дроби 2/4, 4/8 и т.п. есть дробь 1/2)? - C++
Я только начанаю знакомство с C++. В классе реализовать следующие методы: конструкторы (по умолчанию, с параметрами, копирования), ввод с...

Преобразование десятичного числа в дробь - C++
Собственно не могу придумать код реализации десятичного числа в дробь(например 0.75 = 1/3), может кто подкинет идейку?=)

Вывод всех цифр введенного пользователем числа через пробел в обратном порядке - C++
Задача: Написать программу, которая выводит на экран все цифры введенного пользователем числа через пробел в обратном порядке. Всё это...

Сократить дробь, т е найти такие натуральные числа p и q , не имеющий общий делитель - C++
Даны натуральных числа a и b, обозначающие соответственно числитель и знаменатель дроби. Сократить дробь, т е найти такие натуральные числа...

заполнение массива через rand и вывод на экран через указатели - C++
Учитель задал заполнить массивы и случайными числами и вывезти на экран через указатели, через функцию rand выводит как вы понимаете одни...

Предложить эффективный алгоритм умножения числа на дробь в длинной арифметике - C++
Нам дано длинное натуральное число, представленное в виде динамического массива: 1) разряды числа записываются от старшего к младшему;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IrineK
Заблокирован
14.04.2014, 23:59 #2
Хотите, чтобы возвращались p, q соорудите функцию с возвратом параметров:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
int n, p = 1, q = 1; //начальные значения
//....
void sum(n, p, q);
cout << p << "/" << q;
//....
}
 
void sum(int n, int &p, int &q)
{ for (int i = 2; i <= n; i++)
    {
        p *= i + q;
        q = i*p;
    }
}
0
OldFile
0 / 0 / 0
Регистрация: 10.04.2014
Сообщений: 15
15.04.2014, 00:21  [ТС] #3
Цитата Сообщение от IrineK Посмотреть сообщение
Хотите, чтобы возвращались p, q соорудите функцию с возвратом параметров:
...,не совсем пойму что сделать,точнее,что возвращать из функции void sum ?
0
IrineK
Заблокирован
15.04.2014, 00:23 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
void sum(int n, int &p, int &q);
 
int main()
{
    int n, p = 1, q = 1;
    cout << "Enter n:", cin >> n;
    sum(n, p, q);
cout << p << "/" << q;
    system("pause");
}
 
 
void sum(int n, int &p, int &q)
{ for (int i = 2; i <= n; i++)
    {
        p *= i + q;
        q = i*p;
    }
}
0
OldFile
0 / 0 / 0
Регистрация: 10.04.2014
Сообщений: 15
15.04.2014, 00:32  [ТС] #5
Примерно так и пробовал.
но не компилируется:
исходный код.cpp(9): error C2660: sum: функция не принимает 3 аргументов
0
IrineK
Заблокирован
15.04.2014, 00:36 #6
Вы вот все скопируйте и запустите.
0
OldFile
0 / 0 / 0
Регистрация: 10.04.2014
Сообщений: 15
15.04.2014, 00:47  [ТС] #7
Цитата Сообщение от IrineK Посмотреть сообщение
Вы вот все скопируйте и запустите.
Хм..да я так и сделал.Ошибка та же.
0
Миниатюры
Вывод числа,через дробь  
IrineK
Заблокирован
15.04.2014, 00:51 #8
В третьей строке наверху пишем

void sum(int n, int &p, int &q);

И будет вам счастье.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2014, 00:51
Привет! Вот еще темы с ответами:

Ввод чисел через пробел до определеного числа,убрать оставшиеся числа - C++
Нужно ввести числа через проблем, набор заканчиваеться числом меньше или равно нулю. Пример: 1 2 3 -1 5 6 7 (занести нужно будет...

Ввод двузначного числа и вывод обратного числа - C++
Помогите пожалуйста сделать( Арифметика: Z=4 cosα2 ⋅cos52 α⋅cos 4α Текст: Составить программу, в которая запрашивает ввод...

Как сделать из двухзначного числа два числа через пробел? - C++
Как сделать из двухзначного числа два числа через пробел? Например: 44 = 4 4 Кто знает?

Нахождение основных значений оформить через функцию RESHENIE(), ввод данных и вывод на печать через функцию MAIN() - C++
а помогите теперь эту задачку #include &lt;iostream&gt; int main() { int last = 0, next = 1; long sum = 1; for(;...


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

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

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