Advertisement
dmkozyrev

swap_elements

Jan 15th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.14 KB | None | 0 0
  1. /**
  2. =============================================================
  3.     Экзаменационный билет #16
  4.     Предмет: Языки и методы программирования
  5.     Экзаменатор1: Парфенов Денис Васильевич (составитель)
  6.     Экзаменатор2: Петрусевич Денис Андреевич
  7. =============================================================
  8. Задание 1. Статическое, автоматическое и динамическое
  9. выделение памяти. Понятие регистровой памяти, кучи и стека.
  10. Функции динамического выделения памяти malloc и free.
  11. Стратегии работы с динамической памятью. Использование
  12. операции sizeof.
  13.  
  14. Задание 2. Структуры, массивы и указатели: структуры,
  15. содержащие массивы и указатели, массивы структур, указатели
  16. на структуры и доступ к элементам структур по указателю
  17. (приведите примеры каждого случая). Передача структуры в
  18. функцию. Размещение указателя на функцию в структуре.
  19.  
  20. Задание 3. Запрограммируйте функцию, которая обменивает в
  21. массиве попарно соседние элементы (первый со вторым, третий с
  22. четвертым, и т.д.). Если длина массива нечетна, то последний
  23. элемент ни с кем не обменивается.
  24. =============================================================
  25. **/
  26.  
  27. #include <stdio.h>
  28. #include <stdlib.h>
  29. typedef int Type; // Используемый для элементов массива тип
  30.  
  31. void swap(Type *, Type *); // Обмен значениями двух переменных
  32. void swap_elements(Type *, int); // Обмен попарно соседних элементов массива
  33. void swap_elements2(const Type *, Type *, int); // Обмен попарно соседних элементов массива не изменяя его
  34. void print_mas(Type *, int); // Вывод массива на экран
  35.  
  36. int main(){
  37.     // Создадим массив
  38.     unsigned const int N = 11; // Количество элементов в массиве
  39.     Type mas[N];
  40.  
  41.     // Заполним его
  42.     int i;
  43.     for(i = 0; i < N; i++)
  44.         mas[i] = i;
  45.  
  46.     // Выведем на экран
  47.     print_mas(mas, N);
  48.  
  49.     // Обменяем в нем попарно соседние элементы
  50.     swap_elements(mas, N);
  51.  
  52.  
  53.     // Усложнение от Петрусевича: Решить задачу, не изменяя исходный массив
  54.     // Необходимо раскомментировать этот участок кода и закомментировать строку 50: swap_elements(mas, N);
  55.     /*
  56.     Type mas2[N];
  57.     swap_elements2(mas, mas2, N);
  58.     print_mas(mas, N);
  59.     print_mas(mas2, N);
  60.     */
  61.  
  62.     return 0;
  63. }
  64.  
  65. void swap(Type *a, Type *b){
  66. // Обмен значениями двух переменных
  67.     Type temp = *a;
  68.     *a = *b;
  69.     *b = temp;
  70. }
  71.  
  72. void swap_elements(Type *mas, int N){
  73. // Обмен значениями попарно соседних элементов массива
  74.     Type i;
  75.     for(i = 1; i < N; i += 2)
  76.         swap(mas+i-1, mas+i);
  77. }
  78.  
  79. void print_mas(Type *mas, int N){
  80. // Вывод массива на экран
  81.     int i;
  82.     for(i = 0; i < N; i++)
  83.         printf("%d ", mas[i]);
  84.     printf("\n");
  85. }
  86.  
  87. void swap_elements2(const Type *mas, Type *mas2, int N){
  88. // Обмен значениями попарно соседних элементов массива не изменяя его (запись в дополнительный массив)
  89.     Type i;
  90.     for(i = 1; i < N; i += 2){
  91.         mas2[i] = mas[i-1];
  92.         mas2[i-1] = mas[i];
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement