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

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

Восстановить пароль Регистрация
 
Kill100
 Аватар для Kill100
359 / 248 / 33
Регистрация: 11.12.2010
Сообщений: 1,068
Завершенные тесты: 1
31.03.2013, 19:07     Двумерный массив в строку #1
Стала задача переделать двумерный массив в строку.
На вид вроде всё просто. Но что то не как не выходит.
проблема в том что есть 1 очень большой массив. Но мне надо допустим только первых 2 столбцов превратить в строку. Потом вторых 2 столбцов. Итд.
Пробовал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Преобразует массив в векторное представление, Array - массив, Rows_n - строк в массиве, Columns_m- столбцов, Cmeshenie - смещение столбцов (с какого столбца), _Count- количество столбцов которые надо делать в вектор
int* Array_To_Vector(int** _Array,int Rows_n, int Columns_m, int Cmeshenie, int _Count)
{
    int* _Temp = new int[Rows_n*_Count];//Возвращаемый вектор
    for (int i = 0; i < Rows_n; i++)
    {
        for (int j = 0; j < _Count; j++)
        {
            _Temp[i+j*Rows_n] = _Array[i][Cmeshenie+j];
        }
    }
    Print_Vector_To_Screen(_Temp,Rows_n*Columns_m);//Выводим на экран
    return _Temp;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2013, 19:07     Двумерный массив в строку
Посмотрите здесь:

C++ Создайте двумерный массив целочисленный массив А[1..10], [1..7] и найдите сумму всех его элементов имеющие оба нечетные индексы.
Добавить строку/столбец в двумерный массив (Матрицу) C++
Дан двумерный массив. Найти строку с минимальной суммой элементов C++
C++ Сформировать динамический двумерный массив, заполнить его случайными числа-ми и вывести на экран монитора. Добавить строку в начало матрицы
Создать двумерный массив. Удалить из него строку и столбец с заданным номером C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
31.03.2013, 19:35     Двумерный массив в строку #2
Цитата Сообщение от Kill100 Посмотреть сообщение
Но мне надо допустим только первых 2 столбцов превратить в строку.
Строка по вертикали что ли?
Kill100
 Аватар для Kill100
359 / 248 / 33
Регистрация: 11.12.2010
Сообщений: 1,068
Завершенные тесты: 1
31.03.2013, 20:51  [ТС]     Двумерный массив в строку #3
Бл в обычный вектор.
Есть массив
1 2 3 4
5 6 7 8
9 10 11 12

Допустим не надо разбить его на 2 части, по 2 столбца и получить в итоге.
1) 1 2 5 6 9 10
2) 3 4 7 8 11 12

Добавлено через 1 час 13 минут
Не кто не знает где ошибка?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
31.03.2013, 22:21     Двумерный массив в строку #4
Kill100, могу предложить Вам такое решение "на коленке":
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int* get1st2cols( int** matrix, int rows, int cols )
{
   int* result = new int[rows*2];
   int i=0;
   
   for( int row=0; row<rows; ++row )
   {
      for( int col=0; col<2; ++col )
      {
         result[i++] = matrix[row][col];
      }
   }
 
   return result;
}
 
void printMatrix( int** matrix, int rows, int cols )
{
   for( int row=0; row<rows; ++row )
   {
      for( int col=0; col<cols; ++col )
      {
         cout << setw(3) << matrix[row][col];
      }
      cout << endl;
   }   
}
 
void fillMatrix( int** matrix, int rows, int cols )
{
   for( int row=0; row<rows; ++row )
   {
      for( int col=0; col<cols; ++col )
      {
         matrix[row][col] = rand()%100;
      }
   }   
}
 
 
void printVector( int* vector, int size )
{
   for( int i=0; i<size; ++i )
   {
      cout << setw(3) << vector[i];
   }   
   cout << endl;   
}
 
int main() {
   
   const int rows = 4;
   const int cols = 4;
   int** matrix = new int*[rows];
   for( int i=0; i<rows; ++i )
   {
      matrix[i] = new int[cols];
   }
   
   fillMatrix( matrix, rows, cols );
   printMatrix( matrix, rows, cols );
   
   
   int* v = get1st2cols( matrix, rows, cols );
   
   printVector( v, rows*2 );
   
   return 0;
}
Kill100
 Аватар для Kill100
359 / 248 / 33
Регистрация: 11.12.2010
Сообщений: 1,068
Завершенные тесты: 1
31.03.2013, 22:43  [ТС]     Двумерный массив в строку #5
Спс но это с 0 и всю.
А не из любой части и любое количество столбцов.
К такому варианту я приходил уже.

Добавлено через 7 минут
Всё нашел ошибку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Преобразует массив в векторное представление
int* Array_To_Vector(int** _Array,int Rows_n, int Columns_m, int Cmeshenie, int _Count)
{
    int* _Temp = new int[Rows_n*_Count];//Возвращаемый вектор
    for (int i = 0; i < Rows_n; i++)
    {
        for (int j = 0; j < _Count; j++)
        {
            _Temp[i*_Count+j] = _Array[i][Cmeshenie+j];
        }
    }
    Print_Vector_To_Screen(_Temp,Rows_n*_Count);
    return _Temp;
}
Yandex
Объявления
31.03.2013, 22:43     Двумерный массив в строку
Ответ Создать тему
Опции темы

Текущее время: 14:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru