Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2018, 13:20   #1
Tetya221
Новичок
Джуниор
 
Регистрация: 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);
}
Изображения
Тип файла: jpg 2018-02-18_14-41-27.jpg (17.4 Кб, 141 просмотров)
Тип файла: png 2018-02-18_14-46-08.png (7.4 Кб, 77 просмотров)
Tetya221 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод элементов массива в определенном порядке 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