Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Grayscope
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 2
1

Найти причины и способы исправления ошибки "Segmentation fault" в заданном коде

16.09.2016, 01:45. Просмотров 451. Ответов 2
Метки нет (Все метки)

Здравствуйте. С языком c++ и программировании в целом только знакомлюсь. Получил задание написать программу для решения СЛАУ методом Гаусса. В строке 104 ловлю segmentation fault. Подскажите, пожалуйста, как исправить.
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
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <locale>
#include <conio.h>
#include <stdio.h>
using namespace std;
 
int main()
{
    int i,j,n,m;
    float e=1.0e-7;
    setlocale(LC_ALL,"rus");
    //создание массива
    cout<<"число уравнений: ";
    cin>>n;
    cout<<"число переменных: ";
    cin>>m;
    m+=1;
 float **matrix = new float *[n];
         for (i=0; i<n; i++)
             matrix[i] = new float [m];
 
//инициализация массива
 
    for (i = 0; i<n; i++)
 
        for (j = 0; j<m; j++)
        {
            cout << "элемент " << "[" << i+1 << " , " << j+1 << "]: "  ;
 
            cin >> matrix[i][j];
        }
 
 //вывод массива
    cout << "matrix: " << endl;
      for (i=0; i<n; i++)
       {
          for (j=0; j<m; j++)
            cout << matrix[i][j] << " ";
        cout << endl;
       }
    cout << endl;
    //Метод Гаусса
    //Прямой ход
    float xx[m];
    for (i=1; i<n; i++)
            {
            j=i;
            int max=0;
            if (j<=n)//поиск максимального по модулю элемента в i-столбце
                {
                    if (max<abs(matrix[i][j]))
                        {
                            int k=j;
                            max=abs(matrix[i][j]);
                            j++;
                        }
                    else j++;
                }
            else
                {
                if(max<e)
                {
                    cout<<"Бесчисленное множество решений";
                    exit;
                }
                else//ведущий элемент не на глвной диагонали?
                 {
                    int k=j;
                    if(j!=k) 
                    {
                        for (j=i; i<n; n++)//меняем местами строки i и k
                        {
                            int c=matrix[k][j];
                            matrix[k][j]=matrix[i][j];
                            matrix[i][j]=c;
                        }
                    
                    }
                 
                 else //Деление строки i на matrix[i,i]
                 {
                    int c=matrix[i][i];
                    for (j=1; i<n; n++)
                    {
                        matrix[i][j]=matrix[i][j]/c;
                    }
                    //получение еденицы на главной
                    for (k=i++; i<n; n++)
                    {
                        c=-matrix[k][i];
                        for (j=i; i<n; n++)
                        {
                            matrix[k][j]=matrix[k][j]+c*matrix[i][j];
                        }
                    }
                 }
                  
                 }      
        }
}
//обратный ход
 xx[n] = matrix[n][n+1];
 i=n-1;
     if (i>=1)
     {
        int s=0;
        for (int k=i++; i<n; n++)
            {
                s=s+matrix[i][k]*xx[k];
            }
        xx[i]=matrix[i][n+1]-s;
        i--;
     }
   else //вывод решения
   {
    for (i=0; i<n; i++)
           cout << xx[i] << " ";
       cout << endl;
   }
         
    delete[] matrix;
    getch();
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2016, 01:45
Ответы с готовыми решениями:

Найти причины и способы исправления ошибки Segmentation fault
Выдает Segmentation fault (core dumped). Не совсем разбираюсь в linux. Поэтому не знаю что делать....

Найти причины возникновения ошибки "Segmentation fault" в шаблонном лямбда-выражении (C++11)
Добрый день. Есть такой код:template&lt;typename ChipSelect, typename T = uint8_t&gt; static T...

Найти причины и способы исправления ошибок в коде (класс "Person")
Возникла проблема при изучении классов #pragma once class person { private: int age; char...

Найти причины и способы исправления ошибок в коде (игра "Яйцелов")
Завтра дедлайн, а у меня яйца не падают ! не подскажете, в чем проблема ? # include &lt;iostream&gt; #...

Найти причины и способы исправления ошибки "Функция не является членом класса"
Хай. Вижла сошла сума, то ли я уже переработал. #pragma once #ifndef CMATRIXH # define CMATRIXH...

2
nd2
3054 / 2561 / 1121
Регистрация: 29.01.2016
Сообщений: 8,588
16.09.2016, 02:00 2
Цитата Сообщение от Grayscope Посмотреть сообщение
xx[n] = matrix[n][n+1];
Следи за границами выделенной памяти. Например, для matrix наибольшие допустимые индексы: n - 1, m - 1.
1
Grayscope
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 2
16.09.2016, 02:55  [ТС] 3
Спасибо, разобрался.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2016, 02:55

Найти причины и способы исправления ошибки "error C2065: необъявленный идентификатор"
имеется f1.h typedef struct { int some; } tStruct; f2.h

Найти причины и способы исправления ошибок в коде (пользовательский класс "String", перегрузка функций)
Не пойму почему этот код не работает...Подскажите что не так,пожалуйста. #include &quot;stdafx.h&quot; ...

Найти причины и способы исправления ошибки C4700: "использована неинициализированная локальная переменная"
#include&lt;iostream&gt; #include&lt;iomanip&gt; #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;stdlib.h&gt;...


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

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

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