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

Вычислить и напечатать обратные целых чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
azhankuaku
0 / 0 / 0
Регистрация: 18.06.2011
Сообщений: 9
02.12.2011, 13:47     Вычислить и напечатать обратные целых чисел #1
Вычислить и напечатать обратные целых чисел от 2 до 51 со 100 цифрами после "."
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2011, 13:47     Вычислить и напечатать обратные целых чисел
Посмотрите здесь:

перегруженые функции для вычисления суммы произведений двух соседних чисел для трех целых чисел и в одномерном массиве целых чисел C++
C++ Дан одномерный массив целых чисел напечатать все четные эелементы (посмотрете код)
C++ Вычислить обратные значения тех из тех чисел, значения которых не равны нулю
C++ Вычислить сумму первых n целых положительных чисел. В С++
C++ Вычислить и напечатать среднее значение всех введенных чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
02.12.2011, 14:18     Вычислить и напечатать обратные целых чисел #2
Цитата Сообщение от azhankuaku Посмотреть сообщение
со 100 цифрами после
- это кому такая точность понадобилась
Хотел по-"нубски" решить задачу std::setpersision но как оказалось всё остановилось на 12-м знаке, далее просто нули идут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
 
int main()
{
    cout<<"Enter interval [a;b]\n";
    cout<<"a = ";int a;cin>>a;
    cout<<"b = ";int b;cin>>b;
    ofstream ofs("div.txt");
    for(int i = a; i <= b; i++)
    {
        if(ofs)
            ofs<<"1/"<<setw(2)<<i<<" = "<<setprecision(100)<<1.0/i<<endl;
        cout<<"1/"<<setw(2)<<i<<" = "<<1.0/i<<endl;
    }
    system("pause");
    return 0;
}
Ниже код и вывод в текстовый файл
1/ 1 = 10000000000000000000000000000000000000000000000000000000000000000
1/ 2 = 0.50000000000000000000000000000000000000000000000000000000000000000
1/ 3 = 0.333333333333333310000000000000000000000000000000000000000000000000000000000000000
развернуть
1/ 4 = 0.250000000000000000000000000000000000000000000000000000000000000000
1/ 5 = 0.200000000000000010000000000000000000000000000000000000000000000000000000000000000
1/ 6 = 0.166666666666666660000000000000000000000000000000000000000000000000000000000000000
1/ 7 = 0.142857142857142850000000000000000000000000000000000000000000000000000000000000000
1/ 8 = 0.1250000000000000000000000000000000000000000000000000000000000000000
1/ 9 = 0.11111111111111110000000000000000000000000000000000000000000000000000000000000000
1/10 = 0.100000000000000010000000000000000000000000000000000000000000000000000000000000000
1/11 = 0.0909090909090909120000000000000000000000000000000000000000000000000000000000000000
1/12 = 0.0833333333333333290000000000000000000000000000000000000000000000000000000000000000
1/13 = 0.0769230769230769270000000000000000000000000000000000000000000000000000000000000000
1/14 = 0.0714285714285714250000000000000000000000000000000000000000000000000000000000000000
1/15 = 0.0666666666666666660000000000000000000000000000000000000000000000000000000000000000
1/16 = 0.06250000000000000000000000000000000000000000000000000000000000000000
1/17 = 0.0588235294117647050000000000000000000000000000000000000000000000000000000000000000
1/18 = 0.0555555555555555520000000000000000000000000000000000000000000000000000000000000000
1/19 = 0.0526315789473684180000000000000000000000000000000000000000000000000000000000000000
1/20 = 0.0500000000000000030000000000000000000000000000000000000000000000000000000000000000
1/21 = 0.0476190476190476160000000000000000000000000000000000000000000000000000000000000000
1/22 = 0.0454545454545454560000000000000000000000000000000000000000000000000000000000000000
1/23 = 0.0434782608695652160000000000000000000000000000000000000000000000000000000000000000
1/24 = 0.0416666666666666640000000000000000000000000000000000000000000000000000000000000000
1/25 = 0.0400000000000000010000000000000000000000000000000000000000000000000000000000000000
1/26 = 0.0384615384615384640000000000000000000000000000000000000000000000000000000000000000
1/27 = 0.0370370370370370350000000000000000000000000000000000000000000000000000000000000000
1/28 = 0.0357142857142857120000000000000000000000000000000000000000000000000000000000000000
1/29 = 0.0344827586206896550000000000000000000000000000000000000000000000000000000000000000
1/30 = 0.0333333333333333330000000000000000000000000000000000000000000000000000000000000000
1/31 = 0.0322580645161290310000000000000000000000000000000000000000000000000000000000000000
1/32 = 0.031250000000000000000000000000000000000000000000000000000000000000000
1/33 = 0.0303030303030303040000000000000000000000000000000000000000000000000000000000000000
1/34 = 0.0294117647058823530000000000000000000000000000000000000000000000000000000000000000
1/35 = 0.0285714285714285710000000000000000000000000000000000000000000000000000000000000000
1/36 = 0.0277777777777777760000000000000000000000000000000000000000000000000000000000000000
1/37 = 0.0270270270270270290000000000000000000000000000000000000000000000000000000000000000
1/38 = 0.0263157894736842090000000000000000000000000000000000000000000000000000000000000000
1/39 = 0.025641025641025640000000000000000000000000000000000000000000000000000000000000000
1/40 = 0.0250000000000000010000000000000000000000000000000000000000000000000000000000000000
1/41 = 0.0243902439024390250000000000000000000000000000000000000000000000000000000000000000
1/42 = 0.0238095238095238080000000000000000000000000000000000000000000000000000000000000000
1/43 = 0.0232558139534883720000000000000000000000000000000000000000000000000000000000000000
1/44 = 0.0227272727272727280000000000000000000000000000000000000000000000000000000000000000
1/45 = 0.0222222222222222230000000000000000000000000000000000000000000000000000000000000000
1/46 = 0.0217391304347826080000000000000000000000000000000000000000000000000000000000000000
1/47 = 0.0212765957446808510000000000000000000000000000000000000000000000000000000000000000
1/48 = 0.0208333333333333320000000000000000000000000000000000000000000000000000000000000000
1/49 = 0.0204081632653061210000000000000000000000000000000000000000000000000000000000000000

