0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 39
1

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

01.04.2020, 09:14. Показов 409. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2020, 09:14
Ответы с готовыми решениями:

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

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

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

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

2
6740 / 4538 / 1840
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
01.04.2020, 10:24 2
Цитата Сообщение от frostbite101 Посмотреть сообщение
Написал код, а вот с функцией проблема.
shatl(A, N, &pr);
0
Модератор
Эксперт С++
11323 / 9299 / 5579
Регистрация: 18.12.2011
Сообщений: 24,806
01.04.2020, 11:16 3
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2020, 11:16

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.