У меня есть следующая программа, целью программы является отображение того, сколько раз каждое значение в векторе списка произошло.Не найти места, как предназначено
если кортеж 2: 3 встречается 3 раза в векторе, программа показывает это пользователю.
Ожидаемые результаты
- 0: 8 произошло 1 раз% х
- 2: 3 произошло 3 времени% х
- 9: 5 произошло 2 Время% х
- 8: 9 произошло 1 раз% х
фактический выход:
- 2: 3 произошло 3% Время 42
- 8: 9 произошло 1 раз 14%
- 9: 5 произошло 3% времени, 42
Любая идея, что я делаю неправильно ? Вот полная и поддающаяся проверке рабочая версия кода, который я использую
Любая помощь очень ценится.
#include <vector>
#include <iostream>
#include <tuple>
using namespace std;
int counter = 0;
double percentage;
int val = 0;
vector<tuple<int, int>> list = { make_tuple(2, 3), make_tuple(0, 8), make_tuple(2, 3), make_tuple(8, 9), make_tuple(9, 5), make_tuple(9, 5), make_tuple(2, 3) };
int binarysearch(vector<tuple<int, int>> list, int low, int high, tuple<int, int> number)
{
int index = low;
int mid = 0;
// loop till the condition is true
while (low <= high) {
// divide the array for search
mid = (low + high)/2;
if (list.at(mid) > number) {
high = mid - 1;
}
else {
low = mid + 1;
}
}return (high - index + 1);
}
int main()
{
while (counter <= list.size() - 1) {
val = binarysearch(list, counter, list.size() - 1, list.at(counter));
percentage = val * 100/list.size();
cout << "Value: " << get<0>(list.at(counter)) << ":" << get<1>(list.at(counter)) << " Occurs: " << val << " Time(s)" << " %" << percentage << endl;
counter += val;
}
return 0;
}
возражали пошагового ваш код с отладчиком? –
ничего, что я могу видеть, посмотрел несколько раз. – Mitch89
Я голосую, чтобы закрыть это, прося общую помощь по отладке и не делать это самостоятельно, вместо этого спрашивая о SO, затем удаляя Q, чтобы спросить следующий Q, пока вы его не сделаете (присваивание?). –