1/50 = 0.020000000000000000000000000000000000000000000000000000000000000000
Миниатюры
Вычислить и напечатать обратные целых чисел  
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
02.12.2011, 14:28     Вычислить и напечатать обратные целых чисел #3
Цитата Сообщение от azhankuaku Посмотреть сообщение
Вычислить и напечатать обратные целых чисел от 2 до 51 со 100 цифрами после "."
Найди период, как здесь
Перевести простую пробь в десятичную
А дальше все просто
-=ЮрА=-
Заблокирован
Автор FAQ
02.12.2011, 14:52     Вычислить и напечатать обратные целых чисел #4
Байт, где период у данной дроби???
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
1/43
или этой
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
1/49
- не все иррациональные дроби периодичны!

Добавлено через 1 минуту
azhankuaku, подумав немного всё же хочу попробавать продвинутую "нубскую" версию, уже модернезирую код из поста 2
silent_1991
02.12.2011, 15:10
  #5

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
не все иррациональные дроби периодичны!
Я вам куда больше скажу - ни одно иррациональное число не является периодическим

-=ЮрА=-
Заблокирован
Автор FAQ
02.12.2011, 15:28     Вычислить и напечатать обратные целых чисел #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
попробавать продвинутую "нубскую" версию, уже модернезирую код из поста 2
azhankuaku, Я доделал - и никаких malloc-ов динамической памяти и прочей х*ени!
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
 
string irrational_div(int val, int div, int precision)
{
    string str;
    str += (char)('0' + val / div);
    str += ".";
    for(int i = 0; i < precision; i++)
    {
        val *= 10;
        str += (char)('0' + val / div);
        val = val % div;
    }
    return str;
}
 
