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

Ошибка с присвоением значений к массивам - C++

Восстановить пароль Регистрация
 
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 97
04.05.2014, 01:09     Ошибка с присвоением значений к массивам #1
Значение функции дроби,не могу присвоить к массиву... не получается подсчет ..Помогите плиз..с этим кусочком....
Код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
double drob(int a, int b) {
    return static_cast<double>(a)/b;
}
 
void readvec(char *name, int n) {
    int a,b;
 
    std::cout << "Vvesti vektor " << name << " razmera " << n << "\n";
    for (int i=0; i < n;i++) {
        std::cout << " " << name << "[" << i << "]=";
        std::cin >> a >> b;
        std::cout << "Poluchivsshazsa drob: " << drob(a,b) << "\n";
        x[i] = drob(a,b);
    }
    std::cout << "\n";
}
void writevec(double x[10], char *name, int n) {
    std::cout << "Vivesti vektor " << name << " razmera " << n << "\n";
    for (int i = 0; i<n; i++) {
        std::cout << " " << name << "[" << i << "]=" << x[i] << "\n";
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2014, 01:09     Ошибка с присвоением значений к массивам
Посмотрите здесь:

Присвоение значений многомерным массивам C++
не понятная ошибка ввода значений C++
C++ проблема с присвоением
C++ Вычислить сумму значений функций - в чем ошибка??
Загвоздка с присвоением C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 01:13     Ошибка с присвоением значений к массивам #2
Покажи определение перемен ной x
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.05.2014, 01:17     Ошибка с присвоением значений к массивам #3
да это массив даблов. при вызове функции readvec в нее нужно передать указатель на первый элемент массива:
void readvec(char *name, int n, double* x) {
...
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 97
04.05.2014, 01:22  [ТС]     Ошибка с присвоением значений к массивам #4
Цитата Сообщение от stawerfar Посмотреть сообщение
Покажи определение перемен ной x
// VEC
double x[10], x_1[10];

Добавлено через 58 секунд
Вот такая программка...
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
#include <iostream>;
# include <math.h>;
 
// VEC
double x[10], x_1[10], ax[10], ax_1[10], c[10];
 
// MATR
double e[10][10], a[10][10], a_1[10][10], b[10][10], b_1[10][10], br[10][10], br_1[10][10];
 
double drob(int a, int b) {
    return static_cast<double>(a)/b;
}
 
void readvec(char *name, int n) {
    int a,b;
 
    std::cout << "Vvesti vektor " << name << " razmera " << n << "\n";
    for (int i=0; i < n;i++) {
        std::cout << " " << name << "[" << i << "]=";
        std::cin >> a >> b;
        std::cout << "Poluchivsshazsa drob: " << drob(a,b) << "\n";
        x[i] = drob(a,b);
    }
    std::cout << "\n";
}
void writevec(double x[10], char *name, int n) {
    std::cout << "Vivesti vektor " << name << " razmera " << n << "\n";
    for (int i = 0; i<n; i++) {
        std::cout << " " << name << "[" << i << "]=" << x[i] << "\n";
    }
}
void readmatr(char *name, int n, int m, char *type) {
    int c,b;
 
    std::cout << "Vvesti matricu " << name << " razmera " << n << "x" << m <<"\n";
    for (int i=0; i < n;i++) {
        for (int j=0; j < m;j++) {
        std::cout << " " << name << "[" << i << ", " << j << "]=";
        std::cin >> c >> b;
        std::cout << "Poluchivsshazsa drob: " << drob(c,b) << "\n";
        if (strcmp(type,"A") == 0)
        a[i][j] = drob(c,b);
        if (strcmp(type,"B") == 0)
        a_1[i][j] = drob(c,b);
        }
    }
    std::cout << "\n";
}
void writematr(double y[10][10], char *name, int n, int m) {
    std::cout << "Vivesti matricu " << name << " razmera " << n << "x" << m << "\n";
    for (int i = 0; i<n; i++)
    for (int j = 0; j<m; j++) {
        std::cout << " " << name << "[" << i << ", " << j << "]=" << y[i][j] << "\n";
    }
}
 
void Em(int n) {
    for (int i=0; i==n;i++) {
        for (int j=0; j==n;j++) {
            if (i == j)
                e[i][j] = 1;
            else 
                e[i][j] = 0;
        }
    }
}
 
void Rmatr(double a[10][10], double b[10][10], int n, int m, char *type) {
    for (int i=0; i==n;i++) {
        for (int j=0; j==m;j++) {
            if (strcmp(type,"A") == 0)
            br[i][j] = a[i][j] - b[i][j];
            if (strcmp(type,"B") == 0)
            br_1[i][j] = a[i][j] - b[i][j];
        }
    }
}
 
void obrmatr(double AIS[10][10], double AP[10][10], int n, char *type) {
    double a[10][10];
    for (int i=0; i<10;i++)
        for (int j=0; j<10;j++)
            a[i][j] = AIS[i][j];
 
    for (int k=0; k<n;k++){
        for (int j=0;j<n;j++)
            if (j != k){
                if (strcmp(type,"A") == 0)
                b[k][j] = -a[k][j] / a[k][k];
                if (strcmp(type,"B") == 0)
                b_1[k][j] = -a[k][j] / a[k][k];
            }
        for (int i=0;i<n;i++)
            if (i != k){
                if (strcmp(type,"A") == 0)
                b[i][k] = a[i][k] / a[k][k];
                if (strcmp(type,"B") == 0)
                b_1[i][k] = a[i][k] / a[k][k];
            }
        for (int i=0;i<n;i++)
            for (int j=0;j<n;j++)
                if (i != k && j != k){
                    if (strcmp(type,"A") == 0)
                    b[i][j] = a[i][j] - a[i][k] * a[k][j] / a[k][k];
                    if (strcmp(type,"B") == 0)
                    b_1[i][j] = a[i][j] - a[i][k] * a[k][j] / a[k][k];
                }
        if (strcmp(type,"A") == 0)
            b[k][k] = 1 / a[k][k];
        if (strcmp(type,"B") == 0)
            b_1[k][k] = 1 / a[k][k];
 
        for (int i=0; i<10;i++)
            for (int j=0; j<10;j++)
                a[i][j] = AP[i][j];
    }
}
 
void matrvec(double b[10][10], double c[10], int n, char *type) {
    for (int j=0;j<n;j++) {
        if (strcmp(type,"A") == 0)
        x[j] = 0;
        if (strcmp(type,"B") == 0)
        x_1[j] = 0;
        if (strcmp(type,"C") == 0)
        ax[j] = 0;
        if (strcmp(type,"D") == 0)
        ax_1[j] = 0;
        for (int i=0;i<n;i++){
            if (strcmp(type,"A") == 0)
            x[j] = x[j] + b[i][j] * c[i];
            if (strcmp(type,"B") == 0)
            x_1[j] = x_1[j] + b[i][j] * c[i];
            if (strcmp(type,"C") == 0)
            ax[j] = ax[j] + b[i][j] * c[i];
            if (strcmp(type,"D") == 0)
            ax_1[j] = ax_1[j] + b[i][j] * c[i];
        }
    }
}
 
 
 
int main() {
    readvec("C", 2);
    readmatr("A", 2, 2, "A");
    readmatr("Z", 2, 2, "B");
 
    Em(2);
 
    Rmatr(e, a, 2, 2, "A");
    Rmatr(e, a_1, 2, 2, "B");
 
    obrmatr(br, b, 2, "A"); 
    obrmatr(br_1, b_1, 2, "B"); 
 
    matrvec(b, c, 2, "A"); 
    matrvec(b_1, c, 2, "B"); 
    matrvec(a, x, 2, "C"); 
    matrvec(a_1, x_1, 2, "D");
 
    if (ax[0] <= c[0] && ax[1] <= c[1])
        std::cout << "Aconomika matrica A - affektivna \n";
    else
        std::cout << "Aconomika matrica A - ne affektivna \n";
    if (ax_1[0] <= c[0] && ax_1[1] <= c[1])
        std::cout << "Aconomika matrica A_1 - affektivna \n";
    else
        std::cout << "Aconomika matrica A_1 - ne affektivna \n";
    std::cout << "\n";
 
    writematr(b, "B", 2, 2);
    writematr(b_1, "Z", 2, 2);
    writevec(x, "x", 2);
    writevec(x_1, "y", 2);
 
    system("pause");
    return 0;
}
Добавлено через 2 минуты
косяк и в вызове функции readmatr

Добавлено через 1 минуту
Цитата Сообщение от DU Посмотреть сообщение
да это массив даблов. при вызове функции readvec в нее нужно передать указатель на первый элемент массива:
void readvec(char *name, int n, double* x) {
...
а кусочек показать можешь по моему коду? как будет он выглядить
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.05.2014, 01:25     Ошибка с присвоением значений к массивам #5
охренеть просто. косяк в функции, которой нет в первом посте.
да и компилится похоже все, т.к. по первому посту не было понятно, что это у вас
глобальный массив.
отсюда вопросы:
какого рода у вас там косяки. что и где вы ожидаете и что происходит на самом деле при выполнении?
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 01:26     Ошибка с присвоением значений к массивам #6
Все должно работать опиши проблему подробнее
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 97
04.05.2014, 01:42  [ТС]     Ошибка с присвоением значений к массивам #7
Цитата Сообщение от stawerfar Посмотреть сообщение
Все должно работать опиши проблему подробнее
Проблема в том ,что не идет подсчет того что нужно... думаю что проблема в функции дроби.. так как при вводе
1/2 я получаю бред, а при в воде 1 пробел 2 то так же получается бред.
а должно заполняться вручную С А Z и вводятся дроби которые с помощью функции преобразуются в десятичную,а затем пройти должны подсчеты
ранее был пост -http://www.cyberforum.ru/cpp-beginners/thread1164748.html там скрины рабочего паскаля и "кривой проги"

Добавлено через 4 минуты
Цитата Сообщение от DU Посмотреть сообщение
охренеть просто. косяк в функции, которой нет в первом посте.
да и компилится похоже все, т.к. по первому посту не было понятно, что это у вас
глобальный массив.
отсюда вопросы:
какого рода у вас там косяки. что и где вы ожидаете и что происходит на самом деле при выполнении?
я ожидаю подсчеты и прямой ввод....но с моими знаниями не получилось
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 01:44     Ошибка с присвоением значений к массивам #8
Измени считывание на
C++
1
char h; cin >>a>>h>>b;
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 97
04.05.2014, 01:48  [ТС]     Ошибка с присвоением значений к массивам #9
Цитата Сообщение от stawerfar Посмотреть сообщение
Измени считывание на
C++
1
char h; cin >>a>>h>>b;
изменить в функции дроби или в функциях ввода вектора и матрицы?
если в фун. дроби то так?
C++
1
2
3
4
5
6
double drob(int a, int b) {
 
    char h; 
    std::cin >> a >> h >> b; 
    return();
}
только вот с возвращением(return) не знаю как правильно втыкать его..
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 02:03     Ошибка с присвоением значений к массивам #10
Для функции ввода матрицы и вводи значения так 2/3
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 97
04.05.2014, 02:12  [ТС]     Ошибка с присвоением значений к массивам #11
Цитата Сообщение от stawerfar Посмотреть сообщение
Для функции ввода матрицы и вводи значения так 2/3
если это воткнуть в вод матрицы std::cin >> a >> h >> b; то чем будет заниматься h? или к h =drob(a,b); x[i]=h; так что ли?) эх плин((((
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 02:15     Ошибка с присвоением значений к массивам #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
void readvec(char *name, int n) {
    int a,b;
    char h;
    std::cout << "Vvesti vektor " << name << " razmera " << n << "\n";
    for (int i=0; i < n;i++) {
        std::cout << " " << name << "[" << i << "]=";
        std::cin >> a  >> h >> b;
        std::cout << "Poluchivsshazsa drob: " << drob(a,b) << "\n";
        x[i] = drob(a,b);
    }
    std::cout << "\n";
}
Значения вводи так 2/4
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 97
04.05.2014, 02:17  [ТС]     Ошибка с присвоением значений к массивам #13
не пойму я... в В1 ввожу 1/2 и выдает сразу автоматически насчитанный результат а в варианте 2 ввожу 1 пробел 2 ,и дает подсчет дробей но в конце такой же результат (
вариант 1Ошибка с присвоением значений к массивам
вариант 2Ошибка с присвоением значений к массивам
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 97
04.05.2014, 02:26  [ТС]     Ошибка с присвоением значений к массивам #14
stawerfar спасибо) с вводом помогло,но теперь как бы подсчет сделать?(
Ошибка с присвоением значений к массивам вот схемки функций dok.doc
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 02:31     Ошибка с присвоением значений к массивам #15
При выводе используйте std::fixed
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 97
04.05.2014, 02:38  [ТС]     Ошибка с присвоением значений к массивам #16
Цитата Сообщение от stawerfar Посмотреть сообщение
При выводе используйте std::fixed
а вот с такой фишкой я еще не встречался ....тоесть за место cout использовать fixed?
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 02:48     Ошибка с присвоением значений к массивам #17
C++
1
std::cout <<std::fixed << твои данные .....
Добавлено через 1 минуту
И еще замени везде double на float если данные будут не коректны
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 97
04.05.2014, 03:09  [ТС]     Ошибка с присвоением значений к массивам #18
Цитата Сообщение от stawerfar Посмотреть сообщение
C++
1
std::cout <<std::fixed << твои данные .....
Добавлено через 1 минуту
И еще замени везде double на float если данные будут не коректны
такая же проблема.или я не туды воткнул
C++
1
2
3
4
5
6
7
void writevec(double x[10], char *name, int n) {
 
    std::cout <<  "Vivesti vektor " << name << " razmera " << n << "\n";
    for (int i = 0; i<n; i++) {
        std::cout << std::fixed << " " << name << "[" << i << "]=" << x[i] << "\n";
    }
}
C++
1
2
3
4
5
6
7
8
9
void writematr(double y[10][10], char *name, int n, int m) {
 
    std::cout << "Vivesti matricu " << name << " razmera " << n << "x" << m << "\n";
    for (int i = 0; i<n; i++)
    for (int j = 0; j<m; j++) {
 
        std::cout << std::fixed << " " << name << "[" << i << ", " << j << "]=" << y[i][j] << "\n";
    }
}
или нужно fixed втыкать во все строки где использую cout?

Добавлено через 7 минут
Цитата Сообщение от stawerfar Посмотреть сообщение
C++
1
std::cout <<std::fixed << твои данные .....
Добавлено через 1 минуту
И еще замени везде double на float если данные будут не коректны
с заменой ткни лучше пальцем.... их много)

Добавлено через 9 минут
заменил все на float где то в выводе вектора и матрицы воткнул fixed ,но всеравно нету подсчета ..ввод норм
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
#include <iostream>;
# include <math.h>;
 
// VEC
float x[10], x_1[10], ax[10], ax_1[10], c[10];
 
// MATR
float e[10][10], a[10][10], a_1[10][10], b[10][10], b_1[10][10], br[10][10], br_1[10][10];
 
float drob(int a, int b) {
    return static_cast<double>(a)/b;
}
 
void readvec(char *name, int n) {
    int a, b;
    char h;
    std::cout << "Vvesti vektor " << name << " razmera " << n << "\n";
    for (int i = 0; i < n; i++) {
        std::cout << " " << name << "[" << i << "]=";
        std::cin >> a >> h >> b;
        std::cout << "Poluchivsshazsa drob: " << drob(a, b) << "\n";
        x[i] = drob(a, b);
    }
    std::cout << "\n";
}
void writevec(float x[10], char *name, int n) {
 
    std::cout  << "Vivesti vektor " << name << " razmera " << n << "\n";
    for (int i = 0; i<n; i++) {
        std::cout << std::fixed << " " << name << "[" << i << "]=" << x[i] << "\n";
    }
}
void readmatr(char *name, int n, int m, char *type) {
    int c,b;
    char p;
 
    std::cout << "Vvesti matricu " << name << " razmera " << n << "x" << m <<"\n";
    for (int i=0; i < n;i++) {
        for (int j=0; j < m;j++) {
        std::cout << " " << name << "[" << i << ", " << j << "]=";
        std::cin >> c >> p >> b;
        std::cout << "Poluchivsshazsa drob: " << drob(c,b) << "\n";
        if (strcmp(type,"A") == 0)
        a[i][j] = drob(c,b);
        if (strcmp(type,"B") == 0)
        a_1[i][j] = drob(c,b);
        }
    }
    std::cout << "\n";
}
void writematr(float y[10][10], char *name, int n, int m) {
 
    std::cout << std::fixed << "Vivesti matricu " << name << " razmera " << n << "x" << m << "\n";
    for (int i = 0; i<n; i++)
    for (int j = 0; j<m; j++) {
 
        std::cout << std::fixed << " " << name << "[" << i << ", " << j << "]=" << y[i][j] << "\n";
    }
}
 
void Em(int n) {
    for (int i=0; i==n;i++) {
        for (int j=0; j==n;j++) {
            if (i == j)
                e[i][j] = 1;
            else 
                e[i][j] = 0;
        }
    }
}
 
void Rmatr(float a[10][10], float b[10][10], int n, int m, char *type) {
    for (int i=0; i==n;i++) {
        for (int j=0; j==m;j++) {
            if (strcmp(type,"A") == 0)
            br[i][j] = a[i][j] - b[i][j];
            if (strcmp(type,"B") == 0)
            br_1[i][j] = a[i][j] - b[i][j];
        }
    }
}
 
void obrmatr(float AIS[10][10], float AP[10][10], int n, char *type) {
    double a[10][10];
    for (int i=0; i<10;i++)
        for (int j=0; j<10;j++)
            a[i][j] = AIS[i][j];
 
    for (int k=0; k<n;k++){
        for (int j=0;j<n;j++)
            if (j != k){
                if (strcmp(type,"A") == 0)
                b[k][j] = -a[k][j] / a[k][k];
                if (strcmp(type,"B") == 0)
                b_1[k][j] = -a[k][j] / a[k][k];
            }
        for (int i=0;i<n;i++)
            if (i != k){
                if (strcmp(type,"A") == 0)
                b[i][k] = a[i][k] / a[k][k];
                if (strcmp(type,"B") == 0)
                b_1[i][k] = a[i][k] / a[k][k];
            }
        for (int i=0;i<n;i++)
            for (int j=0;j<n;j++)
                if (i != k && j != k){
                    if (strcmp(type,"A") == 0)
                    b[i][j] = a[i][j] - a[i][k] * a[k][j] / a[k][k];
                    if (strcmp(type,"B") == 0)
                    b_1[i][j] = a[i][j] - a[i][k] * a[k][j] / a[k][k];
                }
        if (strcmp(type,"A") == 0)
            b[k][k] = 1 / a[k][k];
        if (strcmp(type,"B") == 0)
            b_1[k][k] = 1 / a[k][k];
 
        for (int i=0; i<10;i++)
            for (int j=0; j<10;j++)
                a[i][j] = AP[i][j];
    }
}
 
void matrvec(float b[10][10], float c[10], int n, char *type) {
    for (int j=0;j<n;j++) {
        if (strcmp(type,"A") == 0)
        x[j] = 0;
        if (strcmp(type,"B") == 0)
        x_1[j] = 0;
        if (strcmp(type,"C") == 0)
        ax[j] = 0;
        if (strcmp(type,"D") == 0)
        ax_1[j] = 0;
        for (int i=0;i<n;i++){
            if (strcmp(type,"A") == 0)
            x[j] = x[j] + b[i][j] * c[i];
            if (strcmp(type,"B") == 0)
            x_1[j] = x_1[j] + b[i][j] * c[i];
            if (strcmp(type,"C") == 0)
            ax[j] = ax[j] + b[i][j] * c[i];
            if (strcmp(type,"D") == 0)
            ax_1[j] = ax_1[j] + b[i][j] * c[i];
        }
    }
}
 
 
 
int main() {
    readvec("C", 2);
    readmatr("A", 2, 2, "A");
    readmatr("Z", 2, 2, "B");
 
    Em(2);
 
    Rmatr(e, a, 2, 2, "A");
    Rmatr(e, a_1, 2, 2, "B");
 
    obrmatr(br, b, 2, "A"); 
    obrmatr(br_1, b_1, 2, "B"); 
 
    matrvec(b, c, 2, "A"); 
    matrvec(b_1, c, 2, "B"); 
    matrvec(a, x, 2, "C"); 
    matrvec(a_1, x_1, 2, "D");
 
    if (ax[0] <= c[0] && ax[1] <= c[1])
        std::cout << "Aconomika matrica A - affektivna \n";
    else
        std::cout << "Aconomika matrica A - ne affektivna \n";
    if (ax_1[0] <= c[0] && ax_1[1] <= c[1])
        std::cout << "Aconomika matrica A_1 - affektivna \n";
    else
        std::cout << "Aconomika matrica A_1 - ne affektivna \n";
    std::cout << "\n";
 
    writematr(b, "B", 2, 2);
    writematr(b_1, "Z", 2, 2);
    writevec(x, "x", 2);
    writevec(x_1, "y", 2);
 
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2014, 09:25     Ошибка с присвоением значений к массивам
Еще ссылки по теме:

C++ Ошибка в коде, по массивам
ошибка в нахождении max и min значений в строке матрицы C++
C++ Конструктор с присвоением

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

Или воспользуйтесь поиском по форуму:
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
06.05.2014, 09:25     Ошибка с присвоением значений к массивам #19
Вообще мне не очень понятно что ты делаешь в коде. Но пару явных ошибок исправил. Теперь нет инфинитива при выводе.
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
#include <iostream>
#include <math.h>
 
 
// VEC
double x[10], x_1[10], ax[10], ax_1[10], c[10];
 
// MATR
double e[10][10], a[10][10], a_1[10][10], b[10][10], b_1[10][10], br[10][10], br_1[10][10];
 
double drob(int a, int b) {
    return static_cast<double>(a) / b;
}
 
void readvec(char *name, int n) {
    int a, b;
    char h;
    std::cout << "Введите вектор " << name << " размера " << n << "\n";
    for (int i = 0; i < n; i++) {
        std::cout << " " << name << "[" << i << "]=";
        std::cin >> a >> h >> b;
        std::cout << "Получившаяся дробь : " << drob(a, b) << "\n";
        x[i] = drob(a, b);
    }
    std::cout << "\n";
}
void writevec(double x[10], char *name, int n) {
 
    std::cout << "Вывести вектор " << name << " размера " << n << "\n";
    for (int i = 0; i<n; i++) {
        std::cout << std::fixed << " " << name << "[" << i << "]=" << x[i] << "\n";
    }
}
void readmatr(char *name, int n, int m, char *type) {
    int c, b;
    char p;
 
    std::cout << "Введите матрицу " << name << " размера " << n << "x" << m << "\n";
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            std::cout << " " << name << "[" << i << ", " << j << "]=";
            std::cin >> c >> p >> b;
            std::cout << "Получившаяся дробь : " << drob(c, b) << "\n";
            if (strcmp(type, "A") == 0)
                a[i][j] = drob(c, b);
            if (strcmp(type, "B") == 0)
                a_1[i][j] = drob(c, b);
        }
    }
    std::cout << "\n";
}
void writematr(double y[10][10], char *name, int n, int m) {
 
    std::cout << std::fixed << "Вывести матрицу " << name << " размера " << n << "x" << m << "\n";
    for (int i = 0; i<n; i++)
    for (int j = 0; j<m; j++) {
 
        std::cout << std::fixed << " " << name << "[" << i << ", " << j << "]=" << y[i][j] << "\n";
    }
}
 
void Em(int n) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (i == j)
                e[i][j] = 1;
            else
                e[i][j] = 0;
        }
    }
}
 
void Rmatr(double a[10][10], double b[10][10], int n, int m, char *type) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (strcmp(type, "A") == 0)
                br[i][j] = a[i][j] - b[i][j];
            if (strcmp(type, "B") == 0)
                br_1[i][j] = a[i][j] - b[i][j];
        }
    }
}
 
void obrmatr(double AIS[10][10], double AP[10][10], int n, char *type) {
    double a[10][10];
    for (int i = 0; i<10; i++)
    for (int j = 0; j<10; j++)
        a[i][j] = AIS[i][j];
 
    for (int k = 0; k<n; k++){
        for (int j = 0; j<n; j++)
        if (j != k){
            if (strcmp(type, "A") == 0)
                b[k][j] = -a[k][j] / a[k][k];
            if (strcmp(type, "B") == 0)
                b_1[k][j] = -a[k][j] / a[k][k];
        }
        for (int i = 0; i<n; i++)
        if (i != k){
            if (strcmp(type, "A") == 0)
                b[i][k] = a[i][k] / a[k][k];
            if (strcmp(type, "B") == 0)
                b_1[i][k] = a[i][k] / a[k][k];
        }
        for (int i = 0; i<n; i++)
        for (int j = 0; j<n; j++)
        if (i != k && j != k){
            if (strcmp(type, "A") == 0)
                b[i][j] = a[i][j] - a[i][k] * a[k][j] / a[k][k];
            if (strcmp(type, "B") == 0)
                b_1[i][j] = a[i][j] - a[i][k] * a[k][j] / a[k][k];
        }
        if (strcmp(type, "A") == 0)
            b[k][k] = 1 / a[k][k];
        if (strcmp(type, "B") == 0)
            b_1[k][k] = 1 / a[k][k];
 
        for (int i = 0; i<10; i++)
        for (int j = 0; j<10; j++)
            a[i][j] = AP[i][j];
    }
}
 
void matrvec(double b[10][10], double c[10], int n, char *type) {
    for (int j = 0; j<n; j++) {
        if (strcmp(type, "A") == 0)
            x[j] = 0;
        if (strcmp(type, "B") == 0)
            x_1[j] = 0;
        if (strcmp(type, "C") == 0)
            ax[j] = 0;
        if (strcmp(type, "D") == 0)
            ax_1[j] = 0;
        for (int i = 0; i<n; i++){
            if (strcmp(type, "A") == 0)
                x[j] = x[j] + b[i][j] * c[i];
            if (strcmp(type, "B") == 0)
                x_1[j] = x_1[j] + b[i][j] * c[i];
            if (strcmp(type, "C") == 0)
                ax[j] = ax[j] + b[i][j] * c[i];
            if (strcmp(type, "D") == 0)
                ax_1[j] = ax_1[j] + b[i][j] * c[i];
        }
    }
}
 
 
 
int main() 
{
    setlocale(LC_ALL, "Russian_Russia.1251");
    
    readvec("C", 2);
    readmatr("A", 2, 2, "A");
    readmatr("Z", 2, 2, "B");
 
    Em(2);
 
    Rmatr(e, a, 2, 2, "A");
    Rmatr(e, a_1, 2, 2, "B");
 
    obrmatr(br, b, 2, "A");
    obrmatr(br_1, b_1, 2, "B");
 
    matrvec(b, c, 2, "A");
    matrvec(b_1, c, 2, "B");
    matrvec(a, x, 2, "C");
    matrvec(a_1, x_1, 2, "D");
 
    if (ax[0] <= c[0] && ax[1] <= c[1])
        std::cout << "Экономика матрицы A - эффективна\n";
    else
        std::cout << "Экономика матрицы A - не эфективна \n";
    if (ax_1[0] <= c[0] && ax_1[1] <= c[1])
        std::cout << "Экономика матрицы A_1 - эффективка \n";
    else
        std::cout << "Экономика матрицы A_1 - не эффективка \n";
    std::cout << "\n";
 
    writematr(b, "B", 2, 2);
    writematr(b_1, "Z", 2, 2);
    writevec(x, "x", 2);
    writevec(x_1, "y", 2);
 
    system("pause");
    return 0;
}
Yandex
Объявления
06.05.2014, 09:25     Ошибка с присвоением значений к массивам
Ответ Создать тему
Опции темы

Текущее время: 14:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru