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

Ввод из файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Запись и чтения из файла http://www.cyberforum.ru/cpp-beginners/thread1120076.html
Здравствуйте уважаемые форумчане, недавно начал изучать c++ и дошел, до записи и чтения из файла Вроде получилось и читать и записывать но столкнулся с несколькими проблемами: -Записывать и читать я могу на русском языке,но в файле пишутся кракозябры. -Также в файл записывается первое слово вместо всего того что я записал. Инклуды #define _CRT_SECURE_NO_DEPRECATE #pragma once #include...
C++ Комплексные числа. Реализовать класс и математические операции Здравствуйте. Тема-комплексные числа. Надо: реализовать класс, следом надо реализовать математические операции, а именно: (+,-,*,Arg, ||);я реализовал класс complex; теперь не могу понять, как реализовать математические операции. Подскажите, пожалуйста. Вот начало программы (реализация класса и прога выводит на экран число в виде a+i*b): #include "stdafx.h" #include <iostream> using... http://www.cyberforum.ru/cpp-beginners/thread1120064.html
Функция не принимает параметр C++
Есть структура: struct tovar { char name_prod; char country_prod; int number_prod; }; Есть программа: char program_search_country()
C++ Замена "," в файле на "."
Доброго времени суток!! Возник вопрос , как заменить запятую в файле на точку? Просто vector<double> оказывается не поддерживает запятую))
C++ вставка кода на ассемблере http://www.cyberforum.ru/cpp-beginners/thread1120030.html
РЕБЯЯЯЯЯЯТ:(Может кто-нибудь помочь?:( Необходимо,написать программу на с++ с вставкой кода на ассемблере.. в одномерном массиве, состоящем из n элементов, вычислить: сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
C++ Количество символов в строке String.h class String { public: String(); ~String(); void AddText(); int Whole(); private: string textline; подробнее

Показать сообщение отдельно
mark12552
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 23

Ввод из файла - C++

15.03.2014, 20:27. Просмотров 167. Ответов 0
Метки (Все метки)

Здравствуйте, мне нужна помощь. Есть программа решения системы линейных уравнений методом Гаусса, нужно сделать так что бы данные матрицы А и вектора В вводились из файла.
Вот моя программа, скажите как правильно записать это все.
Код программы:
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
#include <iostream>
#include <math.h>
#include <iomanip>
#include <fstream>
using namespace std;
int SLAU(double **matrica_a,  int n, double *massiv_b, double *x)
// Функция SLAU возвращает значение типа int:
// 0, если решение найдено, -1 – если система имеет
// бесконечное множество 
// решений, -2 – если система не имеет решений.
// Формальные параметры функции: n – размерность системы,
// matrica_a –  матрица коэффициентов СЛАУ, massiv_b –
// вектор правых частей, x – решение СЛАУ,
// a, b,x передаются как указатели.
{
     int i,j,k,r;
    double c,M,max,s;
// Матрица a – копия матрицы коэффициентов, 
//массив b – копия вектора  правых частей.
    double **a, *b; 
// Выделение памяти для a и b.
a=new double *[n];
for(i=0;i<n;i++)
a[i]=new double[n];
b=new double [n];
// В a записываем копию матрицы коэффициентов, в b копию
// вектора правых частей.
     for(i=0;i<n;i++)
         for(j=0;j<n;j++)
            a[i][j]=matrica_a[i][j];
     for(i=0;i<n;i++)
         b[i]=massiv_b[i];
// Прямой ход метода Гаусса: приводим матрицу a 
//(копию матрицы коэффициентов СЛАУ) к диагональному виду.
        for(k=0;k<n;k++)
    {
// Поиск максимального по модулю элемента в k-м столбце.
        max=fabs(a[k][k]);
        r=k;
        for(i=k+1;i<n;i++)
            if (fabs(a[i][k])>max)
            {
                max=fabs(a[i][k]);
                r=i;
            }
// Меняем местами k-ю и r-ю (строку, где находится 
//максимальный по модулю элемент) строки.
        for(j=0;j<n;j++)
        {
            c=a[k][j];
            a[k][j]=a[r][j];
            a[r][j]=c;
        }
        c=b[k];
        b[k]=b[r];
        b[r]=c;
// Приведение матрицы к диагональному виду.
        for(i=k+1;i<n;i++)
        {
            for(M=a[i][k]/a[k][k],j=k;j<n;j++)
                a[i][j]-=M*a[k][j];
            b[i]-=M*b[k];
        }
    }
// Обратный ход метода Гаусса.
// Если последний диагональный элемент равен 0 и 
    if (a[n-1][n-1]==0)
// если последний коэффициент вектора свободных членов
// равен 0,
        if(b[n-1]==0)
// то система имеет бесконечное множество решений
            return -1;
// если последний коэффициент вектора свободных членов не
// равен 0, то система решений не имеет.
        else return -2;
    else
// Если последний диагональный элемент не равен 0, то 
//начинается обратный ход метода Гаусса.
    {
        for(i=n-1;i>=0;i--)
        {
            for(s=0,j=i+1;j<n;j++)
                s+=a[i][j]*x[j];
            x[i]=(b[i]-s)/a[i][i];
        }
        return 0;
    }   
}
 
int **minus_m(int **A, int **B, int N, int M)
{int i,j;
 
int **temp;
 
temp=new int *[N];
for(i=0;i<N;i++)
temp[i]=new int [M];
 
for(i=0;i<N;i++)
for(j=0;j<M;j++)
temp[i][j]=A[i][j]-B[i][j]; 
 
return temp;
}
 
int **product_m(int **A, int **B, int N, int M, int L)
{
    int i,j,k;
 
int **temp;
temp=new int *[N];
for(i=0;i<N;i++)
temp[i]=new int [L];
for(i=0;i<N;i++)
for(j=0;j<L;j++) 
for(temp[i][j]=k=0;k<M;k++)
temp[i][j]+=A[i][k]*B[k][j];
return temp;
}
 
 
int main()
{
 
int result,i,j,N;
double **a, *b, *x, **H,S,**E;
 
// Ввод размерности системы.
setlocale (LC_CTYPE, "Russian");
cout<<"N=";
cin>>N;
// Выделение памяти для матрицы правых частей и вектора
// свободных членов.
a=new double *[N];
for(i=0;i<N;i++)
a[i]=new double[N];
b=new double [N];
x=new double [N];
H=new double *[N];
for(i=0; i<N; i++)
H[i]=new double [N];
// Ввод матрицы правых частей и вектора свободных членов.
cout<<"Ввод матрицы A"<<endl;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
ifstream F;
F.open("D:\\test.txt", ios::in);
if (F)              //Если открытие файла
                            //прошло корректно, то
    {
        while (!F.eof())        //Организован цикл,
                            //выполнение цикла
                            //прервется, когда ,будет
                            //достигнут конца файла.
        {
                F>>a[i][j];     //Чтение очередного значения
                setlocale (LC_CTYPE, "Russian");            //из потока f в переменную a.
                //Вывод значения переменной a 
                    //Увеличение количества
                            //считанных чисел.
        }
        F.close();  
        }
    else cout<<"File not found"<<endl;}
cout<<"Ввод вектора B"<<endl;
for(i=0;i<N;i++)
cin>>b[i];
 
result=SLAU(a,N,b,x);
if (result==0)
{
// Вывод массива решения.
cout<<"Massiv X"<<endl;
for(i=0;i<N;i++)
cout<<x[i]<<"\t";
cout<<endl;
}
else if (result==-1)
cout<<"Бесконечное множество решений\n";
else if (result==-2)
cout<<"Нет решений\n";
if (result==0)
{
 
E=new double *[N];
    for (i=0; i<N; i++)
    E[i]=new double [N];
    for(i=0;i<N;i++)
    for(j=0;j<N;j++)
    {
    if(i==j) E[i][j]=1;
    else E[i][j]=0;
}
    cout<<"Matrica E"<<endl;
    
for(i=0;i<N;i++) 
{
for(j=0;j<N;j++) 
cout<<E[i][j]<<"\t"; 
cout<<endl;}
 
for(i=0;i<N;i++)
for(S=j=0;j<N;j++)
{
S=x[i]*x[j];
H[i][j]=E[i][j]-S;}
cout<<"Massiv H"<<endl;
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
cout<<H[i][j]<<"\t";
cout<<endl;}
}}
Матрица А 4 на 4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru