Упорядочить массив по убыванию - C (СИ)
Формулировка задачи:
Каким способом? Объясните, пожалуйста, ничего не получается=(
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #define n 5
- #define m 5
- int main()
- {
- int a[n],i;
- int *pa;
- pa=a;
- for(i=0;i<n;i++,pa++)
- {
- scanf("%d",pa);
- }
- pa-=n;
- printf("1 massiv ");
- for(i=0;i<n;i++,pa++)
- {
- printf("%d ",*pа);
- }
- printf("\n");
- getch();
- }
Решение задачи: «Упорядочить массив по убыванию»
textual
Листинг программы
- #include<stdio.h>
- #include<stdlib.h>
- #define N 5
- int main ()
- {
- int a[N];
- int *p=&a[0];
- int i, k,j;
- printf("Vedite a:\n");
- for(i=0;i<N;i++)
- scanf("%d",&a[i]);
- for(i=0;i<N;i++)
- for(j=i+1;j<N;j++)
- if(a[i]<a[j])
- {
- k=*(p+i);
- *(p+i)=*(p+j);
- *(p+j)=k;
- }
- for(i=0;i<N;i++)
- printf("%d ",a[i]);
- printf("\n");
- system("pause");
- return 0;
- }
Объяснение кода листинга программы
В этом коде происходит сортировка массива методом пузырька.
- Создаётся массив типа int a[N] и указатель на первый элемент этого массива p = &a[0].
- Далее, с помощью двух вложенных циклов, происходит сравнение каждого элемента массива с каждым другим элементом и, в случае если текущий элемент больше следующего, производится их перестановка местами.
- После сортировки элементов массива, они выводятся на экран с помощью цикла for и функции printf.
- В конце программы, с помощью функции system(
pause
), программа приостанавливается до нажатия клавиши. Следует отметить, что данный код может работать некорректно, если массив уже отсортирован по возрастанию или если в массиве будут повторяющиеся значения. Также, данный код может работать некорректно, если количество элементов в массиве будет меньше или равно 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д