Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+1

Помогите решить задачу на перегрузки функции

Добавьте перегруженную функцию long long sum(int a[], int k, int m) которая возвращает как результат сумму элементов последовательности с индексами из диапазона [k, m).

Формат входных данных
В первой строке задаётся число, обозначающее версию функции, которую необходимо будет использовать:

1 - long long sum(vector<int> a)

2 - long long sum(vector<int> a, int k)

3 - long long sum(int a[], int k)

8 - long long sum(int a[], int k, int m)

Для значений от 1 до 3 формат входных данных повторяет задачи из классной работы.

Для 8 формат следующий:

В следующей строке входных данных задается натуральное число N - количество элементов последовательности. N не превосходит 106.

В следующей строке вводятся N целых чисел через пробел, по модулю не превосходящие 109.

В последней строке вводятся два целых положительных числа k и m,(0 ≤ k < m ≤ N).

Формат выходных данных
Выведите единственное число - результат работы функции.

Примечания
В задачу требуется отправить только описание функций.

сам код:
#include <iostream>
#include <vector>
using namespace std;
long long sum(vector<int>); // 1
long long sum(vector<int>, int); // 2
long long sum(int*, int); // 3
long long sum(vector<int>, int, int); // 4
void sum(vector<int>&, vector<int>, int); // 5
long long sum(int a[][100], int, int); // 6
long long sum(vector<vector<int>>); // 7
long long sum(int*, int, int); // 8
void sum(int a[][100], int b[][100], int, int); // 9
void print(vector<int>);
void print(int *, int);
void print(int a[][100], int, int);
//начало функции

//конец функции
void prob1();
void prob2();
void prob3();
void prob8();

int main() {
int n;
cin >> n;
switch (n) {
case 1: prob1(); break;
case 2: prob2(); break;
case 3: prob3(); break;
case 8: prob8(); break;
}
return 0;
}

void prob1() {
int n;
cin >> n;
vector<int> a(n);
for (int &i : a) cin >> i;
cout << sum(a);
}

void prob2() {
int n;
cin >> n;
vector<int> a(n);
for (int &i : a) cin >> i;
cin >> n;
cout << sum(a, n);
}

void prob3() {
int n;
cin >> n;
int *a = new int[n];
for (int i = 0; i < n; i++)
cin >> a[i];
cin >> n;
cout << sum(a, n);
delete[] a;
}

void prob8() {
int n, m;
cin >> n;
int *a = new int[n];
for (int i = 0; i < n; i++)
cin >> a[i];
cin >> n >> m;
cout << sum(a, n, m);
delete[] a;
}


void print(vector<int>a) {
for (int i : a)
cout << i << " ";
}

void print(int *a, int n) {
for (int i = 0; i < n; i++)
cout << a[i] << " ";
}

void print(int a[][100], int n, int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
cout << a[i][j] << " ";
cout << endl;
}
}

писать можно только между комментариями "начало функции" и "конец функции" остальной код должен остаться без изменений

По дате
По рейтингу
Аватар пользователя
Оракул
123456789101112
 //начало функции  
 
long long sum(int a[], int k, int m) { 
    long long total = 0; 
    for (int i = k; i < m; i++) { 
        total += a[i]; 
    } 
    return total; 
} 
 
//конец функции