Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 29.08.2016
Сообщений: 3

Файловое чтение и запись данных для решения СЛАУ

10.11.2016, 19:06. Показов 1323. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,
данная программа решает СЛАУ методом Гаусса, но каждый раз, при новом запуске программы, матрица коэффициентов и вектор свободных членов заполняются рандомными числами.
Подскажите пожалуйста, как сделать так, чтобы рандомная матрица записывалась в файл и далее обрабатывалась из файла.
Это необходимо для того, чтобы запустить несколько раз программу для одних данных, с разным количеством нитей и сравнить время работы программы.
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctime>
#include <omp.h>
using namespace std;
 
int main() 
 
{
    //srand(time(0));
    //unsigned int start_time =  clock(); // начальное время
    double start_time, end_time, tick;
    start_time = omp_get_wtime();
    
 
 
    setlocale(LC_ALL,"Russian");
    int n=0;
    printf("Введите количество неизвестных\n");
    cin>>n;
    printf("Задайте матрицу коэффициентов\n");
//vstavka
//r(int i=0; i<n; i++)
//r(int j=0; j<m; j++)
   //mas[i][j] = 0+rand()%10;
 
//vstavka
 
 
 
 
    double ** A=new double*[n];
    //double ** L=new double*[n];
    for(int i=0;i<n;i++){
        A[i]=new double[n];
        //L[i]=new double[n];
        for(int j=0;j<n;j++){
        A[i][j] = 0+rand()%1000;
 
          //cin>>A[i][j];
        }
    }
    printf("Введите вектор свободных членов\n");
    double * B=new double[n];
    for(int i=0;i<n;i++){
      //cin>>B[i];
    B[i] = 0+rand()%1000;
    }
    //метод Гаусса
    //получаем верхнетреугольную матрицу
 
    for(int i=0;i<n-1;i++){
        omp_set_nested(1);
#pragma omp parallel num_threads(1) firstprivate(i)
        {
            int tid=omp_get_thread_num();
            int j=tid+i+1;
            double fix=A[j][i]/A[i][i];
            B[j]=B[j]-B[i]*fix;
#pragma omp parallel num_threads(1)
            {
                int k=omp_get_thread_num();
                k=k+i;
                A[j][k]=A[j][k]-A[i][k]*fix;
            }
        }
 
    }
 
    //вывод преобразованной расширенной матрицы
    printf("Матрица U\n");
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            printf("%f ",A[i][j]);
        }
        printf("  | %f \n",B[i]);
 
    }
 
    //определяем и выводим вектор решений
    double * X=new double[n];
//#pragma omp parallel num_threads(1) firstprivate(1) shared(count,X,A,B)
    {
#pragma omp for schedule(static,1)
        for(int i=n-1;i>=0;i--){
            X[i]=B[i];
 
            for(int j=n-1;j>i;j--){
 
                X[i]=X[i]-A[i][j]*X[j];
            }
#pragma omp critical
            X[i]=X[i]/A[i][i];
            printf("%f\n",X[i]);
        }
 
    }
    //system("pause");
    //unsigned int end_time = clock(); // конечное время
    //unsigned int search_time = end_time - start_time; // искомое время
 
    //cout << "vremya=" << search_time << endl;
    end_time = omp_get_wtime();
    tick = omp_get_wtick();
    printf("Время  %lf\n", end_time-start_time);
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.11.2016, 19:06
Ответы с готовыми решениями:

Строки конечной длины в полях структуры. Файловое чтение-запись
Переделываю под QT еще Дельфевый вариант программы хранящей данные в т.н. типизированном файле (т.е. однотипные записи, должны читаться...

Чтение текстового файла. Парсинг его данных. Создание исключений для данных. Запись свойств объектов в файл
Проблема такая. Есть файл data.txt. В нем например какие-то данные. Landon Donovan, 150, A Hulk Hogan , 100, M Duke Nukem, 50,...

Метод для решения СЛАУ
Вообщем есть такая система на картинке. Нужно ее решить каким-либо способом, не важно. Пробовал решить через матричный метод, но...

2
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
11.11.2016, 10:17
Примерно так:
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
    int n;
    double ** A;
    double * B;
 
    int v;
    cout << "Прочитать из файла - 1, заполнить и записать в файл - 2): "
    cin << v;
    if (v == 1)
    {
        ifstream ifs("data.txt");
        ifs >> n;
        A=new double*[n];
        for(int i=0;i<n;i++)
        {
            A[i]=new double[n];
            for(int j=0;j<n;j++) ifs >> A[i][j];
        }
        B=new double[n];
        for(int i=0;i<n;i++) ifs >> B[i];
    }
    else if (v == 2)
    {
    ofstream ofs("data.txt")
    printf("Введите количество неизвестных\n");
    cin>>n;
    ofs << n << endl;
 
    A=new double*[n];
    for(int i=0;i<n;i++){
        A[i]=new double[n];
        for(int j=0;j<n;j++){
        A[i][j] = 0+rand()%1000;
        ofs << A[i][j] << endl;
        }
    }
    B=new double[n];
    for(int i=0;i<n;i++)
    {
        B[i] = 0+rand()%1000;
        ofs << B[i] << endl;
    }
 
    }
0
0 / 0 / 0
Регистрация: 29.08.2016
Сообщений: 3
17.11.2016, 20:17  [ТС]
Большое спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.11.2016, 20:17
Помогаю со студенческими работами здесь

Программа для решения СЛАУ
Здравствуйте,в общем, моя программа решает СЛАУ матричным методом, на основе библиотеки Matrixclass, программа вылетает из-за привышения...

Метод Гаусса для решения СЛАУ
Здравствуйте! У меня есть алгоритм решения СЛАУ методом Гаусса, но почему-то он не работает((( Я проверил промежуточные матрицы, все ОК! И...

доделать программу для решения СЛАУ
Ребят, помогите пожалуйста, есть программа для решения СЛАУ методом гаусса, но ту слау, которую необходимо решить мне по заданию она не...

Разработать м-файл для решения СЛАУ
1.17x_1+0.53x_2-0.84x_3=1.15; 0.64x_1-0.72x_2-0.43x_3=0.15; 0.32x_1+0.43x_2-0.93x_3=-0.48

Метод Холецкого для решения Слау
Ты не мог бы выложить программу?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru