Пузырьковая сортировка. Функции - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть задание. Сделать пузырьковую сортировку. С использованием функций. Написал что знаю, но все равно не работает. Поэтому решил обратиться к более опытным людям (пишу сюда первый раз, до этого онлирид). Программа содержит функции:
  • INPUTMAS - вводим массив;
  • OUTPUTMAS - выводим массив на экран. Плюс, используется для вывода отсортированного массива;
  • SORT - пузырьковая сортировка.
Вот недокод:
Листинг программы
  1. #include<stdio.h>
  2. int n=10;
  3. void inputmas(int a[n]);
  4. //int outpumas(int a[n]);
  5. void sort (int a[n]);
  6. int main()
  7. {
  8. void inputmas(int a[n]) //вводим массив
  9. {
  10. int i;
  11. for(i=0;i<n;i++)
  12. {
  13. printf("mas[%d]=",i); //Диалога нет. Сразу, почему то прыгает на ретурн
  14. scanf("%d",&a[i]);
  15. }
  16. }
  17. }
  18. //int outputmas(int a[n])
  19. //{ здесь нужно вывести введенный массив
  20. //for(i=0;i<n;i++)
  21. //{
  22. //printf("mas[a]={%d}",i);
  23. void sort{int a[n]) //пузырьковая сортировка. Как вы поняли, не работает
  24. {
  25. int t=0,i,j;
  26. for(i=0;i<n;i++)
  27. {
  28. for(j=n-1;j>=1;j--)
  29. {
  30. if(a[j]<a[j-1])
  31. {
  32. t=a[j]; a[j]=a[j-1]; a[j-1]=t;
  33. }
  34. }
  35. }
  36. }
  37. //int outputmas
  38. //{
  39. //printf("%d",t); здесь нужно вывести отсортированный массив
Прошу помочь с кодом на Си. Не С++.

Решение задачи: «Пузырьковая сортировка. Функции»

textual
Листинг программы
  1. #include<stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void inputmas(int *a, int n) //вводим массив
  5. {
  6. int i;
  7. for(i=0;i<n;i++)
  8. {
  9.     scanf("%d ",&a[i]);
  10. }
  11. }
  12.  
  13. void sort(int *a, int n)
  14. {
  15.   int i, j, tmp;
  16.  
  17.   for(i = 0; i < n; i++)
  18.   for(j = n - 1; j >= 0; j--)
  19.   if(a[j] < a[j+1])
  20.   {
  21.       tmp = a[j];
  22.       a[j] = a[j+1];
  23.       a[j+1] = tmp;
  24.   }
  25. }
  26.  
  27. void outputmas(int *a, int n)
  28. {
  29.     int i;
  30.     for(i = 0; i < n; i++)
  31.     printf("%d ", a[i]);
  32. }
  33. int main()
  34. {
  35.  
  36.     int n;
  37.     int *a;
  38.    
  39.     scanf("%d", &n);
  40.     a = (int*)calloc(n, sizeof(int));
  41.     inputmas(a, n);
  42.     sort(a, n);
  43.     outputmas(a, n);
  44. return 0;
  45. }

Объяснение кода листинга программы

  1. #include — подключаем стандартную библиотеку для работы с файлами ввода/вывода
  2. #include — подключаем стандартную библиотеку для работы с памятью
  3. *void inputmas(int a, int n)** — функция для ввода массива
  4. int i; — объявление переменной для цикла
  5. for(i=0;i<n;i++) — цикл для прохода по всем элементам массива
  6. scanf(%d,&a[i]); — ввод элемента массива с помощью функции scanf
  7. *void sort(int a, int n)** — функция для сортировки массива методом пузырька
  8. int i, j, tmp; — объявление переменных для сортировки
  9. for(i = 0; i < n; i++) — внешний цикл для прохода по всем элементам массива
  10. for(j = n - 1; j >= 0; j--) — внутренний цикл для сравнения элементов
  11. if(a[j] < a[j+1]) — условие для обмена элементов
  12. tmp = a[j]; — временная переменная для хранения элемента
  13. a[j] = a[j+1]; — обмен элементов
  14. a[j+1] = tmp; — обмен элементов
  15. *void outputmas(int a, int n)** — функция для вывода отсортированного массива
  16. int i; — цикл для прохода по всем элементам массива
  17. printf(%d, a[i]); — вывод элемента массива с помощью функции printf
  18. int n; — переменная для хранения размера массива
  19. *int a;** — переменная для хранения указателя на массив
  20. scanf(%d, &n); — ввод размера массива с помощью функции scanf

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы