Алгоритм двоичного поиска в C ++ - PullRequest
0 голосов
/ 23 апреля 2020

Я новичок в программировании, поэтому, пожалуйста, помогите мне выполнить задачу, проблема заключается в следующем: после нажатия y, пока l oop не запускается снова. и во-вторых, как распечатать или получить элементы массива в порядке убывания?

спасибо!

#include <iostream>
using namespace std;

int main()
{
    int item;
    int flaging = 0;
    int ind_low = 0;
    int ind_high = 9;
    int ind_mid = (ind_low + ind_high) / 2;
    char conti;

    //Array declaration and taking user input
    int arr[10];

    cout << "enter some values here : \n" << endl;

    for (int i = 0; i < 10; i++)
    {
        cin >> arr[i];
    }

    // for sorthing the array
    int temp;
    for (int p = 1; p <= 9; p++)
        for (int c = 0; c <= 8; c++)
            if (arr[c] > arr[c + 1])
            {
                temp = arr[c];
                arr[c] = arr[c + 1];
                arr[c + 1] = temp;
            }

    do {
        //asking for searching

        cout << "Enter the value you want to search : " << endl;
        cin >> item;

        while (ind_low <= ind_high)
        {
            if (item == arr[ind_mid])
            {
                cout << "At " << ind_mid << " index the value " << item << " is found " << endl;
                flaging++;
                break;
            }

            if (item < arr[ind_mid])
            {
                ind_high = ind_mid - 1;
                ind_mid = (ind_low + ind_high) / 2;
            }
            else
            {
                ind_low = ind_mid + 1;
                ind_mid = (ind_low + ind_high) / 2;
            }
        }

        if (flaging == 0)
        {
            cout << "Value not found" << endl;
        }

        cout << "To search again press 'y', to exit press any key" << endl;
        cin >> conti;
    } while ((conti == 'y') || (conti == 'Y'));

}

1 Ответ

0 голосов
/ 23 апреля 2020

когда я запустил его на своем p c после нажатия y, он снова запустился, можете ли вы предоставить ввод, который вам не помог? на второй вопрос что ты имеешь ввиду? Вы можете сделать для l oop следующее:

for(int index = ARR_SIZE -1 ; index >= 0 ; --index){
cout << array[index];
}

edit: я понимаю, что вы имеете в виду. после каждого запуска вы должны сбрасывать свои индексы, в противном случае вы всегда будете запускать один и тот же:

, прежде чем завершить l oop, значения должны быть сброшены.

ind_low = 0;
ind_high = 9;
ind_mid = (ind_low + ind_high) / 2;

, которые будут печататься массив от конца к началу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...