Форум программистов, компьютерный форум CyberForum.ru

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

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

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

15.05.2013, 17:00. Просмотров 338. Ответов 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 значные. Откуда они берутся понять не могу.
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 17:00     Двумерный массив в одномерный
Посмотрите здесь:

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

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

Переписать одномерный массив в двумерный - C++
Не пойму как реализовать задачу. Помогите с кодом :) Хотя-бы для первой части задачи

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

Одномерный и двумерный массив(матрица) - C++
1.Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все положительные элементы, а в конец массива - все...

Превратить одномерный массив в двумерный - C++
Превратить заданный одномерный массив в двухмерный, определив для этого соответствующую функцию превращения, которая последовательные...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 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;
}
Adrug
1 / 1 / 1
Регистрация: 15.05.2013
Сообщений: 38
15.05.2013, 18:29  [ТС]     Двумерный массив в одномерный #3
Miwa123, для особо бестолковых
Цитата Сообщение от Adrug Посмотреть сообщение
По особому алгоритму( приложение)
Ev[G]eN
15.05.2013, 18:36
  #4

Не по теме:

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

DIEZEL-man
13 / 13 / 0
Регистрация: 17.02.2013
Сообщений: 54
15.05.2013, 18:38     Двумерный массив в одномерный #5
Цитата Сообщение от Adrug Посмотреть сообщение
Miwa123, для особо бестолковых
Особо умные обычно программы сами пишут
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 21:03     Двумерный массив в одномерный
Еще ссылки по теме:

Преобразовать одномерный массив в двумерный - C++
Кусок кода. который должен был создавать таблицу с заданного текста. на вид он работает правильно но когда я обращаюсь к конкретному...

Сравнить двумерный и одномерный массив - C++
задача такова,сравнить двумерный и одномерный массив,если в двумерном массиве не встречается элемент из одномерного,то строку с таким...

Перевернуть одномерный и двумерный массив - C++
Перевернуть одномерный массив. Перевернуть двумерный массив

Как преобразовать одномерный массив в двумерный? - C++
Есть масcив типа ABCDEFG нужно чтобы каждый пятый элемент начинался с новой строки ABCDE FG Как такое возможно сделать?


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

Или воспользуйтесь поиском по форуму:
Adrug
1 / 1 / 1
Регистрация: 15.05.2013
Сообщений: 38
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();
   }

В общем справился сам только кустарным методом. Спасибо всем кто поучаствовал в дискуссии.
Yandex
Объявления
15.05.2013, 21:03     Двумерный массив в одномерный
Ответ Создать тему
Опции темы

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