Koshak Опубликовано 19 сентября, 2011 Жалоба Поделиться Опубликовано 19 сентября, 2011 в программе нужно реализовать сначало бинарный, затем линейный поиск с выводом количества операций.мой код:# include # include # include using namespace std;int main(){ setlocale(LC_ALL,"Russian"); const int n=10; int X[n],i,h,j; cout << "массив задается " << endl; srand(time(NULL)); for(i=0;i { X[i]=rand()%20+1; } for (i=0;i < n;i++) { for (j=n-1;j>=i;j--) if(X[j-1] > X[j]) { h=X[j-1]; X[j-1]=X[j]; X[j]=h; } } for (i=0; i cout << X[i] << " "; cout << endl; int l=0,r=n-1,m =(l+r)/2,key,s=1; cout << "введите элемент" << endl; cin >> key; while((l<=r) && (X[m] != key)) { if (key > X[m]) l=m+1; else r=m-1; m=(l+r)/2; s++; } if (X[m] == key) cout << "номер равен " << m << endl; if (X[m] != key) cout << "таких элементов нет" << endl; cout << "количество операций = " << s << endl; int keys,u=0; cout << "введите новый элемент" << endl; cin >> keys; for(i=0;i if (X[i]==keys) cout << "номер элемента " << X[m] << endl; system("pause >> void"); return 0;}# include здесь работает бинарный поиск, но не могу реализовать линейный с выводом количества операций и номера элемента.проблема начинается вот отсюда: cout << "введите новый элемент" << endl; cin >> keys; for(i=0;i if (X[i]==keys) cout << "номер элемента " << X[m] << endl;int keys,u=0; Ссылка на комментарий
nonlux Опубликовано 19 сентября, 2011 Жалоба Поделиться Опубликовано 19 сентября, 2011 вообще есть такое слово, рефракторинг.Вот такой алкоритм действий:брутально пишешь кодесли не работает то делаешь рефракторингесли все равно не работаетотправляешь код сюда,чесно очень сложно читать не причесанный код, особенно когла отладчик открыть нет ни возможности ни желания.а так на вскидку X[m] помоему у тебя из бинарного в линейный поиск затисалсяпо секрету номер элемента будет i Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти