А
размерностью nxm
. Записать все элементы матрицы в одномерный массив.Предлагаю для решения этой задачи организовать заполнение массива случайными числами. Это сократит время на ввод элементов двумерного массива. Вся сложность данного задания состоит в том, что каким-то образом нужно преобразовать двумерный массив в одномерный. Как это сделать? Легко!
Наша задача создать одномерный массив, в котором могут поместиться все элементы двумерного. Для этого определяем размер двумерного массива, умножаем количество строк на количество столбцов. Далее динамически выделяем память под одномерный массив. Используя несколько циклов for заполняем одномерный массив и выводим на экран. Результат работы программы показан ниже:
// matrica_A.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> #include <ctime> #include <iomanip> using namespace std; int main(int argc, char* argv[]) { srand(time(NULL)); setlocale(LC_ALL, "rus"); int number_rows,// строки number_columns; // столбцы cout << "Введите количество строк матрицы: "; cin >> number_rows; cout << "Введите количество столбцов матрицы: "; cin >> number_columns; // динамическое создание двумерного массива int **arrayPtr = new int* [number_rows]; for (int count = 0; count < number_rows; count++) arrayPtr[count] = new int [number_columns]; for (int counter_rows = 0; counter_rows < number_rows; counter_rows++) { for (int counter_columns = 0; counter_columns < number_columns; counter_columns++) { arrayPtr[counter_rows][counter_columns] = rand() % 100; // заполнение массива случайными числами cout << setw(2) << arrayPtr[counter_rows][counter_columns] << " "; // вывод на экран двумерного массива } cout << endl; } cout << endl; int *vectorPtr = new int [number_rows * number_columns]; // создание одномерного динамического массива int vector_counter = 0; // переменная-индекс для одномерного массива for (int counter_rows = 0; counter_rows < number_rows; counter_rows++) { for (int counter_columns = 0; counter_columns < number_columns; counter_columns++) { vectorPtr[vector_counter] = arrayPtr[counter_rows][counter_columns]; // записываем элементы матрицы в одномерный массив cout << vectorPtr[vector_counter] << " "; // печать элементов одномерного массива vector_counter++; // инкремент индекса } } delete [] vectorPtr; // высвобождение памяти, отводимой под одномерный массив // удаление двумерного динамического массива for (int count = 0; count < number_rows; count++) delete []arrayPtr[count]; cout << endl; system("pause"); return 0; }
Результат:
Введите количество строк матрицы: 3
Введите количество столбцов матрицы: 5
4 46 83 2 79
78 49 65 52 73
94 98 61 4 82
4 46 83 2 79 78 49 65 52 73 94 98 61 4 82
Комментарии
Роман Максимов
Anufree
Vladimir Belikov
Максим Костюков