Ошибки ввода/вывода

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
dieogo
Сообщения: 1
Зарегистрирован: 03 май 2014, 12:52

Помогите пожалуйста!! С++ начал недавно изучать.... Переписал программу написанную на паскале на С++ ,но возникли ошибки..... при вводе и выводе... два кода кинул в док файл.
[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;
}

Вложения

[Расширение txt было запрещено, вложение больше недоступно.]

С++..jpg
pascal..jpg
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Меня смущают следующие строки кода (они встречаются как минимум 2 раза):

Код: Выделить всё

for (int i=0; i==n;i++)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить