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

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

Войти
Регистрация
Восстановить пароль
 
Kill100
404 / 270 / 37
Регистрация: 11.12.2010
Сообщений: 1,148
Завершенные тесты: 1
#1

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

31.03.2013, 19:07. Просмотров 432. Ответов 4
Метки нет (Все метки)

Стала задача переделать двумерный массив в строку.
На вид вроде всё просто. Но что то не как не выходит.
проблема в том что есть 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++):

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

Как поместить строку в двумерный массив строк - C++
как поместить строку в двумерный массив строк (статичный)? то есть, например, в каждую строку хочу писать только одно слово

Добавить строку/столбец в двумерный массив (Матрицу) - C++
Уважаемые форумчане подскажите возможно ли добавить строку/столбец в двумерный не динамический массив на си или c++ ? P.S Если можно...

Преобразовать двумерный массив в одномерный, удаляя каждую вторую строку - C++
Подскажите пожалуйста как 2D массив преобразовать в 1D, при этом удаляя каждую 2рую строку. Прилагаю свой вариант кода... Мб подскажите...

Дан двумерный массив. Найти строку с минимальной суммой элементов - C++
Дан двумерный массив. Найти: строку с минимальной суммой элементов. Если таких строк несколько, должен быть найден номер самой верхней из...

Сформировать двумерный массив. Удалить из него строку и столбец с заданным номером - C++
Сформировать двумерный массив. Удалить из него строку и столбец с заданным номером. Помогите доработать код, то есть удаление строки и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
31.03.2013, 19:35 #2
Цитата Сообщение от Kill100 Посмотреть сообщение
Но мне надо допустим только первых 2 столбцов превратить в строку.
Строка по вертикали что ли?
Kill100
404 / 270 / 37
Регистрация: 11.12.2010
Сообщений: 1,148
Завершенные тесты: 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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
404 / 270 / 37
Регистрация: 11.12.2010
Сообщений: 1,148
Завершенные тесты: 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2013, 22:43
Привет! Вот еще темы с ответами:

Создать двумерный массив. Удалить из него строку и столбец с заданным номером - C++
Создать двумерный массив. Удалить из него строку и столбец с заданным номером. Помогите сделать удаление: ...

Задан двумерный массив вещественных чисел размерностью (M+1)x(N+1). В строку m+1 записать суммы элементов по с - C++
Задан двумерный массив вещественных чисел размерностью (M+1)x(N+1). В строку m+1 записать суммы элементов по столбцам, в столбец n+1...

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

Как можно вложить двумерный массив в двумерный? - C++
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы размерностью КxК... Подскажите (желательно с...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.03.2013, 22:43
Ответ Создать тему
Опции темы

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