Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
lev_
3 / 3 / 0
Регистрация: 26.05.2014
Сообщений: 208
Завершенные тесты: 1
#1

Шаблон функции для нахождения суммы отрицательных элементов массива - C++

03.06.2014, 08:36. Просмотров 2117. Ответов 3
Метки нет (Все метки)

имеется шаблон функции для нахождения суммы отрицательных элементов целочисленного массива.
как сделать массив из вещественных чисел.
templates.h
C++
1
2
3
4
5
6
7
8
template<typename T> T summa_otr(T *array, int n) //шаблон функции для нахождения суммы отр элементов
{
    T sum = 0;
    for(int i = 0; i < n; i++)
        if(array[i] < 0)
            sum += array[i];
    return sum;
}
main.cpp
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
#include "templates.h"
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    int n;
    setlocale(LC_ALL, "rus");
    cout << "Введите количество элементов массива: ";
    cin >> n;
    int *array = new int[n];
    cout << endl;
    for(int i = 0; i < n; i++) {
        cin >> array[i];
    }
    for(int i=0; i<n; i++)
    {
        cout << setw(10) << array[i];
    }
        cout << "\nСумма отрицательных: " << summa_otr(array, n) << endl;
        cin.get();
    delete [] array;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 08:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Шаблон функции для нахождения суммы отрицательных элементов массива (C++):

Шаблон функции, возвращающей количество отрицательных элементов массива - C++
Здравствуйте! Дано следующее задание: &quot;&quot;Использование функций и шаблонов функций&quot; Напишите программу, осуществляющую ввод элементов...

Шаблон функции для нахождения среднего арифметичного элементов масива - C++
Написать шаблон функции для нахождения среднего арифметичного елементов масива.

Создать шаблон функции для подсчёта количества отрицательных элементов матриц - C++
Создать шаблон функции для подсчёта количества отрицательных элементов матрицы A.Вызвать шаблон функции для матриц различного типа. ...

Определить количество положительных, отрицательных и нулевых элементов матрицы A(10,15). (Создать три функции для нахождения этих значений) - C++
Определить количество положительных, отрицательных и нулевых элементов матрицы A(10,15). (Создать три функции для нахождения этих...

Массивы: Определить частное от деления суммы положительных элементов массива на модуль суммы отрицательных элементов - C++
Всем привет, учусь в 9-ом классе. Помогите решить 3 задачи, пожалуйста. 1) Известны данные о количестве осадков, выпавших за каждый...

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

3
SatanaXIII
Супер-модератор
Эксперт С++
5690 / 2745 / 258
Регистрация: 01.11.2011
Сообщений: 6,699
Завершенные тесты: 1
03.06.2014, 08:49 #2
Цитата Сообщение от lev_ Посмотреть сообщение
как сделать массив из вещественных чисел.
C++
1
float arr[666];
0
lev_
3 / 3 / 0
Регистрация: 26.05.2014
Сообщений: 208
Завершенные тесты: 1
03.06.2014, 09:22  [ТС] #3
ну это понятно) а с шаблона как? вот полный код:
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
template<typename T> T summa_otr(T *array, int n) //шаблон функции для нахождения суммы отр элементов
{
    T sum = 0;
    for(int i = 0; i < n; i++)
        if(array[i] < 0)
            sum += array[i];
    return sum;
}
 
template<typename T> T multy(T *array, int n)
{
    T index_min = 0, index_max = 0;
    T mult = 1;
    T temp_index;
    for(int i = 0; i < n; i++) {
        if(array[i] < array[index_min])
            index_min = i;
        if(array[i] > array[index_max])
            index_max = i;
    }
    if(index_min > index_max) {
        temp_index = index_min;
        index_min = index_max;
        index_max = temp_index;
    }
 
    for(int i = index_min+1; i < index_max; i++)
        mult *= array[i];
 
    return mult;
}
 
template<typename T> void sort(T *array, int n)
{
    T temp;
    for(int i = 0; i < n-1; i++)
        for(int j = i+1; j < n; j++)
            if(array[i] > array[j]) {
                temp = array[i];
                array[i] = array[j];
                array[j] = temp;
            }
}
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
// Задание:
// В одномерном массиве, состоящем из n вещественных элементов, вычислить:
// 1. сумму отрицательных элементов массива;
// 2. произведение элементов массива, расположенных между максимальным и минимальным элементами.
// 3. Упорядочить элементы массива по возрастанию.
 
#include "templates.h"
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    int n;
    setlocale(LC_ALL, "rus");
    cout << "Введите количество элементов массива: ";
    cin >> n;
    float *array = new float[n];
    cout << endl;
    for(int i = 0; i < n; i++) {
        cin >> array[i];
    }
    for(int i=0; i<n; i++)
    {
        cout << setw(10) << array[i];
    }
    cout << endl;
    cout << "\n==========================================================\n";
    cout << "\n1) Сумма отрицательных: " << summa_otr(array, n) << endl;
    cout << "\n==========================================================\n";
    cout << "\n2) Произведение между мин. и макс: " << multy(array, n) << endl;
    cout << "\n==========================================================\n";
    cout << "\nОтсортированный массив:\n\n";
    sort(array, n);
    for(int i = 0; i < n; i++)
        cout << setw(10) << array[i];
    cout << endl;
    cin.get();
    delete [] array;
    return 0;
}
ошибка: преобразование "float" в "int" возможна потеря данных
0
SatanaXIII
Супер-модератор
Эксперт С++
5690 / 2745 / 258
Регистрация: 01.11.2011
Сообщений: 6,699
Завершенные тесты: 1
03.06.2014, 09:35 #4
Собственно чтобы понять, что не так, вам нужно всего лишь ответить на следующий вопрос:
C++
1
2
3
float arr[10];
float f = 5.156;
arr[f] = 1.3 // Куда он обратится по индексу f?

И далее чините в свое удовольствие свои шаблоны:
C++
10
11
12
13
14
15
16
template<typename T> T multy(T *array, int n)
{
    T index_min = 0, index_max = 0;
    T mult = 1;
    T temp_index;
    for(int i = 0; i < n; i++) {
        if(array[i] < array[index_min]) // Такая же ситуация...
Индексы массивов могут быть только целочисленные.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 09:35
Привет! Вот еще темы с ответами:

Шаблон функции для поиска произведения всех элементов одномерного массива - C++
Есть задание: /* Создать функцию-шаблон. Используя эту функцию, проверить её для разных типов параметров (int, double, float). ...

Функция нахождения отрицательных элементов массива. - C++
День добрый. Начну с того, что я две недели пролежала в больнице и многое пропустила в универе. Недавно мне на почту пришло письмо от...

Вычислить значение функции для отрицательных элементов массива и подсчитать их количество - C++
Помогите решить задачу. Дано одномерный массив Р, состоящий из 32 элементов. Вычислить значение функции для отрицательных элементов...

Составить программу для подсчета суммы отрицательных элементов квадратного массива Х, что состоит из N?N целых чисел, расположенных ниже главной диаго - C++
Составить программу для подсчета суммы отрицательных элементов квадратного массива Х, что состоит из N?N целых чисел, расположенных ниже...


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

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

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