Ошибки ввода/вывода
Добавлено: 03 май 2014, 12:57
Помогите пожалуйста!! С++ начал недавно изучать.... Переписал программу написанную на паскале на С++ ,но возникли ошибки..... при вводе и выводе... два кода кинул в док файл.
[ATTACH]1989[/ATTACH][ATTACH]1990[/ATTACH] код на паскале [ATTACH]1991[/ATTACH]
// С++
[ATTACH]1989[/ATTACH][ATTACH]1990[/ATTACH] код на паскале [ATTACH]1991[/ATTACH]
// С++
Код: Выделить всё
#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 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 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];
}
}
}
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 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";
}
}
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;
}