Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 18.02.2018, 14:20   #1
Tetya221
Новичок
 
Регистрация: 18.02.2018
Сообщений: 1
Репутация: 10
По умолчанию Формирование одномерного массива из матрицы в определенном порядке - 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 Кб, 0 просмотров)
Тип файла: png 2018-02-18_14-46-08.png (7.4 Кб, 9 просмотров)
Tetya221 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод элементов массива в определенном порядке 2107 Общие вопросы C/C++ 2 04.06.2014 09:55
Вывод элементов матрицы в определенном порядке Dayterius Паскаль 1 20.05.2009 12:13
вывод матрицы на печать в определенном порядке Annet555 Помощь студентам 3 29.03.2009 01:16
Двумерные массивы. Формирование одномерного массива из сумм строк матрицы, кратных числу k (в С++) Fimogen Помощь студентам 3 19.11.2007 08:30


02:07.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru