Форум программистов, компьютерный форум, киберфорум
Наши страницы

Перевести с паскаля на Си++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка оператора в шаблоне http://www.cyberforum.ru/cpp-beginners/thread950437.html
Здравствуйте! подскажите пожалуйста как перегрузить оператор <!(думаю и-за этого вылетает ошибка). вот код #include <iostream> #include <vector> using namespace std; typedef struct...
C++ Двумерный вектор из разных типов - возможно? Добрый вечер. ага, как вечер, так начинаются походы по сказочным лесам :D Возник такой вопрос по поводу "улучшения" класса. Значит, есть у меня в классе 4 переменных: string, string, int,... http://www.cyberforum.ru/cpp-beginners/thread950435.html
C++ Дано натуральное число n. Составить программу вычисления S = 1! + 2! + 3! + …+ n!
Дано натуральное число n. Составить программу вычисления S = 1! + 2! + 3! + …+ n! Помогите с программой, пробовал листинг, который есть на сайте он не подходит, корявый поэтому ссылки просьба не...
C++ Работа с while, kbhit() и getch()
Здравствуйте! Подскажите пожалуйста, Задача, сделать точку в консоли, которая бы двигалась в заданном направление и меняла его при нажатие на клавиши ( W A S D ) Как я это вижу, точка двигается...
C++ Взятие адреса у константной переменной при объявлении http://www.cyberforum.ru/cpp-beginners/thread950426.html
Можно пример?
C++ Wavefront *.obj Пишу конвертер моделей для одной допотопной игрушки. По большому счету все готово, осталось только сохранить полученные данные в какой-нибудь общеизвестный формат. Показалось логичным использовать... подробнее

Показать сообщение отдельно
Слепой Уфолог
3 / 3 / 0
Регистрация: 04.09.2013
Сообщений: 18
08.09.2013, 23:10
Код
#include <cstdio>

void
InvertDiagonals(int *mat, const int magn)
{
	for(int i=0; i<magn; i++) {
		int norm_index = i * magn + i;
		int norm_val = mat[norm_index];
		
		int inverse_index = magn - i - 1 + magn * i;
		int inverse_val = mat[inverse_index];
		
		mat[inverse_index] = norm_val;
		mat[norm_index] = inverse_val;
	}
}

void
PrintMatrix(int *mat, const int magn)
{
	for (int i=0; i<magn; i++) {
		for (int j=0; j<magn; j++) {
			const int index = i * magn + j;
			printf("%3d ", mat[index]);
		}
		printf("\n");
	}
	printf("\n");
}

void
PrintDiagonals(int *mat, const int magn)
{
	for(int i=0; i<magn; i++) {
		int norm_index = i * magn + i;
		int norm_val = mat[norm_index];
		printf("%3d", norm_val);
		
		int inverse_index = magn - i - 1 + magn * i;
		int inverse_val = mat[inverse_index];
		printf("%5d\n", inverse_val);
	}
}
 
int main() {
	const int magn = 10;
	
	const int count = magn * magn;
	int *mat = new int[count];
	
	//заполняем матрицу данными которые
	//соответствуют индексам
	for (int i=0; i<count; i++) {
		mat[i] = i;
	}
	
	printf("Матрица вначале\n");
	PrintMatrix(mat, magn);
	printf("Прямая и обратная диагональ\n");
	PrintDiagonals(mat, magn);
	
	InvertDiagonals(mat, magn);
	printf("\nТеперь матрица\n");
	PrintMatrix(mat, magn);
	printf("Теперь диагонали\n");
	PrintDiagonals(mat, magn);
	
	
	delete mat;
	return 0;
}
У меня выдает:
~$ g++ test.cpp -o test
~$ ./test
Матрица вначале
0 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

Прямая и обратная диагональ
0 9
11 18
22 27
33 36
44 45
55 54
66 63
77 72
88 81
99 90

Теперь матрица
9 1 2 3 4 5 6 7 8 0
10 18 12 13 14 15 16 17 11 19
20 21 27 23 24 25 26 22 28 29
30 31 32 36 34 35 33 37 38 39
40 41 42 43 45 44 46 47 48 49
50 51 52 53 55 54 56 57 58 59
60 61 62 66 64 65 63 67 68 69
70 71 77 73 74 75 76 72 78 79
80 88 82 83 84 85 86 87 81 89
99 91 92 93 94 95 96 97 98 90

Теперь диагонали
9 0
18 11
27 22
36 33
45 44
54 55
63 66
72 77
81 88
90 99
~$
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru