Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
113 / 3 / 0
Регистрация: 03.05.2016
Сообщений: 21
1

Перегрузка и шаблоны функций

15.11.2016, 16:21. Показов 491. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Посмотрите вложение, у меня всё выводит правильно, кроме суммы модулей элементов массива после последнего минимального элемента, т.к. у меня стоит abs, для целочисленного массива всё выводит правильно, а для double и float нет, я не очень понимаю как сделать и abs и fabs одновременно, думаю что скорее всего надо сделать проверку на типы входных данных, если int, то abs, если double/float, то fabs , но не понимаю как это сделать, помогите пожалуйста, ребята!
Пример входных данных:
10
8 -4 3 0 -7 4 2 5 0 1
-0.25 4 10.5 2.11 3 -3.33 0 0.855 4.01 1
1.0101 0.55555 -6.123 0.56789 1.23 2.021 -10.0110 -5.8 0 9.58
Пример выходных данных:
2 19
-7 -4 0 0 1 2 3 4 5 8
2.00 5.87
-3.33 -0.25 0.00 0.86 1.00 2.11 3.00 4.00 4.01 10.50
3.0000 9.5800
-10.0110 -6.1230 -5.8000 0.0000 0.5555 0.5679 1.0101 1.2300 2.0210 9.5800

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
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <cmath>
using namespace std;
 
template <typename O> O otric_elements(O *mas1, int n);
template <typename S> S summa_abs(S *mas1, int n, int i);
template <typename SW> void swap(SW *mas1, int n);
 
int main()
{
    int i, n;
    cin >> n;
    int *mas1 = new int[n];
    double *mas2 = new double[n];
    float *mas3 = new float[n];
    for (i = 0; i < n; i++)
        cin >> mas1[i];
    for (i = 0; i < n; i++)
        cin >> mas2[i];
    for (i = 0; i < n; i++)
        cin >> mas3[i];
 
    cout << otric_elements(mas1, n) << " " ;
    cout << summa_abs(mas1, n, i) << endl;
    swap(mas1, n);
    for (int i = 0; i < n; i++)
        cout << mas1[i] << " ";
    cout << endl;
    cout << otric_elements(mas2, n) << " ";
    cout << summa_abs(mas2, n, i) << endl;
    swap(mas2, n);
    for (int i = 0; i < n; i++)
        cout << mas2[i] << " ";
    cout << endl;
    cout << otric_elements(mas3, n) << " ";
    cout << summa_abs(mas3, n, i) << endl;
    swap(mas3, n);
    for (int i = 0; i < n; i++)
        cout << mas3[i] << " ";
    system("pause");
    return 0;
}
 
template <typename O> O otric_elements(O *mas1,int n)
{
    O k_otric = 0;
    for (int i = 0; i < n; i++)
        if (mas1[i] <  0)
            k_otric = k_otric + 1;
    return k_otric;
}
template <typename S> S summa_abs(S *mas1, int n, int i)
{
    S sum = 0;
    int min=abs(mas1[0]), zap=0;
    double min1 = fabs(mas1[0]);
        for (int i = 0; i < n; i++)
            if (abs(min) > abs(mas1[i]))
            {
                min = abs(mas1[i]);
                zap = i;
            }
        for (int i = zap; i < n; i++)
            sum = abs(mas1[i]) + sum;
        return sum;
}
template <typename SW> void swap(SW *mas1, int n)
{
    for (int i = 0; i<n-1 ; i++)
            for (int j = i+1; j < n; j++)
                if (mas1[i] > mas1[j])
            {
                SW p = mas1[i];
                mas1[i] = mas1[j];
                mas1[j] = p;
            }
}
Миниатюры
Перегрузка и шаблоны функций  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2016, 16:21
Ответы с готовыми решениями:

Перегрузка и шаблоны функций
Добрый день. Приведенную нижу задачу нужно оформить в виде шаблонов функций. В одномерном массиве,...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг...

Перегрузка и шаблоны
Для каждого пункта задания создать: 1. Перегружаемые функции для типов int и double 2. Шаблоны...

Перегрузка оператора == и шаблоны
Почему присутствие структуры Hard Logic приводит к ошибке компиляции, а структуры SoftLogic — нет?...

0
15.11.2016, 16:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2016, 16:21
Помогаю со студенческими работами здесь

Перегрузка операторов и шаблоны
#include &lt;iostream&gt; using namespace std; template &lt;class X, int size&gt; class type { X mas;...

Перегрузка оператора [] и шаблоны.
Всем доброго времени суток! Проблема такая: есть класс сVector template &lt;class T, int Size&gt;...

Шаблоны перегрузка ввода/вывода
#include &lt;iostream&gt; #include &lt;assert.h&gt; #include &lt;stdlib.h&gt; using namespace std; template...

Шаблоны классов, перегрузка операторов
Задание:Реализовать шаблон классов Array. Перегрузить операторы присваивания =, ввода &gt;&gt; и вывода...

Шаблоны и перегрузка различных операторов
Не могу правильно описать шаблон при перегрузке операторов. Добился того,что не видит ошибок..но...

Перегрузка операторов через шаблоны
Есть класс дробь, переопределил операторы (внутри класса). В таком случае (дробь оператор что-то)...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru