Группа Михайлова — различия между версиями
AM5800 (обсуждение | вклад) (Новая страница: «==1. Компиляция== Напишите псевдо код на основе ассемблерного кода в который разворачивает…») |
AM5800 (обсуждение | вклад) (→3. Выделение памяти) |
||
| Строка 21: | Строка 21: | ||
==3. Выделение памяти== | ==3. Выделение памяти== | ||
| + | Создайте двумерный массив двумя способами. | ||
| + | 1) Используя N + 1 аллокацию | ||
| + | 2) Используя 2 аллокации | ||
| + | Замерьте, при каких значениях размера массива происходит экстерминатус? (Компилируйте 32 разрядную версию. 64 может и не упасть) | ||
| + | Какой вариант работает быстрее? | ||
| + | Подумайте, почему это происходит. | ||
| + | Обращаю внимание, что оба варианта созданных матриц должны иметь тип int** | ||
| + | |||
| + | Усложненное задание - сделать матрицы трегольными и написать процедуру, сливающие 2 такие матрицы в прямоугольную | ||
Версия 21:15, 3 ноября 2012
1. Компиляция
Напишите псевдо код на основе ассемблерного кода в который разворачивается инструкция for:
for (int i=0; i < N; ++i) {
//body
}
Пример псевдокода:
if (a == 5) goto mark1 something mark1:
Чем плоха конструкция
#define MAX(a, b) a > b ? a : b
Приведите пример ее некорректного использования. (Возврат не максимального значения, побочные эффекты) Как можно ее улучшить?
Как работает линковка? Какую роль в ней играет relocation table
2. Сортировка слиянием
Реализуйте алгоритм merge sort
3. Выделение памяти
Создайте двумерный массив двумя способами. 1) Используя N + 1 аллокацию 2) Используя 2 аллокации Замерьте, при каких значениях размера массива происходит экстерминатус? (Компилируйте 32 разрядную версию. 64 может и не упасть) Какой вариант работает быстрее? Подумайте, почему это происходит. Обращаю внимание, что оба варианта созданных матриц должны иметь тип int**
Усложненное задание - сделать матрицы трегольными и написать процедуру, сливающие 2 такие матрицы в прямоугольную