Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- =============================================================
- Экзаменационный билет #16
- Предмет: Языки и методы программирования
- Экзаменатор1: Парфенов Денис Васильевич (составитель)
- Экзаменатор2: Петрусевич Денис Андреевич
- =============================================================
- Задание 1. Статическое, автоматическое и динамическое
- выделение памяти. Понятие регистровой памяти, кучи и стека.
- Функции динамического выделения памяти malloc и free.
- Стратегии работы с динамической памятью. Использование
- операции sizeof.
- Задание 2. Структуры, массивы и указатели: структуры,
- содержащие массивы и указатели, массивы структур, указатели
- на структуры и доступ к элементам структур по указателю
- (приведите примеры каждого случая). Передача структуры в
- функцию. Размещение указателя на функцию в структуре.
- Задание 3. Запрограммируйте функцию, которая обменивает в
- массиве попарно соседние элементы (первый со вторым, третий с
- четвертым, и т.д.). Если длина массива нечетна, то последний
- элемент ни с кем не обменивается.
- =============================================================
- **/
- #include <stdio.h>
- #include <stdlib.h>
- typedef int Type; // Используемый для элементов массива тип
- void swap(Type *, Type *); // Обмен значениями двух переменных
- void swap_elements(Type *, int); // Обмен попарно соседних элементов массива
- void swap_elements2(const Type *, Type *, int); // Обмен попарно соседних элементов массива не изменяя его
- void print_mas(Type *, int); // Вывод массива на экран
- int main(){
- // Создадим массив
- unsigned const int N = 11; // Количество элементов в массиве
- Type mas[N];
- // Заполним его
- int i;
- for(i = 0; i < N; i++)
- mas[i] = i;
- // Выведем на экран
- print_mas(mas, N);
- // Обменяем в нем попарно соседние элементы
- swap_elements(mas, N);
- // Усложнение от Петрусевича: Решить задачу, не изменяя исходный массив
- // Необходимо раскомментировать этот участок кода и закомментировать строку 50: swap_elements(mas, N);
- /*
- Type mas2[N];
- swap_elements2(mas, mas2, N);
- print_mas(mas, N);
- print_mas(mas2, N);
- */
- return 0;
- }
- void swap(Type *a, Type *b){
- // Обмен значениями двух переменных
- Type temp = *a;
- *a = *b;
- *b = temp;
- }
- void swap_elements(Type *mas, int N){
- // Обмен значениями попарно соседних элементов массива
- Type i;
- for(i = 1; i < N; i += 2)
- swap(mas+i-1, mas+i);
- }
- void print_mas(Type *mas, int N){
- // Вывод массива на экран
- int i;
- for(i = 0; i < N; i++)
- printf("%d ", mas[i]);
- printf("\n");
- }
- void swap_elements2(const Type *mas, Type *mas2, int N){
- // Обмен значениями попарно соседних элементов массива не изменяя его (запись в дополнительный массив)
- Type i;
- for(i = 1; i < N; i += 2){
- mas2[i] = mas[i-1];
- mas2[i-1] = mas[i];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement