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

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

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

Есть задание. Сделать пузырьковую сортировку. С использованием функций. Написал что знаю, но все равно не работает. Поэтому решил обратиться к более опытным людям (пишу сюда первый раз, до этого онлирид). Программа содержит функции:
  • INPUTMAS - вводим массив;
  • OUTPUTMAS - выводим массив на экран. Плюс, используется для вывода отсортированного массива;
  • SORT - пузырьковая сортировка.
Вот недокод:
#include<stdio.h>
int n=10;
void inputmas(int a[n]);
//int outpumas(int a[n]);
void sort (int a[n]);
int main()
{
void inputmas(int a[n]) //вводим массив
{
int i;
for(i=0;i<n;i++)
{
    printf("mas[%d]=",i); //Диалога нет. Сразу, почему то прыгает на ретурн
    scanf("%d",&a[i]);
}
}
}
//int outputmas(int a[n])
//{ здесь нужно вывести введенный массив
//for(i=0;i<n;i++)
//{
    //printf("mas[a]={%d}",i);
void sort{int a[n]) //пузырьковая сортировка. Как вы поняли, не работает
{
    int t=0,i,j;
    for(i=0;i<n;i++)
    {
        for(j=n-1;j>=1;j--)
        {
            if(a[j]<a[j-1])
            {
                t=a[j]; a[j]=a[j-1]; a[j-1]=t;
            }
        }
    }
}
//int outputmas
//{ 
//printf("%d",t); здесь нужно вывести отсортированный массив
Прошу помочь с кодом на Си. Не С++.

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

textual
Листинг программы
#include<stdio.h>
#include <stdlib.h>
 
void inputmas(int *a, int n) //вводим массив
{
int i;
for(i=0;i<n;i++)
{
    scanf("%d ",&a[i]);
}
}
 
void sort(int *a, int n) 
{
  int i, j, tmp;
  
  for(i = 0; i < n; i++)
  for(j = n - 1; j >= 0; j--)
  if(a[j] < a[j+1])
  {
      tmp = a[j];
      a[j] = a[j+1];
      a[j+1] = tmp;
  }
}
 
void outputmas(int *a, int n)
{
    int i;
    for(i = 0; i < n; i++)
    printf("%d ", a[i]);
}
int main()
{
 
    int n;
    int *a;
    
    scanf("%d", &n);
    a = (int*)calloc(n, sizeof(int));
    inputmas(a, n);
    sort(a, n);
    outputmas(a, n);
return 0;
}

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

  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
Похожие ответы