База ответов ИНТУИТ

Программирование

<<- Назад к вопросам

Рассмотрим реализацию матрицы целых чисел,размеры которой определяютсяв процессе работы программы, через массив указателей на началострок, захватываемый в динамической памяти. Каждая строкатакже представляет собой отдельный массив вдинамической памяти:
    typedef int* intptr;    int m, n; // Размеры матрицы: число строк, столбцов    . . .    intptr* a = new intptr[m];    for (int i = 0; i < m; ++i) {        a[i] = new int[n];    }    // a[i][j] -- элемент i-й строки и j-го столбца
Сколько памяти требуется для хранения прямоугольнойматрицы размером в 10 строк и 20 столбцовв 64-разрядной архитектуре(без учета памяти, используемой под описатели фрагментов кучи;предполагаем, что размер элемента типа int равен 4)?

(Отметьте один правильный вариант ответа.)

Варианты ответа
840 байтов
880 байтов (Верный ответ)
960 байтов
800 байтов
Похожие вопросы
Рассмотрим реализацию матрицы вещественных чисел,размеры которой определяютсяв процессе работы программы, через массив указателей на началастрок, захватываемый в динамической памяти. Каждая строкатакже представляет собой отдельный массив вдинамической памяти:
    typedef double* doubleptr;    int m, n; // Размеры матрицы: число строк, столбцов    . . .    doubleptr* a = new doubleptr[m];    for (int i = 0; i < m; ++i) {        a[i] = new double[n];    }    // a[i][j] -- элемент i-й строки и j-го столбца
Сколько памяти требуется для хранения прямоугольнойматрицы размером в 10 строк и 20 столбцовв 32-разрядной архитектуре(без учета памяти, используемой под описатели фрагментов кучи)?
Рассмотрим реализацию матрицы вещественных чисел,размеры которой определяютсяв процессе работы программы, через массив указателей на началастрок, захватываемый в динамической памяти. Каждая строкатакже представляет собой отдельный массив вдинамической памяти:
    typedef double* doubleptr;    int m, n; // Размеры матрицы: число строк, столбцов    . . .    doubleptr* a = new doubleptr[m];    for (int i = 0; i < m; ++i) {        a[i] = new double[n];    }    // a[i][j] -- элемент i-й строки и j-го столбца
Сколько обращений к памяти необходимо сделать,чтобы прочесть элемент матрицы вi-й строке и j-м столбце(считая, что значения i и jуже находятся в регистрах процессора)?
Рассмотрим реализацию матрицы вещественных чиселразмера m строк на n столбцовпри помощи линейного массива,в котором хранятся сначала элементы нулевой строки матрицы,затем первой и т.д., в конце - элементы (m-1)-й строки:
    int m, n; // Размеры матрицы: число строк, столбцов    . . .    double* a = new double[m*n];    // a[i*n + j] -- элемент i-й строки и j-го столбца
Пусть функция с прототипом
void transp(double* a, int m, int n);
реализует транспонированиематрицы, при выполнении которого строки матрицы становятсястолбцами, столбцы - строками, а матрица размераm на nпревращается в матрицу размераn на mПусть эта функция применяется к прямоугольной матрице,содержащей 3 строки и 5 столбцов, элементы которой хранятсяв линейном массиве a. Сколько элементов массиваa при этом останутся на своем месте?
Рассмотрим реализацию матрицы вещественных чиселразмера m строк на n столбцовпри помощи линейного массива,в котором хранятся сначала элементы нулевой строки матрицы,затем первой, второй и т.д., в конце - элементы (m-1)-й строки:
    int m, n; // Размеры матрицы: число строк, столбцов    . . .    double* a = new double[m*n];    // a[i*n + j] -- элемент i-й строки и j-го столбца
Пусть функция с прототипом
void transp(double* a, int m, int n);
реализует транспонированиематрицы, при выполнении которого строки матрицы становятсястолбцами, столбцы - строками, а матрица размераm на nпревращается в матрицу размераn на mПусть эта функция применяется к прямоугольной матрице,содержащей 2 строки и 4 столбца, элементы которой хранятсяв линейном массиве a Сколько элементов массиваa при этом останутся на своем месте?
Рассмотрим реализацию матрицы вещественных чиселразмера m строк на n столбцовпри помощи линейного массива,в котором хранятся сначала элементы нулевой строки матрицы,затем первой, второй и т.д., в конце - элементы (m-1)-й строки:
    int m, n; // Размеры матрицы: число строк, столбцов    . . .    double* a = new double[m*n];    // a[i*n + j] -- элемент i-й строки и j-го столбца
Правильно ли работает следующая функция транспонированияматрицы, при выполнении которой строки матрицы должны статьстолбцами, столбцы - строками, а матрица размераm на nпревратиться в матрицу размераn на m?
void transp(double* a, int m, int n) {    for (int i = 0; i < m; ++i) {        for (int j = 0; j < n; ++j) {            int idx0 = i*n + j;            int idx1 = j*m + i;            if (idx0 < idx1) {                // Меняем местами 2 элемента                double tmp = a[idx0];                a[idx0] = a[idx1];                a[idx1] = tmp;            }        }    }}
Какие объекты языка C/C++ располагаются вдинамической памяти?
В функции с прототипом
int f(int x);
которая вызывается часто в различных контекстахи должна работать быстро, нам требуется небольшой массив целых чисел размером в 16 элементов.Какое из перечисленных ниже решений являетсянаиболее правильным?
Дан массив длины n, содержащийэлементы некоторого упорядоченного типа (их можносравнивать между собой, определяя,какой из них больше или их равенство).Требуется определить, сколько различныхэлементов содержится в массиве.Приведите асимптотическуюоценку времени работы наилучшего алгоритма, решающего даннуюзадачу.
Дан массив длины n, содержащийэлементы некоторого упорядоченного типа (их можносравнивать между собой, определяя,какой из них больше или их равенство).Требуется удалить из массива повторяющиеся элементы так,чтобы каждый элемент содержался в массиве ровно 1 раз(при этом n может уменьшиться).Приведите асимптотическуюоценку времени работы наилучшего алгоритма, решающего даннуюзадачу.
Какое максимальное число операций деления можетбыть выполнено в алгоритме Гаусса в процессе приведенияк ступенчатому виду прямоугольной матрицы, содержащей3 строки и 4 столбца?