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

Перевести код из функции в шаблоны функции

13.12.2014, 23:36. Показов 450. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Короче, у меня есть прога написанная с помощью функций, теперь мне нужно написать её с помощью шаблонов функции...


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
78
79
80
81
82
83
84
85
86
87
88
89
#include "stdafx.h"
#include <iostream>
#include <stdlib.h> 
#include <iomanip>
#include <cmath>
using namespace std;
 
void input (int n, double *a)
{
 for (int i=0; i<n; i++) cin >> a[i];
}
void summ (int n, double* a)
{
    int i,s=0;
    for ( i = 0; i < n; ++i )
    {
        if ( (i + 1) % 2 == 1 ) 
        {
            s = s + a[i];
        };
    };
    cout << "Сумма элементов массива с нечётными номерами " << s << endl;
}
void sum1 (int n, double* a)
{
    int i1 = -1,s1=0,i;
    int i2 = -1;
    for ( int i = 0; i<n; i++ )
    {
        if ( a[i] < 0 )
        {
            if ( i1 == -1 )
                i1 = i;
            else
                i2 = i;
        }
    }
    if ( (i1 == -1) && (i2 == -1) ) cout << "Отрицательных элементов в массиве нет" << endl;
    else if ( (i1 != -1) && (i2 == -1) ) cout << "В данном массиве один отрицательный элемент" << endl; 
    else if  ( (abs ( i1-i2 ) == 1)) cout << "Отрицательные элементы стоят рядом" << endl; else
    {
        for ( i=(i1+1); i < i2; i++ )
            s1 = s1 + a[i];
        cout << "Сумма элементов массива расположенных между первым и последним отрицательными элементами " << "  " << s1 << endl;
    };
}
void sort (int n, double* a)
{
    int i=0;
 
    int i_fin = n;
    while ( i != i_fin )
    {
        if ( (a[i] <= 1) && (a[i]>= -1) )
        {
            int temp = a[i];
 
            for ( int j = i; j < n; j++ )
                a[j] = a[j + 1];
 
            a[n - 1] = 0;
 
            i_fin--;
        }
        else
        i++;
    }
    cout << "Преобразованный массив:" << endl;
    for ( i = 0; i < n; i++ )
        cout << a[i] << '\t';
    cout << endl;
    delete a;
}
 
 
    int main()
{
    setlocale ( LC_ALL, "Russian" );
    int n;
    cout << "Введите количество элементов массива: ";
    cin >> n;
    double *a = new double[n];
    input (n, a);
    summ (n , a);
    sum1 (n , a);
    sort (n , a);
    system ("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2014, 23:36
Ответы с готовыми решениями:

Перегрузка и шаблоны функции(массив) Исправить код
Нужно сделать программу, с использованием шаблонов этих типов данных- int,float,double. В...

Смысл функции filter. Перевести код функции filter в C++
Всем привет! у меня такая проблема. Нужно перевести код функции filter в C++. для функции y =...

Перевести код математической функции с паскаля
Здравствуйте, есть функция написана в паскале: function g (a,b :real) : real begin ...

Перевести код функции SquareDigitsSum (Haskell -> Lisp)
Никак не получается переписать функцию SquareDigitsSum с Haskell на Lisp( На Haskell функция...

3
Модератор
Эксперт С++
13680 / 10889 / 6466
Регистрация: 18.12.2011
Сообщений: 29,057
13.12.2014, 23:52 2
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
78
79
80
81
82
83
84
85
86
template<class T>
void input (int n, T *a)
{
 for (int i=0; i<n; i++) cin >> a[i];
}
template<class T>
void summ (int n,T* a)
{
    int i,s=0;
    for ( i = 0; i < n; ++i )
    {
        if ( (i + 1) % 2 == 1 ) 
        {
            s = s + a[i];
        };
    };
    cout << "Сумма элементов массива с нечётными номерами " << s << endl;
}
template<class T>
void sum1 (int n, T* a)
{
    int i1 = -1,s1=0,i;
    int i2 = -1;
    for ( int i = 0; i<n; i++ )
    {
        if ( a[i] < 0 )
        {
            if ( i1 == -1 )
                i1 = i;
            else
                i2 = i;
        }
    }
    if ( (i1 == -1) && (i2 == -1) ) cout << "Отрицательных элементов в массиве нет" << endl;
    else if ( (i1 != -1) && (i2 == -1) ) cout << "В данном массиве один отрицательный элемент" << endl; 
    else if  ( (abs ( i1-i2 ) == 1)) cout << "Отрицательные элементы стоят рядом" << endl; else
    {
        for ( i=(i1+1); i < i2; i++ )
            s1 = s1 + a[i];
        cout << "Сумма элементов массива расположенных между первым и последним отрицательными элементами " << "  " << s1 << endl;
    };
}
template<class T>
void sort (int n,T* a)
{
    int i=0;
 
    int i_fin = n;
    while ( i != i_fin )
    {
        if ( (a[i] <= 1) && (a[i]>= -1) )
        {
            int temp = a[i];
 
            for ( int j = i; j < n; j++ )
                a[j] = a[j + 1];
 
            a[n - 1] = 0;
 
            i_fin--;
        }
        else
        i++;
    }
    cout << "Преобразованный массив:" << endl;
    for ( i = 0; i < n; i++ )
        cout << a[i] << '\t';
    cout << endl;
}
 
 
int main()
{
    setlocale ( LC_ALL, "Russian" );
    int n;
    cout << "Введите количество элементов массива: ";
    cin >> n;
    double *a = new double[n];
    input (n, a);
    summ (n , a);
    sum1 (n , a);
    sort (n , a);
    delete[] a;
    system ("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 13.12.2014
Сообщений: 2
14.12.2014, 02:08  [ТС] 3
zss,
я тоже так думал, но когда я сдавал точно такой же код мне сказали что в конце должен инициализироваться массив универсального типа, вот я думаю может вот так сдать...
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include "stdafx.h"
#include "iostream"
using namespace std;
 
template <class t>
  void input (t *a , int n)
{
for (int i=0; i<n; i++) cin >> a[i];
}
template <class t>
  void summ (t *a, int n)
  {
    int i,s=0;
    for ( i = 0; i < n; ++i )
    {
        if ( (i + 1) % 2 == 1 ) 
        {
            s = s + a[i];
        };
    };
    cout << "Сумма элементов массива с нечётными номерами " << s << endl;  
  }
 
template <class t>
  void sum1 (t *a, int n)
  {
      int i1 = -1,s1=0,i;
    int i2 = -1;
    for ( int i = 0; i<n; i++ )
    {
        if ( a[i] < 0 )
        {
            if ( i1 == -1 )
                i1 = i;
            else
                i2 = i;
        }
    }
    if ( (i1 == -1) && (i2 == -1) ) cout << "Отрицательных элементов в массиве нет" << endl;
    else if ( (i1 != -1) && (i2 == -1) ) cout << "В данном массиве один отрицательный элемент" << endl; 
    else if  ( (abs ( i1-i2 ) == 1)) cout << "Отрицательные элементы стоят рядом" << endl; else
    {
        for ( i=(i1+1); i < i2; i++ )
            s1 = s1 + a[i];
        cout << "Сумма элементов массива расположенных между первым и последним отрицательными элементами " << "  " << s1 << endl;
    };
  }
 
template <class t>
  void sort (t a[], int n)
  {
    int i=0;
 
    int i_fin = n;
    while ( i != i_fin )
    {
        if ( (a[i] <= 1) && (a[i]>= -1) )
        {
            int temp = a[i];
 
            for ( int j = i; j < n; j++ )
                a[j] = a[j + 1];
 
            a[n - 1] = 0;
 
            i_fin--;
        }
        else
        i++;
    }
    cout << "Преобразованный массив:" << endl;
    for ( i = 0; i < n; i++ )
        cout << a[i] << '\t';
    cout << endl;
  }
  template <class t>
  void all (t a[], int n)
  {
    input (a,n);
    summ (a,n);
    sum1(a,n);
    sort (a,n);
  }
 
int main()
{ 
    setlocale ( LC_ALL, "Russian" );
    int n, u;
    cout << "Введите n: " << endl;
    cin >> n;
    cout << "Если вы хотите работать с массивом типа int нажмите 1 " << endl << "Если вы хотите работать с массивом типа float нажмите 2 " << endl << "Если вы хотите работать с массивом типа double нажмите 3 " << endl;
    cin >> u;
    if (u==1)
    {
      int *a = new int[n];
      all (a,n);
    } 
       else 
        if (u==2)
 
        {
          float *a = new float[n];
          all (a,n);
        }
         else 
           if (u==3)
           {
             double *a = new double[n];
             all (a,n);
           }
    
    //input (a,n);
    //summ (a,n);
    //sum1(a,n);
    //sort (a,n);
    system ("pause");
    return 0;
 
}
0
Модератор
Эксперт С++
13680 / 10889 / 6466
Регистрация: 18.12.2011
Сообщений: 29,057
14.12.2014, 13:45 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
cin >> u;
int *a=NULL;
double *b=NULL;
if (u==1)
{
      a = new int[n];
      all (a,n);
}else 
{
     b = new double[n];
     all (b,n);
 }
if(a) delete[] a;
if(b) delete[] b;
0
14.12.2014, 13:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2014, 13:45
Помогаю со студенческими работами здесь

Перевести код математической функции с паскаля В C++ Builder
Есть программа в паскале нужно переделать в С++ Builder, помогите, заранее спасибо. var a :...

Перевести с Pascal вычисление функции на заданном промежутке и построить график этой функции
uses crt,graphABC; function y(x:real):real; begin if x&lt;0 then y:=x*x else if x&lt;=2.5 then...

Функции-шаблоны
Подсчитать норму матрицы по формуле А = (сумма по i ) maxai,j ( а и житое ) Вобще не понимаю как...

Шаблоны функции
Реализуйте следующие задание с использованием шаблона функции. Продемонстрируйте вызов шаблона для...


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

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