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

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

Войти
Регистрация
Восстановить пароль
 
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
#1

Запись и считывание в/из ФАЙЛА - C++

27.05.2014, 23:07. Просмотров 431. Ответов 7
Метки нет (Все метки)

Есть программа По вычислению СЛАУ методом Гаусса.
Помогите сделать так, что бы можно было считывать и записывать в ФАЙЛ: СЛАУ и его решения.
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
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <math.h>
 
using namespace std;
 
void Show(int, double*);
void PryamojHod(int, double**, double*);
void ObratnyHod(int, double**, double*, double*);
 
int main()
{
    SetConsoleOutputCP(1251);
    int n;
    cout << "\n Введите количество переменных: ";
    while(!(cin >> n) || (cin.peek() != '\n') || (n <=0))
    {
        cin.clear();
        while(cin.get() != '\n');
        cout << "\n\a Ошибка! \n для новой попытки, нажмите любую кнопку...";
        getch();
        system("cls");
        cout << "\n Введите количество переменных: ";
    }
 
    // выдиляем память под матрицу А и векторы В и Х
    double **a = new double *[n];
    for (int i = 0; i < n; i++)
        a[i] = new double [n];
    double *b = new double [n];
    double *x = new double [n];
 
    // ввод данных
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            cout << " Введите " << (j+1) << "й коэффициент " << (i+1) << "го уравнения: ";
            while(!(cin >> a[i][j]) || (cin.peek() != '\n'))
            {
                cin.clear();
                while(cin.get() != '\n');
                cout << "\n Ошибка ввода!\n для новой попытки, нажмите любую кнопку...";
                getch();
                system("cls");
                cout << " Введите " << (j+1) << "й коэффициент " << (i+1) << "го уравнения: ";
            }
        }
        cout << " Введите " << (i+1) << "й свободный член " << (i+1) << "го уравнения: ";
        while(!(cin >> b[i]) || (cin.peek() != '\n'))
        {
            cin.clear();
            while(cin.get() != '\n');
            cout << "\n Ошибка ввода!\n для новой попытки, нажмите любую кнопку...";
            getch();
            system("cls");
            cout << " Введите " << (i+1) << "й свободный член " << (i+1) << "го уравнения: ";
        }
    }
 
    // вывод СЛАУ
    cout << "\n Матрица А: " << endl;
    for(int i = 0; i < n; i++)
        Show(n, a[i]);
    cout << "\n Вектор B: " << endl;
    Show(n, b);
 
 
    PryamojHod(n, a, b);
    ObratnyHod(n, a, b, x);
 
    cout << "\n Результат: " << endl;
    Show(n, x);
 
    // освобождаем память
    for (int i = 0; i < n; i++)
        delete [] a[i];
    delete [] a;
    delete [] b;
    delete [] x;
 
    return 0;
}
 
void Show(int n, double *vec)
{
    for(int i = 0; i < n; i++)
    {
        cout << "\t" << vec[i];
    }
    cout << endl;
}
 
void PryamojHod(int n, double **a, double *b)
{
    double v = 0;
    for(int k(0), im; k < n; k++)
    {
        im = k;
        for(int i = k+1; i < n; i++)
        {
            if(fabs(a[im][k]) < fabs(a[i][k]))
                im = i;
        }
        if(im != k)
        {
            for(int j(0); j < n; j++)
            {
                v = a[im][j];
                a[im][j] = a[k][j];
                a[k][j] = v;
            }
            v = b[im];
            b[im] = b[k];
            b[k] = v;
        }
        for(int i = k + 1; i < n; i++)
        {
            v = 1.0*a[i][k]/a[k][k];
            a[i][k] = 0;
            b[i] = b[i]-v*b[k];
            if(v != 0)
            {
                for(int j = k + 1; j < n; j++)
                    a[i][j] = a[i][j]-v*a[k][j];
            }
        }
    }
}
 
void ObratnyHod(int n, double **a, double *b, double *x)
{
    double s = 0;
    x[n-1]=1.0*b[n-1]/a[n-1][n-1];
    for(int i = n - 2; i >= 0; i--)
    {
        s = 0;
        for(int j = i + 1; j < n; j++)
        {
            s=s+a[i][j]*x[j];
        }
        x[i]=1.0*(b[i]-s)/a[i][i];
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2014, 23:07     Запись и считывание в/из ФАЙЛА
Посмотрите здесь:

C++ Запись и считывание из файла
Считывание чисел из файла и запись их в массив C++
C++ Считывание и запись файла блоками
C++ Считывание данных из файла и запись в динамические массивы
Считывание из файла трехмерного массива и запись C++
Запись и считывание из бинарного файла C++
Считывание данных из файла и запись результатов в файл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gelo123321
21 / 21 / 4
Регистрация: 05.01.2012
Сообщений: 279
Завершенные тесты: 1
27.05.2014, 23:28     Запись и считывание в/из ФАЙЛА #2
andreyananas
#include <fstream>

ifstream save_file("file1.txt");
save_file<<Записываем нужные нам данные.;

ofstream read_file("file1.txt");
read_file>>Выводим значения куда нужно.;
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
27.05.2014, 23:45  [ТС]     Запись и считывание в/из ФАЙЛА #3
Цитата Сообщение от Gelo123321 Посмотреть сообщение
#include <fstream>
ifstream save_file("file1.txt");
save_file<<Записываем нужные нам данные.;
ofstream read_file("file1.txt");
read_file>>Выводим значения куда нужно.;
Если я записал в файл СЛАУ и его решение и так три раза.
Как мне в следующий раз считать с файла только СЛАУ?!
Gelo123321
21 / 21 / 4
Регистрация: 05.01.2012
Сообщений: 279
Завершенные тесты: 1
28.05.2014, 00:06     Запись и считывание в/из ФАЙЛА #4
andreyananas,
С помощью оператора get можно считывать с файла каждый символ, и если имеется например двоеточие ":", тогда, то, что после него выводить.
C++
1
2
ifstream file1("file1.txt");
while(!file1.eof()) if(file1.get()==':') {// }
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
28.05.2014, 10:24  [ТС]     Запись и считывание в/из ФАЙЛА #5
Можешь показать на каком то примере?

Добавлено через 9 часов 2 минуты
ап хелп плс
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
28.05.2014, 11:59     Запись и считывание в/из ФАЙЛА #6
в чём проблема? как ты изменил программу для работы с файлами?
покажи пример своего файла с уравнением?
P.S. что такое СЛАУ?
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
28.05.2014, 12:23  [ТС]     Запись и считывание в/из ФАЙЛА #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
в чём проблема? как ты изменил программу для работы с файлами?
еще никак

Добавлено через 27 секунд
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
что такое СЛАУ?
Система линейных алгебраических уравнений
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2014, 12:30     Запись и считывание в/из ФАЙЛА
Еще ссылки по теме:

Построчная запись и считывание из файла C++
C++ Запись и считывание двух фраз из файла по условию
Считывание строк из файла и запись в разные векторы C++
C++ Считывание\запись int из файла\в файл
C++ Запись и считывание объектов класса в/из файла

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
28.05.2014, 12:30     Запись и считывание в/из ФАЙЛА #8
Цитата Сообщение от andreyananas Посмотреть сообщение
еще никак
Ну дык в чём же вопрос тогда? Изменяй! покажи, какой текст из файла читаешь. Я покажу, где ошибка, как прочитать.
Yandex
Объявления
28.05.2014, 12:30     Запись и считывание в/из ФАЙЛА
Ответ Создать тему
Опции темы

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