78 / 24 / 13
Регистрация: 01.06.2019
Сообщений: 571
1

Написать функцию, которая возвращает сумму элементов массива с номерами от left до right

19.08.2019, 19:26. Показов 3971. Ответов 10
Метки нет (Все метки)

Написать функцию, которая принимает массив размера N и целые числа left и right и возвращает сумму элементов массива с номерами от left до right включительно.
Задать размерность массива как глобальную константу. Аргументы left и right использовать как аргументы по умолчанию. Функция должна также работать с типами short, float, double.

Добавлено через 35 минут
Не понимаю что тут требуется
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include<ctime>
using namespace std;
 
void Zap_mas(int arr[], int sz)
{
    //цикл заполнение
    for (int i = 0; i < sz; i++)
        arr[i] = rand() % 100 + 10;
}
 
void Vivod_mas(int arr[], int sz)
{
    //цикл вывод
    for (int i = 0; i < sz; i++)
        cout << arr[i] << " ";
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
 
    const unsigned int s = 10;
    int arr[s], sum = 0;
    cout << "Массив: ";
    Zap_mas(arr, s);
    Vivod_mas(arr, s);
 
    cout << endl;
    system("pause");
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.08.2019, 19:26
Ответы с готовыми решениями:

Написать функцию, которая возвращает сумму отрицательных элементов одномерного массива.
помогите пож-та.Написать функцию, которая возвращает сумму отрицательных элементов одномерного...

Написать функцию, которая возвращает количество неотрицательных элементов массива.
Написать функцию, которая возвращает количество неотрицательных элементов массива. Массив...

Написать функцию, которая возвращает среднее значение элементов одномерного массива
2. Написать функцию, которая возвращает среднее значение элементов одномерного массива.

Функция: вернуть сумму элементов массива с номерами от left до right включительно
Написать функцию, которая принимает массив размера N и целые числа left и right и возвращает сумму...

10
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
19.08.2019, 19:29 2
Цитата Сообщение от Rudman132 Посмотреть сообщение
Не понимаю что тут требуется
Что именно вам не понятно?
Проходиться по массиву вы умеете, судя по функциям Vivod_mas и Zap_mas
0
357 / 224 / 120
Регистрация: 25.06.2019
Сообщений: 828
19.08.2019, 19:31 3
C++
1
2
3
4
5
6
7
8
9
void Zap_mas(int arr[], int sz)
..
int left,right;
cout<<"left right: ";
cin>>left>>right;
int s=0;
for(int i=left; i<=right; i++)
s+=arr[i];
cout<<"sum="<<s<<endl;
0
78 / 24 / 13
Регистрация: 01.06.2019
Сообщений: 571
19.08.2019, 19:32  [ТС] 4
Цитата Сообщение от Cortas Посмотреть сообщение
Что именно вам не понятно?
Нужно посчитать все елементы и вывести от left до right?
0
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
19.08.2019, 19:34 5
Rudman132
Цитата Сообщение от Rudman132 Посмотреть сообщение
возвращает сумму элементов массива с номерами от left до right
Просто посчитать сумму от 3 элемента до 5 при длине массива в 10, например. Про вывод этих элементов тут, вроде, ничего не написано
0
78 / 24 / 13
Регистрация: 01.06.2019
Сообщений: 571
19.08.2019, 19:42  [ТС] 6
Цитата Сообщение от Pvt Посмотреть сообщение
C++
А можно полный код?

Добавлено через 7 минут
Цитата Сообщение от Cortas Посмотреть сообщение
вывод этих элементов
Вывести все равно надо, чтоб увидеть, как это сделать?
0
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
19.08.2019, 19:44 7
Цитата Сообщение от Rudman132 Посмотреть сообщение
Вывести все равно надо, чтоб увидеть, как это сделать?
Так у вас же есть функция для этого: Vivod_mas. Разве это не ваш код?
0
357 / 224 / 120
Регистрация: 25.06.2019
Сообщений: 828
19.08.2019, 19:44 8
Цитата Сообщение от Rudman132 Посмотреть сообщение
А можно полный код?
стр.29->стр.3 моего кода
0
78 / 24 / 13
Регистрация: 01.06.2019
Сообщений: 571
19.08.2019, 19:46  [ТС] 9
Цитата Сообщение от Pvt Посмотреть сообщение
стр.29->стр.3 моего кода
Не понял
0
812 / 500 / 210
Регистрация: 19.01.2019
Сообщений: 1,196
19.08.2019, 19:48 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
const size_t N = 4;
 
template <typename T>
T sum(T* arr, size_t l = 0, size_t r = N - 1) {
    return l == r ? arr[r] : arr[l] + sum(arr, l + 1, r);
}
 
int main()
{
    float arr[N]{ 1.11, 2.22, 3.33, 4.44 };
    std::cout << sum(arr);
    return 0;
}
0
6320 / 4296 / 2464
Регистрация: 18.12.2017
Сообщений: 13,361
20.08.2019, 01:42 11
Лучший ответ Сообщение было отмечено Rudman132 как решение

Решение

номера и индексы отличаются на единичку number=index+1

функция:
C++
1
2
3
4
5
6
7
8
template <typename T>
T Sum(T* arr, int left=1, int right=N) 
{
    T sum=0;
    for (int i=left-1; i<right; i++)          
    sum+=arr[i];       
    return sum;
}
пример реализации:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
using namespace std; 
const int N=3;
 
template <typename T>
void Print (T* arr)
{
    for (int i=0; i<N; i++)      
    cout << arr[i] << " ";
    cout << "\n";
}
 
template <typename T>
T Sum(T* arr, int left=1, int right=N) 
{
    T sum=0;
    for (int i=left-1; i<right; i++)
    {       
    sum+=arr[i];   
    }
    return sum;
}
 
int main()
{
    int left, right;
    
    short A[N]={1, 2, 5};
    cout << "Array A: ";
    Print(A);
    float B[N]={ 0.1f, 0.5f, 2.5f};
    cout << "Array B: ";
    Print(B);
    double C[N]={ 0.3, 1.5, 10.1};
    cout << "Array C: ";
    Print(C);
    
    char ch;
    cout << "Full array ? Y - YES, N or other - NO\n"; cin >> ch;
    if (ch!='Y')
    {
        do
        {    
        cout << "left position="; cin >> left;    
        if (1>left || left>N) cout << "1<=left<=" << N <<  " Repeat please...\n";
        }
        while (1>left || left>N);
        do
        {    
        cout << "right position="; cin >> right;    
        if (left>right || right>N) cout << left << "<=right<=" << N <<  " Repeat please...\n";
        }
        while (left>right || right>N);
        cout << "local sum_A=" << Sum(A,left,right) << "\n";
        cout << "local sum_B=" << Sum(B,left,right) << "\n";
        cout << "local sum_C=" << Sum(C,left,right) << "\n";
    }   
    else 
    {
    cout << "sum_A=" << Sum(A) << "\n";
    cout << "sum_B=" << Sum(B) << "\n";  
    cout << "sum_C=" << Sum(C) << "\n";    
    }
    
system("pause");
return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2019, 01:42

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Написать функцию, которая возвращает сумму чисел в заданном диапазоне
Кто знает как решить задачу на С++, при помощи рекурсии? Написать функцию, которая возвращает...

Написать функцию, которая определяет сумму положительных элементов массива целых чисел
Помогите написать программу) 1)Написать функцию, которая определяет сумму положительных элементов...

Написать шаблонную функцию,которая вычислит сумму значений отрицательных элементов массива числового типа
Помогите с задачей на шаблонные функции. Я их вообще не понимаю. Вот задание.Мне сказали, что...

Написать функцию, которая возвращает максимальный элемент одномерного массива
Написать функцию, которая возвращает максимальный элемент одномерного массива


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.