|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.02.2018, 13:20 | #1 |
Новичок
Джуниор
Регистрация: 18.02.2018
Сообщений: 1
|
Формирование одномерного массива из матрицы в определенном порядке - C++
Здравствуйте, нужно сформировать одномерный массив из матрицы в определенном порядке, как показано на 1й картинке(в общем там есть всё задание). Имеется код, который формирует массив как на 2й картинке. Помогите исправить код, чтобы получилась последовательность 1й картинки
вот сам код: #include <iostream> #include <clocale> using namespace std; int main (int argc, char** argv){ setlocale(LC_ALL, "Russian"); int n, i, j, x, y, g, k=0, ii, jj; double **a=NULL,*b=NULL; cout <<"Лабораторная работа №1 \n"; cout <<"Работа с динамическими массивами \n"; cout <<"______________________________ __ \n"; cout <<"Введите размерность массива \n"; cout <<"N="; cin >> n; if (n==1) { cout << "Введены некорректные данные. Попробуйте снова" << endl; return (0); } cout << endl; a = new double *[n]; b = new double [n*n]; for (i=0; i<n; i++) a[i] = new double [n]; cout <<"Введите матрицу \n"; cout << endl; for (i=0; i<n; i++){ for (j=0; j<n; j++){ cout <<"a["<< i+1 <<"]["<< j+1 <<"]="; cin >> a[i][j]; } } cout << endl; cout <<"Исходная матрица:"; for (i=0; i<n; i++){ cout << endl; for (j=0; j<n; j++){ cout <<" "<< a[i][j]; } } cout << endl; cout <<"Получившийся массив: \n"; y=n; if (n%2==0){ if ((n/2)%2==0) ((ii=0)&&(jj=n/2)); if ((n/2)%2!=0) ((ii=0)&&(jj=n/2-1)); } else{ ii=n/2; jj=n/2; } if (n%2==0){ for (g=0; g<n/2; g+=2, y-=2){ for (x=0; x<y-1; x++){ i=x; j=y-1; b[k]=a[i][j]; k++; } for (x=y-1; x>=n-y; x--){ i=y-1; j=x; b[k]=a[i][j]; k++; } for (x=y-2; x>=0; x--){ i=x; j=n-y; b[k]=a[i][j]; k++; } if((i==ii)&&(j==jj)) break; for (x=0; x<y-2; x++){ i=x; j=n-y+1; b[k]=a[i][j]; k++; } for (x=n-y+1; x<y-1; x++){ i=y-2; j=x; b[k]=a[i][j]; k++; } for (x=y-3; x>=0; x--){ i=x; j=y-2; b[k]=a[i][j]; k++; } } } else{ for (g=0; g<n/2; g++, y-=2){ for (x=0; x<y-1; x++){ i=x; j=y-1; b[k]=a[i][j]; k++; } for (x=y-1; x>=n-y; x--){ i=y-1; j=x; b[k]=a[i][j]; k++; } if ((i==ii)&&(j==jj)) break; for (x=y-2; x>=0; x--){ i=x; j=n-y; b[k]=a[i][j]; k++; } if((i==ii)&&(j==jj)) break; for (x=0; x<y-2; x++){ i=x; j=n-y+1; b[k]=a[i][j]; k++; } for (x=n-y+1; x<y-1; x++){ i=y-2; j=x; b[k]=a[i][j]; k++; } if ((i==ii)&&(j==jj)) break; for (x=y-3; x>=0; x--){ i=x; j=y-2; b[k]=a[i][j]; k++; } } } for (k=0; k<n*n; k++){ cout <<" "<< b[k]; } delete[]b; for (i=0; i<n; i++){ delete[]a[i]; } delete[]a; return (0); } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывод элементов массива в определенном порядке | 2107 | Общие вопросы C/C++ | 2 | 04.06.2014 09:55 |
Вывод элементов матрицы в определенном порядке | Dayterius | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 20.05.2009 12:13 |
вывод матрицы на печать в определенном порядке | Annet555 | Помощь студентам | 3 | 29.03.2009 00:16 |
Двумерные массивы. Формирование одномерного массива из сумм строк матрицы, кратных числу k (в С++) | Fimogen | Помощь студентам | 3 | 19.11.2007 07:30 |