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

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

04.05.2014, 01:09. Показов 797. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Значение функции дроби,не могу присвоить к массиву... не получается подсчет ..Помогите плиз..с этим кусочком....
Код:

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";
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2014, 01:09
Ответы с готовыми решениями:

Разбить столбец на части с присвоением соответсвующих значений
Здравствуйте! Столкнулся с проблемой, никак не могу одолеть Смысл таков: Имеется значение времени...

Ошибка с присвоением значения
Здравствуйте! Можете подсказать как решить проблему с присвоением значения в классе Program. ...

ошибка с динамическим присвоением свойств 2
Здравствуйте. почитав тему https://www.cyberforum.ru/cpp-builder/thread224911-page3.html не...

Ошибка с присвоением (заменой) в цикле
Недавно открыл для себя Питон и решил начать изучать,пытаюсь посимвольно распарсить строку и...

18
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 01:13 2
Покажи определение перемен ной x
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
04.05.2014, 01:17 3
да это массив даблов. при вызове функции readvec в нее нужно передать указатель на первый элемент массива:
void readvec(char *name, int n, double* x) {
...
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
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) {
...
а кусочек показать можешь по моему коду? как будет он выглядить
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
04.05.2014, 01:25 5
охренеть просто. косяк в функции, которой нет в первом посте.
да и компилится похоже все, т.к. по первому посту не было понятно, что это у вас
глобальный массив.
отсюда вопросы:
какого рода у вас там косяки. что и где вы ожидаете и что происходит на самом деле при выполнении?
0
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 01:26 6
Все должно работать опиши проблему подробнее
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
04.05.2014, 01:42  [ТС] 7
Цитата Сообщение от stawerfar Посмотреть сообщение
Все должно работать опиши проблему подробнее
Проблема в том ,что не идет подсчет того что нужно... думаю что проблема в функции дроби.. так как при вводе
1/2 я получаю бред, а при в воде 1 пробел 2 то так же получается бред.
а должно заполняться вручную С А Z и вводятся дроби которые с помощью функции преобразуются в десятичную,а затем пройти должны подсчеты
ранее был пост -https://www.cyberforum.ru/cpp-beginners/thread1164748.html там скрины рабочего паскаля и "кривой проги"

Добавлено через 4 минуты
Цитата Сообщение от DU Посмотреть сообщение
охренеть просто. косяк в функции, которой нет в первом посте.
да и компилится похоже все, т.к. по первому посту не было понятно, что это у вас
глобальный массив.
отсюда вопросы:
какого рода у вас там косяки. что и где вы ожидаете и что происходит на самом деле при выполнении?
я ожидаю подсчеты и прямой ввод....но с моими знаниями не получилось
0
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 01:44 8
Измени считывание на
C++
1
char h; cin >>a>>h>>b;
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
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) не знаю как правильно втыкать его..
0
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 02:03 10
Для функции ввода матрицы и вводи значения так 2/3
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
04.05.2014, 02:12  [ТС] 11
Цитата Сообщение от stawerfar Посмотреть сообщение
Для функции ввода матрицы и вводи значения так 2/3
если это воткнуть в вод матрицы std::cin >> a >> h >> b; то чем будет заниматься h? или к h =drob(a,b); x[i]=h; так что ли?) эх плин((((
0
150 / 64 / 8
Регистрация: 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
1
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
04.05.2014, 02:17  [ТС] 13
не пойму я... в В1 ввожу 1/2 и выдает сразу автоматически насчитанный результат а в варианте 2 ввожу 1 пробел 2 ,и дает подсчет дробей но в конце такой же результат (
вариант 1
Ошибка с присвоением значений к массивам

вариант 2
Ошибка с присвоением значений к массивам
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
04.05.2014, 02:26  [ТС] 14
stawerfar спасибо) с вводом помогло,но теперь как бы подсчет сделать?(
Ошибка с присвоением значений к массивам
вот схемки функций dok.doc
0
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 02:31 15
При выводе используйте std::fixed
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
04.05.2014, 02:38  [ТС] 16
Цитата Сообщение от stawerfar Посмотреть сообщение
При выводе используйте std::fixed
а вот с такой фишкой я еще не встречался ....тоесть за место cout использовать fixed?
0
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 02:48 17
C++
1
std::cout <<std::fixed << твои данные .....
Добавлено через 1 минуту
И еще замени везде double на float если данные будут не коректны
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
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;
}
0
150 / 64 / 8
Регистрация: 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;
}
0
06.05.2014, 09:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2014, 09:25
Помогаю со студенческими работами здесь

Ошибка с динамическим присвоением свойств
вообщем народ тут проблемка встала, создаю диномически кнопки, НО как присвоить им свойство OnClick...

Ошибка алгоритма с присвоением данных в массив
Добрых суток! Сносно работается с диапазонами. С алгоритмами не было проблем. Но начала работу с...

Присвоение значений многомерным массивам
Одномерному массиву значения присваивать совсем просто: int A={0,1,2,3,4}; A=73;Двумерному уже...

Ошибка с присвоением элементу стиля Cannot read property 'style' of null"
я наверное чего-то о яваскрипт не знаю, но у меня не работает вот этот скриптvar workDone = 15;...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru