1 / 1 / 0
Регистрация: 16.06.2016
Сообщений: 83
1

Сохранение крупных чисел в текстовый документ

04.04.2018, 00:08. Показов 1140. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток, уважаемые форумчане.

В общем, недавно начал разбираться в C++ и написал маленькую программку, которая рассчитывает вероятность банкротства по одной из logit-моделей. То есть по сути я вбиваю входные данные и получаю на выходе вероятность от 0 до 1. Также предусмотрено сохранение этих самых данных в txt документ. Проблема в том, что слишком крупные значения он сохраняет например как 1.28561e+06, мелкие соответственно как 2.85274e-38. И если с числами меньше 1 можно просто добавить условие, чтобы они приравнивались к 0, то с крупными как быть не знаю. Сам документ потом планировал прогнать через Deductor хотя бы, а он ожидаемо такую запись в числовую преобразовать не может. Есть у кого-нибудь на уме варианты решения проблемы?

Прилагаю код программы, консольное приложение.
Код программы
C++ (Qt)
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "stdafx.h"
#include "iostream"
#include "windows.h"
#include "fstream"
#include "string"
using namespace std;
 
int main()
{
    SetConsoleCP(1251); // Чтобы обеспечить адекватный ввод/вывод кириллицы
    SetConsoleOutputCP(1251);
    ofstream seans("Текущий сеанс.txt", ios_base::app); // Создание текстового документа с результатами
    seans << "Организация"<<"\t"<<"1250" << "\t" <<"1240" << "\t" <<"1600" << "\t" <<"2110" << "\t" <<"1200" << "\t" <<"1500" << "\t" <<"1400" << "\t" <<"1300" << "\t" <<"ЗУ"<<"\t"<<"ДБП"<<"\t"<<"Вероятность банкротства"<<"\n";
    cout << " Logit-модель Чессера для определения вероятности банкротства" << endl;
    cout << endl;
    char Ex = 'Y'; // Для возможности повторного запуска программы
    do {
        string firma; // Наименование организации
            cout << " Организация: ";
            getline(cin,firma);
            cout << endl;
        double a, b, c, d, e, f, g, h; // Строки отчетности
        double Zu, Dbp ; // Для определения величины чистых активов
            cout << " Строка 1250: ";
                cin >> a;
            cout << " Строка 1240: ";
                cin >> b;
            cout << " Строка 1600: ";
                cin >> c;
            cout << " Строка 2110: ";
                cin >> d;
            cout << " Строка 1200: ";
                cin >> e;
            cout << " Строка 1500: ";
                cin >> f;
            cout << " Строка 1400: ";
                cin >> g;
            cout << " Строка 1300: ";
                cin >> h;
            cout << endl;
            cout << " Задолженность учредителей по взносам в уставный капитал: ";
                cin >> Zu;
            cout << " Доходы будущих периодов (госпомощь, безвозмедно полученное имущество): ";
                cin >> Dbp;
        double ChA = (c - Zu) - (g + f - Dbp); // Величина чистых активов
        double x1, x2, x3, x4, x5, x6; // Промежуточные коэффициенты
            x1 = (a + b) / c;
            x2 = d / (a + b);
            x3 = (e - f) / c;
            x4 = (g + f) / c;
            x5 = h / ChA;
            x6 = (e - f) / d;
        double Z = -2.034 - 5.24*x1 + 0.0053*x2 - 6.6507*x3 + 4.4009*x4 - 0.0791*x5 - 0.102*x6; // Степень экспоненты
        double P = 1 / (1 + exp(-Z)); // Вероятность банкротства
            cout << endl;
            cout << " Вероятность банкротства: " << P << endl;
            cout << endl;
            cout << " В процентах: " << P * 100 << " %" << endl;
            cout << endl;
                if ( P > 0.8) // Условия для вывода заключения
                {
                    cout << " Критическое финансовое положение" << endl;
                }
                else if (P > 0.6 && P < 0.8)
                {
                    cout << " Предприятие на грани банкротства" << endl;
                }
                else if (P > 0.4 && P < 0.6)
                {
                    cout << " Удовлетворительное финансовое состояние" << endl;
                }
                else if (P > 0.2 && P < 0.4)
                {
                    cout << " Хороший уровень кредитоспособности предприятия" << endl;
                }
                else
                {
                    cout << " Отличное финансовое положение" << endl;
                }
            cout << endl;
            cout << " Провести новое определение (Y / Любая другая клавиша для выхода)?" << endl;
            cout << endl;
            cout << " "; // Пробел перед вводом команды пользователя
            cin >> Ex;
            cout << endl;
            seans << firma << "\t" << a << "\t" << b << "\t" << c << "\t" << d << "\t" << e << "\t" << f << "\t" << g << "\t" << h << "\t" << Zu << "\t" << Dbp << "\t" << P<<"\n";
            cin.get(); // Чтобы можно было работать с классом string после 1 прохода цикла
        } while (Ex == 'Y');
    return 0;
}

