Группа Михайлова — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Новая страница: «==1. Компиляция== Напишите псевдо код на основе ассемблерного кода в который разворачивает…»)
 
(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 такие матрицы в прямоугольную