Отсортировать двумерную матрицу

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

Ответить
Tiami
Сообщения: 2
Зарегистрирован: 24 дек 2015, 09:37

Добрый день. дана входная строка из нескольких цифр: 1 2 3 4 Необходимо отсортировать новую квадратную матрицу что бы получилось так как на примере :

1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3

имеется такой код

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

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
	int a, n; 	
	cout << "enter last index: ";
	cin >> n;
	float A[10];  // линия 1ая от которой отталкиваться 
	int i,j,c,d,f;
		j = 0; 
		c = 1;
		d = 0;
	
		cout << "enter line :";
		for (int i = 0; i < n; i++)
			cin >> A[i];
		cout << " \n\n";
		f = 0;
		float A1[10][10];
		for (i = 0; (i < (n)); i++)		//ЗАМЕНА ВЕРХНЕЙ ЧАСТИ 
		{
			
			for (j = 0; j < n; j++) 
				if (i < n - j + i)
				{
				A1[i][j] = A[j + d];
				}
				
			
			d++;
		}
		for (int i = 1; i < n; ++i) {	// ЗАМЕНА НИЖЕНЕЙ ЧАСТИ
			for (int j = n - i; j < n; ++j)
			{
				A1[i][j] = A[i - c];
			}
			c++;
		}
		for (i = 0; (i < (n)); i++)		// ВЫВОД МАТРИЦЫ
		{
			for (j = 0; j < n; j++)
			{
				cout << A1[i][j] << ' ';
			}
			cout << '\n';
		}		
    return 0;
}
однако проблема в том что он не может нормально заменить элементы ниже побочной диагонали.
Tiami
Сообщения: 2
Зарегистрирован: 24 дек 2015, 09:37

готовый, работающий код :

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

#include "stdafx.h"
#include <iostream> 
using namespace std;

int main() {
	 int n;
	 int a[10];
	int a1[10][10], i, j;

	cout << "enter last index: ";
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> a[i];
	cout << " \n\n";
	for (int i = 0; i<n; i++) {
		int start = i;
		for (j = 0; j<n; j++) {
			a1[i][j] = a[start++];
			if (start>n - 1) start = 0;
		}
	}

	for (i = 0; i < n; i++)     // ВЫВОД МАТРИЦЫ
	{
		for (j = 0; j < n; j++)
		{
			cout << a1[i][j] << ' ';
		}
		cout << '\n';
	}

	cin.get(); cin.sync(); return 0;
}
Ответить