Модифицированный бинарный поиск: программа завершается с ошибкой - C (СИ)

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

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

Доброго времени суток. Чутка модифицировал функцию бинарного поиска и теперь программа завершается с ошибкой, причем в режиме отладчика завершается все нормально. Прошу помощи.
#include <stdio.h>
#include <stdlib.h>
 
#define SIZE 200
 
int binsearch(int, int [SIZE], int);
void SetMass (int [], int, int);
 
int main()
{
    int x, v[SIZE], result;
 
    SetMass(v, 150, 1);
    x = 250;
    result = binsearch(x, v, SIZE);
    printf("%d\n",result);
    return 0;
}
// возращает позицию элемента массива v размерностью n, совпадающего с x; ver.2
int binsearch(int x, int v[], int n) // преполагается что v - упорядочный по возрастанию массив
{
    int low, high, mid;
 
    low = 0;
    high = n - 1;
    while (low <= high && x != v[mid])
    {
        mid = (low + high) /2;
        if (x < v[mid])
            high = mid -1;
        else
            low = mid + 1;
    }
    if ( x == v[mid])
        return mid;
    else
        return -1;
}
void SetMass(int v[],int a,int step)// заполняет массив v упорядоченными числами с шагом step
{
    int i;
    for (i=0; i<SIZE; i++, a += step)
        v[i] = a;
}

Решение задачи: «Модифицированный бинарный поиск: программа завершается с ошибкой»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
#define SIZE 200
 
int binsearch(int, int [SIZE], int);
void SetMass (int [], int, int);
 
int main()
{
    int x, v[SIZE], result;
 
    SetMass(v, 150, 1);
    x = 250;
    result = binsearch(x, v, SIZE);
    printf("%d\n",result);
    return 0;
}
// возращает позицию элемента массива v размерностью n, совпадающего с x; ver.2
int binsearch(int x, int v[], int n) // преполагается что v - упорядочный по возрастанию массив
{
    int low, high, mid;
 
    low = 0;
    high = n - 1;
    mid = (low + high) /2;
    while (low <= high && x != v[mid])
    {
        if (x < v[mid])
            high = mid -1;
        else
            low = mid + 1;
        mid = (low + high) /2;
    }
    if ( x == v[mid])
        return mid;
    else
        return -1;
}
void SetMass(int v[],int a,int step)// заполняет массив v упорядоченными числами с шагом step
{
    int i;
    for (i=0; i<SIZE; i++, a += step)
        v[i] = a;
}

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

  1. Программа включает две функции: binsearch и SetMass.
  2. Функция binsearch выполняет модифицированный бинарный поиск в массиве v элементов, где n - размер массива.
  3. В функции main создается массив v размером 200, заполняется значениями с шагом 1 с помощью функции SetMass и инициализируется переменная x значением 250.
  4. Затем вызывается функция binsearch с аргументами x, v и 200, и результат поиска выводится на экран.
  5. Функция SetMass заполняет массив v значениями с шагом step.
  6. Если в процессе бинарного поиска найден элемент x, функция возвращает его индекс.
  7. Если элемент x не найден, функция возвращает -1.

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


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

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

9   голосов , оценка 3.667 из 5
Похожие ответы