int main()
{
    cout<<"Enter interval [a;b]\n";
    cout<<"a = ";int a;cin>>a;
    cout<<"b = ";int b;cin>>b;
    cout<<"Enter precision : ";
    int precision;cin>>precision;
    ofstream ofs("div.txt");
    for(int i = a; i <= b; i++)
    {
        if(ofs)
            ofs<<"1/"<<setw(2)<<i<<" = "
               <<irrational_div(1, i, 100)<<endl;
        cout<<"1/"<<setw(2)<<i<<" = "
            <<irrational_div(1, i, 100)<<endl;
    }
    if(ofs)
        ofs.close();
    system("pause");
    return 0;
}
Вывод в файл (от 7-ми до 49)
1/ 7 = 0.1428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428
развернуть
1/ 8 = 0.1250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1/ 9 = 0.1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1/10 = 0.1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1/11 = 0.0909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909
1/12 = 0.0833333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
1/13 = 0.0769230769230769230769230769230769230769230769230769230769230769230769230769230769230769230769230769
1/14 = 0.0714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714
1/15 = 0.0666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
1/16 = 0.0625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1/17 = 0.0588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588
1/18 = 0.0555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
1/19 = 0.0526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789
1/20 = 0.0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1/21 = 0.0476190476190476190476190476190476190476190476190476190476190476190476190476190476190476190476190476
1/22 = 0.0454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454
1/23 = 0.0434782608695652173913043478260869565217391304347826086956521739130434782608695652173913043478260869
1/24 = 0.0416666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
1/25 = 0.0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1/26 = 0.0384615384615384615384615384615384615384615384615384615384615384615384615384615384615384615384615384
1/27 = 0.0370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370
1/28 = 0.0357142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857
1/29 = 0.0344827586206896551724137931034482758620689655172413793103448275862068965517241379310344827586206896
1/30 = 0.0333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
1/31 = 0.0322580645161290322580645161290322580645161290322580645161290322580645161290322580645161290322580645
1/32 = 0.0312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1/33 = 0.0303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303
1/34 = 0.0294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294
1/35 = 0.0285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285
1/36 = 0.0277777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
1/37 = 0.0270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270
1/38 = 0.0263157894736842105263157894736842105263157894736842105263157894736842105263157894736842105263157894
1/39 = 0.0256410256410256410256410256410256410256410256410256410256410256410256410256410256410256410256410256
1/40 = 0.0250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1/41 = 0.0243902439024390243902439024390243902439024390243902439024390243902439024390243902439024390243902439
1/42 = 0.0238095238095238095238095238095238095238095238095238095238095238095238095238095238095238095238095238
1/43 = 0.0232558139534883720930232558139534883720930232558139534883720930232558139534883720930232558139534883
1/44 = 0.0227272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727
1/45 = 0.0222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
1/46 = 0.0217391304347826086956521739130434782608695652173913043478260869565217391304347826086956521739130434
1/47 = 0.0212765957446808510638297872340425531914893617021276595744680851063829787234042553191489361702127659
1/48 = 0.0208333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333

1/49 = 0.0204081632653061224489795918367346938775510204081632653061224489795918367346938775510204081632653061
Миниатюры
Вычислить и напечатать обратные целых чисел  
golatin
259 / 216 / 38
Регистрация: 12.10.2011
Сообщений: 311
Завершенные тесты: 1
02.12.2011, 15:33     Вычислить и напечатать обратные целых чисел #7
1/43=0,(023255813953488372093)
1/49=0,(020408163265306122448979591836734693877551)
-=ЮрА=-
Заблокирован
Автор FAQ
02.12.2011, 15:37     Вычислить и напечатать обратные целых чисел #8
golatin, лучше см алгоритм...
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
02.12.2011, 15:47     Вычислить и напечатать обратные целых чисел #9
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
не все иррациональные дроби периодичны!
А где ты увидел иррациональные?
Но твое утверждение верно.
Как и утверждение silent_1991. Даже, если дозволено сравнивать верные утверждение, его утверждение вернее
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
и никаких malloc-ов динамической памяти и прочей х*ени!
Обижаешь! Все-таки та программка решает несколько иную, могу предположить, более сложную задачу.

Отдельное спасибо golatin, не поленился человек! Или это все-таки программкой посчитано?
-=ЮрА=-
Заблокирован
Автор FAQ
02.12.2011, 16:23     Вычислить и напечатать обратные целых чисел #10

Не по теме:

Байт, период можно уже будет вычислять посредством методов std::string как по мне изящней, впрочем это дело вкуса...



Цитата Сообщение от silent_1991 Посмотреть сообщение
Я вам куда больше скажу - ни одно иррациональное число не является периодическим
- я говорил о дроби а не числе...
1/47 = 0,(0212765957446808510638297872340425531914893617)

Добавлено через 9 минут
Как оказалось период иррациональной дроби равен по знакам заначению делителя
Например период:
1/67 = 0,(014925373134328358208955223880597014925373134328358208955223880597)
оказалось 67 цифр.
Так что забираю слова о непериодичности иррациональных дробей - получается что все иррациональные дроби периодичны их период определяется значением делителя.
Хмм ещё бы кроме банального подсчёта доказать выкладками...
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.12.2011, 16:27     Вычислить и напечатать обратные целых чисел #11

Не по теме:

-=ЮрА=-, хорошо, тогда так: с помощью бесконечной непериодической дроби может быть представлено только иррациональное число. Такую дробь, возможно, с некоторой натяжкой, можно назвать "иррациональной". И никакую другую дробь, особенно если речь идёт о периоде.
Суть в том, что в вашей предыдущей фразе слово "иррациональные" лишнее. Если его оттуда убрать - всё встанет на свои места.



Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
период иррациональной дроби

Откуда вы этот термин выкопали? С чего вы взяли, что дробь 1/67, кхм... "иррациональная"?

Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
02.12.2011, 16:35     Вычислить и напечатать обратные целых чисел #12
-=ЮрА=-, У меня закрались сомнения, а знаете ли вы, что такое рациональное и иррациональное число?
Было бы приятно услышать от вас определение.
-=ЮрА=-
Заблокирован
Автор FAQ
02.12.2011, 16:56     Вычислить и напечатать обратные целых чисел #13

Не по теме:

Байт, лично Вам скажу - напишите сначало свой код а потом делайте замечания. В топике выложили код другого человека и ещё что то хотите, я сейчас готовлю ответ silent_1991, потом и вам отвечу если будет время...



Добавлено через 14 минут
Цитата Сообщение от silent_1991 Посмотреть сообщение
"иррациональная"
- по этому поводу отвечаю - у меня имелось неверное представление об иррациональной дроби - это дробъ вида sin(x)/x^2
Т.е не многочлен на многочлен как говориться в определении.

Идём далле
Цитата Сообщение от silent_1991 Посмотреть сообщение
с помощью бесконечной непериодической дроби может быть представлено только иррациональное число.
- оно может быть представлено ссумой правильных и неправильных дробей(например в Вики расписано за Рациональное приближение Пи), которые в свою очереь по отдельности имеют период причём он укладывается в приславутые
Цитата Сообщение от azhankuaku Посмотреть сообщение
100 цифр после
запятой. Так что любое отношение m/n где m и n целые иммет период длинна которого определяется значением n.
Вначале погорячился сказав что не у всякого m/n есть период (всё-таки период в 67 и более знаков ещё найти надо)!

Теперь у меня вопрос - отношение этой всей х*ени с иррациональностью к заданию?Я что неверный алгоритм привёл или здесь экзамен по математике???!
silent_1991
02.12.2011, 17:01
  #14

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
приближение
- ключевое слово.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
100 цифр после запятой
Все мои посты были написаны с точки зрения математики, а не точности представления чисел в компьютере и погрешности при сравнении.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Я что неверный алгоритм привёл
Всего лишь неверные термины, которые вводят людей в заблуждение.

Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
02.12.2011, 17:18     Вычислить и напечатать обратные целых чисел #15
-=ЮрА=-, Лично мне с Вами все понятно.
Желаю удачи!
golatin
259 / 216 / 38
Регистрация: 12.10.2011
Сообщений: 311
Завершенные тесты: 1
02.12.2011, 18:06     Вычислить и напечатать обратные целых чисел #16
Закрыть тему
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def delenie(n,m):
    print "n=%s m=%s"%(n,m)
    result=[]
    stack=[]
    result.append(str(n/m))
    n=10*(n%m)
    result.append(",")
    while(1):
        stack.append(n)
        result.append(str(n/m))
        n=10*(n%m)
        if n in stack:
            result.insert(result.index(",")+1+stack.index(n),"(")
            result.insert((len(result)),")")
            break
        
    print "".join(result)
Python
1
2
3
4
>>> delenie(55,34600)
n=55 m=34600
0,001(5895953757225433526011560693641618497109826)
>>>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2011, 22:21     Вычислить и напечатать обратные целых чисел
Еще ссылки по теме:

C++ Вычислить и напечатать факториал для всех нат. чисел до n
C++ Дан двумерный массив целых чисел. Вычислить количество четных чисел среди элементов, встречающихся в массиве ровно 3 раза
C++ Вычислить и напечатать среднее значение всех введённых чисел

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

Или воспользуйтесь поиском по форуму:
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
02.12.2011, 22:21     Вычислить и напечатать обратные целых чисел #17
golatin, Увы, я с этим семейством удавов не знаком, но вам я верю
Yandex
Объявления
02.12.2011, 22:21     Вычислить и напечатать обратные целых чисел
Ответ Создать тему
Опции темы

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