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

2K_programuvanna / Практика / 2_mod / lab_10_malloc

.doc
Скачиваний:
30
Добавлен:
19.04.2015
Размер:
18.43 Кб
Скачать
  1. Лабораторная робота №10

      1. Робота с данными в динамической памяти, использование функций динамического выделения памяти: malloc (), calloc(), realloc(), free ().

Цель: научится использовать операции динамического выделения памяти на примере работы с одномерными массивами.

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

#include <stdio.h>

#include <stdlib.h>

int main() {

int *a,n,i;

scanf("%d",&n); //Введення кількості елементів масиву

a=(int*)calloc(n, sizeof(int)); //Виділення динамічної пам'яті

if (!a) { //Перевірка на можливість виділення пам'яті

puts("ERROR");

return 1;

}

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

scanf("%d", a+i); //Введення даних масиву за допомогою вказівників

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

printf("%d",*(a+i)); //Виведення елементів масиву

free(a); //Звільнення динамічної пам'яті

return 0;

}

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

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

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

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

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

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

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

Значения 2<N,M<20 определять случайным образом в начале программы или вводить с клавиатуры. Массивы память для массивов A,B выделять динамически.

  1. Заданы два массива А(N) и В(M). Первым на печать вывести массив, сумма значений которого окажется наименьшей.

  2. Заданы два массива А(N) и В(M). В каждом из массивов найти наименьшее значение и прибавить его ко всем элементам массива. На печать вывести исходные и преобразованные массивы.

  3. Заданы два массива А(N) и В(M). В каждом из массивов найти среднее арифметическое всех элементов массивов. На печать вывести исходные массивы и найденные значения.

  4. Заданы два массива А(N) и В(M). Напечатать наибольшее значение его порядковый номер для каждого из массивов.

  5. Заданы два массива А(N) и В(M). Подсчитать в них количество отрицательных элементов и первым на печать вывести массив, имеющий наименьшее их количество.

  6. Заданы два массива А(N) и В(M). Подсчитать в них количество элементов, больших значения T и первым на печать вывести массив, имеющий наименьшее их количество.

  7. Заданы два массива А(N) и В(M). В каждом из массивов найти наименьшее значение и умножить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.

  8. Задан массив А(N). Сформировать масив В из индексов положительных еллеметов массива A.

  9. Заданы два массива А(N) и В(M). В каждом из массивов найти наибольшее значение и разделить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.

  10. Заданы два массива А(N) и В(M). Подсчитать в них количество элементов, кратных двум и первым на печать вывести массив, имеющий наибольшее их количество.

  11. Задан массив А(N). Получить из него массив В, состоящий из элементов массива А, которые больше 0.

  12. Задан массив А(N). Получить из него массив В, состоящий из элементов массива А, которые кратны двум.

  13. Задан массив А(N). Получить из него массив В, состоящий из элементов массива А, которые больше значения M.

  14. Задан массив А(N). Заменить все его элементы с отрицательным значением на значение минимального положительного элемента.

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