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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Adrug
1 / 1 / 1
Регистрация: 15.05.2013
Сообщений: 40
#1

Двумерный массив в одномерный - C++

15.05.2013, 17:00. Просмотров 375. Ответов 5
Метки нет (Все метки)

Задача: двумерный массив N*N преобразовать в одномерный N2.
По особому алгоритму( приложения)
Собственно код написал(пишу для c++ borland)
C++
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
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
 
void main()
  {
   int i,j,k,q,N,M,L,x;
   clrscr();         x=1;
   cout<<"Input N=";
   cin>>N;
   int **a=new int*[N];
   for (i=0;i<N;i++) a[i]=new int[N];
   int *b=new int[N*N];
   cout<<"\n"<<"Cam massive ["<<N<<"]["<<N<<"]\n";
   for (i=0;i<N;i++)
     {
     for (j=0;j<N;j++)
      {
      a[i][j]=x++;
      cout<<a[i][j]<<"          ";
      }
     cout<<endl;
     }
   i=N-1;j=N-1;k=-1;M=N;L=N;
   for (q=0;q<N*N;q++)
     {
      k++;
      b[k]=a[i][j];
      if (i !=0) i--; else {j--; L=L-j;}
      while (i<L-1) {k++;b[k]=a[i][j];j--;i++;}
      k++; b[k]=a[i][j];
      if (j != 0) j--; else {i--;M=M-i+2;}
      while (j<M-1) {k++;b[k]=a[i][j];j++;i--;}
     }
   for (k=0;k<N*N;k++)
       cout<<b[k]<<",";
       delete []b;
  getch();
   }
Проблема в том что массив размерностью 3х3 сортирует правильно.
Массивы большего размера не правильно. При выводе одномерного массива проскакивают числа 3-4 значные. Откуда они берутся понять не могу.
0
Изображения
 
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 17:00
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Двумерный массив в одномерный (C++):

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька - C++
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...

Дан двумерный массив 3х3. Получить одномерный массив из из отрицательных элементов матрицы. - C++
Пожалуйста, помогите решить простым методом задачку, просто не могу понять смысл ее выполнения. Дан двумерный массив 3х3.Получить...

Дан двумерный массив размерностью 4*5. Сформировать одномерный массив - C++
Дан двумерный массив размерностью 4*5, заполненный целыми числами с клавиатуры. Сформировать одномерный массив каждый элемент которого...

Дан двумерный массив. Сформировать одномерный массив из элементов заданного массива, расположенных под побочной диагональю. - C++
Дан двумерный массив размером n x n. Сформировать: Одномерный массив из элементов заданного массива, расположенных под побочной...

Скопировать двумерный массив в одномерный массив из 50 элементов - C++
Создать двумерный массив 10*5, заполнить его значениями ( i^2-j^2), где i и j итераторы двумерного массива. А затем скопировать двумерный...

Двумерный массив в одномерный - C++
Здравствуцте, Есть двумерный массив с отсортированными строками. нужно его преобразовать в одномерный отсортированный. Алгоритм...

5
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 319
Записей в блоге: 1
15.05.2013, 18:08 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 using namespace std;
int main()
{ 
    const int k=3,j=3,n=k*j;
    int var=0,dvo_arr[k][j],od_arr[n];
    for(int i=0;i<k;i++)
        for(int x=0;x<j;x++)
        {
            cout << "arr[" << i << "][" << x << "]: " ;
            cin >> dvo_arr[i][x];
        }
    for(int i=0;i<k;i++)
        for(int x=0;x<j;x++)
        {
            od_arr[var]=dvo_arr[i][x];
            var++;
        }
    for(int i=0;i<n;i++)
        cout << od_arr[i];
    system("pause");
    return 0;
}
0
Adrug
1 / 1 / 1
Регистрация: 15.05.2013
Сообщений: 40
15.05.2013, 18:29  [ТС] #3
Miwa123, для особо бестолковых
Цитата Сообщение от Adrug Посмотреть сообщение
По особому алгоритму( приложение)
0
Ev[G]eN
15.05.2013, 18:36
  #4

Не по теме:

Цитата Сообщение от Adrug Посмотреть сообщение
Miwa123, для особо бестолковых
нехорошо оскорблять человека, который пытается помочь..

0
DIEZEL-man
13 / 13 / 0
Регистрация: 17.02.2013
Сообщений: 54
15.05.2013, 18:38 #5
Цитата Сообщение от Adrug Посмотреть сообщение
Miwa123, для особо бестолковых
Особо умные обычно программы сами пишут
0
Adrug
1 / 1 / 1
Регистрация: 15.05.2013
Сообщений: 40
15.05.2013, 21:03  [ТС] #6

Не по теме:

помощь то в общем никакая, вообще предполагаю что человек скопировал код из соседнего топика.



Добавлено через 9 минут
3 сообщения в теме(не считая моих), а никто полезного не написал.
И я не пытался оскорбить человека, а хотел сказать, что человек торопиться с ответами в погоне за репутацией. Как и я в общем поторопился резко высказавшись в его сторону.

Добавлено через 2 часа 14 минут
Кликните здесь для просмотра всего текста
C++
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
#include <iostream.h>
#include <conio.h>
 
void main()
  {
   int i,j,N,M,L,x,q;
   clrscr();
   cout<<"Input N=";
   cin>>N;
   int **a=new int*[N];
   for (i=0;i<N;i++) a[i]=new int[N];
   int *b=new int[N*N];
   cout<<"\n"<<"Cam massive ["<<N<<"]["<<N<<"]\n"; x=1;
   for (i=0;i<N;i++)   // Zapolnenie massiva
     {
       for (j=0;j<N;j++)  {a[i][j]=x++; cout<<a[i][j]<<"   ";}
       cout<<endl;
     }
     cout<<"****************\n";
   i=N-1;j=i;M=N;L=N;q=-1;
   while (q<N*N)       // preobrazovanie
     {
      q++;
      b[q]=a[i][j];
      if (i==0) j--; else i--;
      while (i<L-1) {if(j-1<0) break;else {q++;b[q]=a[i][j];j--;i++;}}
      q++;
      b[q]=a[i][j];
      if (j==0) i--; else j--;
      while (j<M-1) {if(i-1<0) break;else {q++;b[q]=a[i][j];j++;i--;}}
     }
  for (q=0;q<N*N;q++)    // Output massiva
       cout<<b[q]<<";";
       delete []b;
  getch();
   }

В общем справился сам только кустарным методом. Спасибо всем кто поучаствовал в дискуссии.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 21:03
Привет! Вот еще темы с ответами:

Одномерный и двумерный массив. - C++
Всем привет ! Хотелось бы чтоб мне помогли с задачами ! я буду их пробовать решить но до завтра боюсь не успею так что нужна ваша помощь! ...

Дан двумерный массив размерностью Н. сформировать одномерный массив из элементов заданного массива расположенных над главной диагональю. - C++
помогите решить=)Дан двумерный массив размерностью Н. сформировать одномерный массив из элементов заданного массива расположенных над ...

Двумерный массив. Сформировать одномерный массив, каждый элемент которого равен первому четному элементу соответствующего столбца - C++
Дан двумерный массив, целых чисел. Сформировать одномерный массив, каждый элемент которого равен первому четному элементу соответствующего...

Преобразовать двумерный массив в одномерный - C++
Дано двумерный массив a. Необходимо создать одномерный массив b, располагая в нем элементы по соответствующей схеме


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru