Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Прошу помогите C++

Leyla Nuriyeva Ученик (193), на голосовании 2 дня назад
Помогите с++ программирование пж Ванечка подарил Анечке массив из N чисел. У Анечки есть любимое счастливое число — оно всегда помогает ей сдавать даже неправильные решения задач. Анечке стало очень интересно, сколько пар чисел из подаренного массива в сумме дают число K. К сожалению, сейчас она занята подготовкой к контрольной и не может это узнать. Помогите ей!
Голосование за лучший ответ
Ксения Райт Гений (97138) 1 месяц назад
 #include <vector> 
#include <iostream>

using namespace std;

int main()
{
int k = 0, K, l, m, N;
cout << "K N: ";
cin >> K >> N;
vector<int> A(N);
for (l = 0; l < N; ++l) cin >> A[l];
for (l = 0; l < N; ++l)
for (m = l + 1; m < N; ++m)
if (A[l] + A[m] == K) ++k;
cout << k << endl;
return 0;
}
Leyla NuriyevaУченик (193) 1 месяц назад
тут ошибка помогите пожалуйста
Ксения Райт Гений (97138) 1) У Вас не указано ни что за массив (какого типа - целого? вещественного?), ни откуда он берётся. 2) Так как представлено в коде вверху вводятся сначала магическое число К и количество компонент массива N, а затем и не менее N целых чисел. Все переменные (K, N и все компоненты массива имеют тип int). 3) Сумма элемента массива с самим собой за сумму пары элементов не считается! Сумма, например, первого и пятого элементов массива и равная ему сумма пятого и первого элемента того же массива считается сумма одной и той же пары элементов! P.S. Никаких ошибок в представленном коде нет, зато есть уязвимости, связанные с представимостью целых чисел ограниченным типом данных и возможным вводом некорректной информации.
Николай Веселуха Высший разум (368761) 1 месяц назад
 #include <iostream> 
#include <vector>

using namespace std;

struct Pair {
using num_t = long;
using sum_t = long long;
num_t a;
num_t b;
bool matches(const sum_t k) const {
return (sum_t)a + (sum_t)b == k;
}
};

class Task {
public:
Task(const vector<Pair::num_t>& present) {
const size_t n = present.size();
const auto m = n - 1;
for (size_t i = 0; i < m; ++i) {
for (size_t j = i + 1; j < n; ++j) {
pairs.emplace_back(Pair{ present[i], present[j] });
}
}
}
size_t count(const Pair::sum_t k) const {
size_t quantity = 0;
for (const auto& item : pairs) {
if (item.matches(k)) {
++quantity;
}
}
return quantity;
}
private:
vector<Pair> pairs;
};

int main() {
size_t n;
cin >> n;
vector<Pair::num_t> present(n);
for (auto& number : present) cin >> number;
Task task(present);
Pair::sum_t k;
cin >> k;
const auto matches = task.count(k);
cout << matches << '\n';
}
Похожие вопросы