Изменить код используя указатели - C (СИ)
Формулировка задачи:
Мне надо изменить код используя указатели, как это сделать? Подскажите, пожалуйста!
вот сам код:
int m[n]; clrscr(); printf("Bedute 15 elemeHtoB macuBa\n"); for(int i = 0; i < n; i++) { printf("mass[%d] = ", i); scanf("%d", &m[i]); } for(int i = n - 1; i >= 1; i--) for(int j = 0; j < i; j++) { if(m[j] > m[j+1]) { int foo = m[j]; m[j] = m[j+1]; m[j+1] = foo; } } printf("\n"); for(int i = 0; i < n; i++) printf(" %d ", m[i]); getch();
Решение задачи: «Изменить код используя указатели»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define SWAP(a, b) ({ int t = *a; *a = *b; *b = t; }) int main(void){ int * arr, * i, * j, size; printf("Size: "); scanf("%d", &size); if ( ( arr = (int*)malloc(sizeof(int) * size) ) == NULL ){ perror("malloc"); exit(1); } for ( i = arr; i < arr + size; ++i ){ printf("Array[%d] = ", i - arr); scanf("%d", i); } for ( i = arr + size - 1; i > arr; --i ) for ( j = arr; j < i; ++j ) if ( *j > *i ) SWAP(i, j); for ( i = arr; i < arr + size; ++i ) printf("%d ", *i); printf("\n"); free(arr); exit(0); }
Объяснение кода листинга программы
- Программа запрашивает у пользователя размер массива и сохраняет его в переменной
size
. - С помощью функции
malloc
выделяется память под массив целых чисел, и указатель на первый элемент массива сохраняется в переменнойarr
. - Затем программа заполняет массив числами, которые пользователь вводит с клавиатуры.
- После заполнения массива программа сортирует его методом
сортировки пузырьком
. - Затем программа выводит отсортированный массив на экран.
- После вывода массива программа освобождает память, выделенную под массив, с помощью функции
free
. - Программа завершает свое выполнение и возвращает 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д