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

Написать программу для вычисления СЛАУ методом простой итерации с использованием динамических массивов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построить таблицу истинности http://www.cyberforum.ru/cpp-beginners/thread1143829.html
Здравствуйте! В принципе задача фигня, единственное с чем у меня загвоздка, это в том что в выражении могут быть скобки, следовательно считать все по очереди нельзя, может есть у кого как распарсить...
C++ Посодействуйте в доработке программы с функциями-шаблонами Для работы с двумерными массивами арифметических типов данных разработать шаблоны ввода и вывода массива, а также шаблон для решения задачи: - Подсчитать количество элементов, не попадающих в... http://www.cyberforum.ru/cpp-beginners/thread1143820.html
Существует ли генератор кода С++? C++
Всем привет! Стало интересно следующее: существует ли генератор кода для С++? То есть я соединяю некие концепции какими-нибудь стрелочками, определяя их взаимосвязи, нажимаю кнопочку и...
Решение диф уравнений 2-ого порядка C++
Какие есть алгоритмы для решения диф уравнений 2-ого порядка, программно разумеется. И еще надо чтобы алгоритм поддавался распараллеливанию с помощью openMP. А то в гугле ни одного примера найти не...
C++ Перегрузка оператора << http://www.cyberforum.ru/cpp-beginners/thread1143803.html
Доброе время суток! Возникло осложнение с лабой. Нужно перегрузить оператор << так, чтобы при помощи него можно было копировать информацию с одного потока, в другой, связанных с файлом.С чего начать,...
C++ Посоветуйте литературу Здравствуйте, пользователи cyberforum.ru. Искал в интернете вообщем не нашел. Вопрос, дайте мне сборник литературы, чтобы я мог выучить язык программирования, и писал на нем, как говорил на... подробнее

Показать сообщение отдельно
andreyananas
22 / 22 / 9
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
16.04.2014, 07:51  [ТС]
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
#include <iostream>
#include <windows.h>
#include <math.h>
 
using namespace std;
 
int main()
{
    SetConsoleOutputCP(1251);
    char con;
    int n;
    double delta=0.0, eps=0.0;
    do
    {
        cout << " Введите количество неизвестных: " << endl;
        cin >> n;
        cout << " Введите точность: " << endl;
        cin >> eps;
 
        float **a = new float*[n];//выдиление динам. памяти для массива
        for(int i=0; i<n; i++)
        {
            a[i] = new float[n];
        }
        float *b = new float[n];// выдиление памяти для свободных членов
        float *x = new float[n];
        float *xp = new float[n];
 
        for(int i=0; i<n; i++)// ввод данных
        {
            for(int j=0; j<n; j++)
            {
                cout << " Введите " << (j+1) << "й коэффициент " << (i+1) << "го уравнения: ";
                cin >> a[i][j];
            }
            cout << " Введите " << (i+1) << "й свободный член " << (i+1) << "го уравнения: ";
            cin >> b[i];
        }
 
        for(int i=0; i<n; i++)// вывод СЛАУ
        {
            cout << " | ";
            for(int j=0; j<n; j++)
            {
                cout << a[i][j] << "*x(" << (i+1) << ") + " ;
            }
            cout << " = " << b[i];
            cout << endl;
        }
 
        do
        {
            for(int i=0; i<n; i++) // НЕ РАБОТАЕТ(((
            {
                for(int j=1; j<n; j++)
                {
                    if(j!=i)
                    {
                        xp[i]=b[i]/a[i][i]; // начальное значение Х
                        x[i]=(b[i]-(a[i][j]*xp[j]))/a[i][i];
                        if(fabs(x[i]-xp[i])>delta)
                            delta=fabs(x[i]-xp[i]);
                    }
                }
            }
        }
        while(delta>eps);
 
        for(int i=0; i<n; i++)// вывод результата
        {
            cout << "  x(" << i << ") = " << x[i] << endl;
        }
 
 
 
 
        for(int i=0; i<n; i++)// освобождение выдиленой памяти
        {
               delete [] a[i];
        }
        delete [] a;
        delete [] b;
        delete [] x;
        delete [] xp;
        cout << " Для продолжения программы, введите - 'y'" << endl;
        cout << " для завершения, введите любой символ..." << endl;
        cin >> con;
    }
    while(con=='y');
    return 0;
}
Вот мои наработки, выдает не правильный результат(((

Добавлено через 3 часа 24 минуты
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
#include <iostream>
#include <windows.h>
#include <math.h>
 
using namespace std;
 
int main()
{
    SetConsoleOutputCP(1251);
    char con;
    int n;
    double delta=0.0, eps=0.0;
    do
    {
        cout << " Введите количество неизвестных: " << endl;
        cin >> n;
        cout << " Введите точность: " << endl;
        cin >> eps;
 
        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];
        double *xp = new double[n];
 
        for(int i=0; i<n; i++)// ввод данных
        {
            for(int j=0; j<n; j++)
            {
                cout << " Введите " << (j+1) << "й коэффициент " << (i+1) << "го уравнения: ";
                cin >> a[i][j];
            }
            cout << " Введите " << (i+1) << "й свободный член " << (i+1) << "го уравнения: ";
            cin >> b[i];
        }
 
        for(int i=0; i<n; i++)// вывод СЛАУ
        {
            cout << " | ";
            for(int j=0; j<n; j++)
            {
                cout << a[i][j] << "*x(" << (i+1) << ") + " ;
            }
            cout << " = " << b[i];
            cout << endl;
        }
 
        do
        {
            for(int i=0; i<n; i++) // НЕ РАБОТАЕТ(((
            {
                xp[i]=b[i]/a[i][i]; // начальное значение Х
                for(int j=0; j<n; j++)
                {
                    if(j!=i)
                    {
                        x[i]=(b[i]-(a[i][j]*xp[j]))/a[i][i];
                    }
                }
                delta=fabs(xp[0]-x[0]);
                if(fabs(xp[i]-x[i])>delta)
                    delta=fabs(xp[i]-x[i]);
                xp[i]=x[i];
            }
        }
        while(delta>eps);
 
        for(int i=0; i<n; i++)// вывод результата
        {
            cout << "  x(" << i << ") = " << x[i] << endl;
        }
 
 
 
 
        for(int i=0; i<n; i++)// освобождение выдиленой памяти
        {
               delete [] a[i];
        }
        delete [] a;
        delete [] b;
        delete [] x;
        delete [] xp;
        cout << " Для продолжения программы, введите - 'y'" << endl;
        cout << " для завершения, введите любой символ..." << endl;
        cin >> con;
    }
    while(con=='y');
    return 0;
}
Вот еще немного подправил.
Но теперь выбивает в ответе inf

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