Всем заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2018, 00:08
Ответы с готовыми решениями:

Сохранение результатов в текстовый документ
Добрый день. Нужна помощь, в данный код нужно добавить возможность сохранения результатов в...

Не создается текстовый документ
Есть прога, которая генерирует пароль и должна эти пароли после каждой генерации записывать в...

Запись данных в Текстовый документ
Мне бы хотелось чтобы полученные данные в моём случаи выводиться ключ но я хочу сделать чтобы...

Запись данных из переменной в текстовый документ
Здравствуйте! подскажите как сделать запись в текстовый документ так что бы в текстовом документе...

6
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
04.04.2018, 00:15 2
Лучший ответ Сообщение было отмечено dZorro как решение

Решение

Цитата Сообщение от dZorro Посмотреть сообщение
Есть у кого-нибудь на уме варианты решения проблемы?
Манипуляторы вывода?)
1
1 / 1 / 0
Регистрация: 16.06.2016
Сообщений: 83
04.04.2018, 00:32  [ТС] 3
SuperKir, спасибо, попробую почитать про них и разобраться)
0
Диссидент
Эксперт C
27705 / 17321 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
04.04.2018, 00:50 4
dZorro, На крайняк, можно попробовать самому числа в текст преобразовывать. Это не сложно.
0
1 / 1 / 0
Регистрация: 16.06.2016
Сообщений: 83
04.04.2018, 00:52  [ТС] 5
Байт, но ведь раз уж дошло до написания программы, то стоит задуматься о том, чтобы сама программа все делала как надо, а участие пользователя в процессе было минимальным)
0
Диссидент
Эксперт C
27705 / 17321 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
04.04.2018, 00:55 6
Цитата Сообщение от dZorro Посмотреть сообщение
стоит задуматься о том, чтобы сама программа все делала как надо,
Дык, а я о чем? Это вы, ваша программа должна преобразовать. А пользователь-то и знать ничего не знает.
0
1 / 1 / 0
Регистрация: 16.06.2016
Сообщений: 83
04.04.2018, 04:25  [ТС] 7
Байт, ааа, я Вас неправильно понял значит. Прошу прощения. Мне главное, что здесь подсказали теперь уже два пути решения. Попробую один сначала, перейду к другому, если не получится ничего с ним. Я тут правда новичок совсем, из всех знаний только курс лекций по шарпу и делфи на первом курсе университета.

Добавлено через 3 часа 27 минут
Собственно, с помощью fixed и setprecision проблема была решена. Всем спасибо)
0
04.04.2018, 04:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2018, 04:25
Помогаю со студенческими работами здесь

Считывание, Сортировка и Запись массива в текстовый документ
Доброго времени суток! Очень прошу, напишите пожалуйста код программы, которая считывает уже...

Сохранить координаты фигур из picturebox в текстовый документ
РЕБЯТА!!! Не погу разобраться, как сохранить координаты фигур в picturebox так, что бы можно было...

Матрица через текстовый документ в Visual Studio 12
Подскажите пожалуйста, куда нужно перенести текстовый документ с матрицей. Переносил в корень...

Как записать элементы вектора в текстовый документ?
Как сделать так чтобы при включение программы текст в файле не стирался, а например добавлялся к...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru