С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 39

Функция челночной сортировки целочисленного массива

01.04.2020, 09:14. Показов 1266. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал код, а вот с функцией проблема.

Написать и протестировать функцию челночной сортировки целочисленного массива с управляемым направлением (возрастание/убывание) сортировки по признаку.
Заголовок функции должен иметь вид
void shatl(int *a, int n, char *pr),
где а – сортируемый массив;
n – размер массива;
pr – признак, управляющий направлением сортировки;
pr "incr" - сортировка по возрастанию;
pr "decr" - сортировка по убыванию.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
 
void swap(int& n1, int& n2);
void shatl(int* A, int N, char* pr);
 
int main()
{
    const int N = 10;
    int A[N] = { 7, 9, 6, 1, 5, 4, 3, 2, 8, 9 };
    char pr;
    printf("Up-1 Down-2 \n");
    scanf("%c", &pr);
    shatl(A, N, *pr);
    
    
}
 
void shatl(int* A, int N, char* pr)
{
 
 
    if (*(pr) = '1' )
    {
        for (int i = 0; i < N - 1; i++)
            if (A[i] > A[i + 1])
            {
                swap(A[i], A[i + 1]);
                for (int k = i; (A[k] < A[k - 1]) && (k >= 1); k--)
                    swap(A[k], A[k - 1]);
            }
 
        for (int q = 0; q < N; q++)
            printf("%d ", A[q]);
        printf("\n");
    }
    else 
    {
        for (int i = 0; i < N - 1; i++)
            if (A[i] < A[i + 1])
            {
                swap(A[i], A[i + 1]);
                for (int k = i; (A[k] < A[k - 1]) && (k >= 1); k--)
                    swap(A[k], A[k - 1]);
            }
 
        for (int q = 0; q < N; q++)
            printf("%d ", A[q]);
        printf("\n");
 
    }
 
 
}
 
void swap(int& n1, int& n2)
{
    int _t = n1; n1 = n2; n2 = _t;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2020, 09:14
Ответы с готовыми решениями:

Написать программу сортировки динамического целочисленного массива
Написать программу сортировки динамического целочисленного массива через указатели

Функция, которая удаляет из целочисленного одномерного массива все, и возвращает новый размер массива
Разработать и испытать функцию, которая удаляет из целочисленного одномерного массива все, и возвращает новый размер массива. #include...

Функция находящая минимальный элемент целочисленного массива
При вводе исходного массива вначале следует ввести его размер (одно число для одномерных массивов, два числа — количество строк и столбцов...

2
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
01.04.2020, 10:24
Цитата Сообщение от frostbite101 Посмотреть сообщение
Написал код, а вот с функцией проблема.
shatl(A, N, &pr);
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
01.04.2020, 11:16
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
 
void swap(int& n1, int& n2);
void shatl(int* A, int N, char* pr);
 
int main()
{
    const int N = 10;
    int A[N] = { 7, 9, 6, 1, 5, 4, 3, 2, 8, 9 };
    char pr[5];
    printf("Up-1 Down-2 \n");
    int dir;
    scanf("%d", &dir);
    if (dir == 1)
        strcpy(pr, "incr");
    else
        strcpy(pr, "decr");
    shatl(A, N, pr);
    return 0;
}
 
void shatl(int* A, int N, char* pr)
{
 
    bool direction;
    if (strcmp(pr, "incr") == 0)
        direction = true;
    else
        direction = false;
    for (int i = 0; i < N - 1; i++)
    {
        if (direction && A[i] > A[i + 1])
        {
            swap(A[i], A[i + 1]);
            for (int k = i; (A[k] < A[k - 1]) && (k >= 1); k--)
                swap(A[k], A[k - 1]);
        }
        else if(!direction && A[i] < A[i + 1])
        {
            swap(A[i], A[i + 1]);
            for (int k = i; (A[k] > A[k - 1]) && (k >= 1); k--)
                swap(A[k], A[k - 1]);
        }
    }
    for (int q = 0; q < N; q++)
        printf("%d ", A[q]);
    printf("\n");
}
 
void swap(int& n1, int& n2)
{
    int _t = n1; n1 = n2; n2 = _t;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.04.2020, 11:16
Помогаю со студенческими работами здесь

Функция сортировки массива
Задание - необходимо осуществить сортировку, используя функцию. Я написал код, но он не работает. Прошу помочь его исправить. ...

Функция сортировки массива
Дан массив целых чисел. Напишите функцию, которая получает данный массив в качестве аргумента и сортирует его по возрастанию, а также...

Функция сортировки массива
Необходимо написать функцию сортировки массива структур с информацией по книгам по возрастанию года издания и возвращающую отсортированный...

Для челночной сортировки определить количество сравнений и обменов
Челночная сортировка. Размерность сортируемого массива: n = 10, n = 50, n = 250. Для указанного в задании алгоритма сортировки...

Составить программу сортировки целочисленного массива
Сортировка простым выбором. Размерность сортируемого массива: n = 20, n = 40, n = 80.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru