пытаюсь сделать алгоритм бинарного поиска, но такой чтобы при входе: A - массив, p - индекс первого элемента, r - индекс последнего элемента, число x, На выходе получить не позицию элемента равного х, а позицию элемента q удовлетворяющего условию A[q-1] < x <= A[q]. Ну и собсно путаюсь, и не как немогу ничего вразумительного сделать. Ps. именно по принцыпу бинарного поиска.
Тогда ты долго будешь учить с++. Обычный алгоритм таков - читаешь главу, делаешь программу согласно главе, дебажишь до понимания. Потом начинаешь менять этот исходник чтобы понять вариации изменения кода и поведения. И так тестишь пока есть вопросы. Потом берешь и читаешь следующую главу. Я сам не так давно таким образом с Qt возился. Книжка без практики, так же как и практика без книжки - пустая трата времени.
какие исходники, я даже алгоритм не могу продумать. Я сосбно и просил помочь именно с составлением алгоритма
ну бинарный поиск работает только при упорядоченном массиве, после прогулки на улице, написал вот это Code: int bin_find_mm(int *, int, int ,int, int); /* * Рекурсивная функция поиска позиции q, такой что * A[q-1] < x < A[q] * возвращает q */ int main(){ int mas[7]={1,4,6,7,10,16,23}; cout<<bin_find_mm(mas, 0, 6, 24, 7)<<endl; } int bin_find_mm(int *A, int p, int r, int x, int minq){ int temp = minq; if (p <= r){ int q = (p+r)/2; if (x < A[q]) temp = bin_find_mm(A, p, q-1, x, q); else if (x > A[q]) temp = bin_find_mm(A, q+1, r, x, minq); else return q; } if (temp < minq) return temp; else return minq; } проверил несколько раз, на листочке посчитал ручками, вроде работает. Может можно лучше сделать ?
И еще, как время в милисекундах получать, чтобы можно было засекать время работы функций делаю так Code: int timeBeg = time(NULL); .... int totalTime = time(NULL) - timeBeg; cout<<"total time to sort = "<<totalTime<<endl; но секунда величина очень большая %) PS. кодю в лине, WinAPI нету. PPS. проблема решена Code: #include <ctime> ... clock_t t0 = clock(); //что-нить делаем clock_t t1 = clock(); cout << "time: " << (double)(t1 - t0) / CLOCKS_PER_SEC << endl;
А как сделать так, чтобы при решении какого-нибудь уравнения(типа x-5+y+2=52-36) все числа с переменными(x и y например) оставались слева, а все остальные перемещались за знак равно вправо и при этом меняли знак с + на - и наоборот? К примеру чтобы из x-5+y+2=52-36 получилось x+y=52-36+5
Как принять ответ с помощью winsock (TCP), хочу чтобы у меня вместо квадратиков были русские буквы в принятом ответе! (речь идет о C++)
Либо с сервера отправлять русские буквы вместо квадратиков, либо дебажить и смотреть куда смотря указатели, если речь идёт о С++.
Вопщем. Как сделать так, чтобы числа перемещались влево, а x и у и их коэффициенты оставались слева, но числа при перемещении меняли знак?