Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2019, 06:58   #1
27843870
 
Регистрация: 03.06.2019
Сообщений: 4
По умолчанию Написать функцию через указатель

Функция производит двоичный поиск места размещения нового элемента в упорядоченном массиве и возвращает указатель на место включения нового элемента. С помощью функции реализовать сортировку вставками. Вариант задания реализовать в виде функции, использующей для работы со строкой только указатели и операции вида *p++, p++ и т.д. Если функция возвращает строку или ее фрагмент, то это также необходимо сделать через указатель. Есть код,но не уверен, что он правильный как по заданию, помогите разобраться?
Код:
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
 
int binarysearch(int a, int mass[], int n);
void InsertionSort(int n, int mass[]);
 
int main()
{
    //ввод N
    int N, a;
    printf("Input N: ");
    scanf_s("%d", &N);
    //выделение памяти под массив
    int* mass;
    mass = (int *)malloc(N * sizeof(int));
    //ввод элементов массива
    printf("Input the array elements:\n");
    for (int i = 0; i < N; i++)
        scanf_s("%d", &mass[i]);
    //сортировка вставками
    InsertionSort(N, mass);
    //вывод отсортированного массива на экран
    printf("Sorted array:\n");
    for (int i = 0; i < N; i++)
        printf("%d ", mass[i]);
    printf("\n");
    //ввод искомого элемента
    printf("Input variable 'a' for search: ");
    scanf_s("%d", &a);
    int k;
    //двоичный поиск
    k = binarysearch(a, mass, N);
    if (k != -1)
    {
        printf("The index of the element is %d\n", k);
    }
    else
        printf("The element isn't found!\n");
    //освобождение памяти
    free(mass);
    _getch();
    return 0;
}
 
int binarysearch(int a, int mass[], int n)
{
    int low, high, middle;
    low = 0;
    high = n - 1;
    while (low <= high)
    {
        middle = (low + high) / 2;
        if (a < mass[middle])
            high = middle - 1;
        else if (a > mass[middle])
            low = middle + 1;
        else 
            return middle;
    }
    return -1;
}
 
//сортировка вставками
void InsertionSort(int n, int mass[])
{
    int newElement, location;
 
    for (int i = 1; i < n; i++)
    {
        newElement = mass[i];
        location = i - 1;
        while (location >= 0 && mass[location] > newElement)
        {
            mass[location + 1] = mass[location];
            location = location - 1;
        }
        mass[location + 1] = newElement;
    }
}

Последний раз редактировалось Аватар; 24.10.2019 в 08:14.
27843870 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать код программы через функцию - C (СИ) Кристина1998 Помощь студентам 0 01.12.2016 21:53
Как написать программу через функцию? Си Кристина1998 Помощь студентам 65 02.11.2016 23:20
Передать указатель на указатель в функцию erro Общие вопросы C/C++ 3 29.10.2012 17:59
как прогу написать через функцию zdanilv Visual C++ 3 25.04.2011 22:15
Как передать указатель на функцию в функцию WIN32APIist Общие вопросы C/C++ 1 27.01.2011 10:35