Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
lev_
2 / 2 / 0
Регистрация: 26.05.2014
Сообщений: 119
03.06.2014, 08:36     Шаблон функции для нахождения суммы отрицательных элементов массива #1
имеется шаблон функции для нахождения суммы отрицательных элементов целочисленного массива.
как сделать массив из вещественных чисел.
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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 08:36     Шаблон функции для нахождения суммы отрицательных элементов массива
Посмотрите здесь:

Составить программу для подсчета суммы отрицательных элементов квадратного массива Х, что состоит из N?N целых чисел, расположенных ниже главной диаго C++
C++ Шаблон функции для нахождения среднего арифметичного элементов масива
Массивы: Определить частное от деления суммы положительных элементов массива на модуль суммы отрицательных элементов C++
C++ Вычислить значение функции для отрицательных элементов массива и подсчитать их количество
C++ Программа для вычисления суммы и произведения элементов массива с использованием функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
03.06.2014, 08:49     Шаблон функции для нахождения суммы отрицательных элементов массива #2
Цитата Сообщение от lev_ Посмотреть сообщение
как сделать массив из вещественных чисел.
C++
1
float arr[666];
lev_
2 / 2 / 0
Регистрация: 26.05.2014
Сообщений: 119
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" возможна потеря данных
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 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]) // Такая же ситуация...
Индексы массивов могут быть только целочисленные.
Yandex
Объявления
03.06.2014, 09:35     Шаблон функции для нахождения суммы отрицательных элементов массива
Ответ Создать тему
Опции темы

Текущее время: 05:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru