Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2K_programuvanna / 2 mod / lab_11_12_extended_memory[1]

.doc
Скачиваний:
29
Добавлен:
19.04.2015
Размер:
31.74 Кб
Скачать
  1. Лабораторная робота №11-12

Цель: Опрацювання програм, пов’язаних з проблемами використання динамічної пам’яті. Масиви вказівників, обробка великих масивів.

    1. Пример программы

#include <stdlib.h>

#include <stdio.h>

void vvod(int **arr, int ncols, int nrows){

int i,j;

for (i = 0; i<nrows; i++)

for (j=0; j<ncols; j++){

scanf("%d",&arr[i][j]);

//scanf("%d", *(arr+i)+j);

}

}

int main(){

int nrows= 2, ncols =2,i;

int **array = (int **)malloc(nrows * sizeof(int *));

if (!array) return 1;

for(i = 0; i < nrows; i++) {

array[i] = (int *)malloc(ncols * sizeof(int));

(int *)malloc(10 * sizeof(int));

if(!array[i]) return 1;

}

//array[0][0] = 5;

//*(*(array+2)+2)=6;

vvod(array,nrows,ncols);

for(i = 0; i < nrows; free(array[i++]));

free(array);

return 0;

}

    1. На что обратить внимание:

Некорректным использованием указателей является:

  • Попытка работы неинициализированым, с указателем.

  • Утрея ссылки на выделенную область памяти, при присваивание значения одного указателя другому.

  • Неосвобождение памяти выделеной функцией malloc().

  • Попытка вернуть в качестве результата адрес локальной переменной класса auto.

    1. Варианты заданий

  1. Задана матрица А(n,m). Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (или один из них) оказался в левом верхнем углу матрицы.

  2. Задан массив А(n,n). Записать на место отрицательных элементов матрицы нули, а на место положительных - единицы. Вывести матрицу на экран.

  3. Задана матрица А(n,m). Найти максимальный по модулю элемент матрицы. Переставить строки и столбцы матрицы таким образом, чтобы максимальный по модулю элемент был расположен на пересечении k-й строки и k-го столбца.

  4. Задан массив А(n,n). Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали. Сформировать массив из элементов побочной диагонали.

  5. Задана матрица А(n,n). Преобразовать матрицу по правилу: строку с номером n сделать столбцом с номером n, и наоборот. Подсчитать сумму элементов, лежащих над побочной диагональю.

  6. Задана матрица А(n,m). Определить номера тех строк, которые совпадают одномерным массивом B(m). Если таких строк нет, выдать соответствующее сообщение.

  7. Дана квадратная матрица размером n х n. Поменять местами элементы главной и побочной диагоналей. Определить сумму элементов, лежащих на периметре.

  8. Дан массив А(n,n).Найти число элементов массива a(i,j)>t и просуммировать все эти элементы.

  9. Дан массив A(n,n). Вычислить сумму всех неотрицательных элементов, а также их количество.

  10. Дан массив A(n,n). Сформировать вектор В(t) из a(i,j) < 0. На печать вывести исходный массив, полученный вектор и его размерность.

  11. Дан массив A(n,n). Написать программу его поворота на 900 относительно его центра. На печать вывести исходный и повернутый массивы.

  12. Дан массив A(n,n). Найти сумму всех его элементов, расположенных выше главной диагонали.

  13. Задана матрица А(n,n). Найти суммы и произведения элементов, стоящих на главной и побочной диагоналях.

Соседние файлы в папке 2 mod