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

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

Войти
Регистрация
Восстановить пароль
 
Kolich
0 / 0 / 0
Регистрация: 19.03.2010
Сообщений: 26
#1

Шаблоны - C++

25.03.2010, 22:33. Просмотров 378. Ответов 1
Метки нет (Все метки)

Не пойму что я неправильно делаю. Как не переделывал, всё равно не получалось. Может кто сможет чем помочь. А задача следующая-надо было оформить каждый пункт этогокода в виде шаблона функций:
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
#include <cstdlib>
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    const int n=10,c=2;
    int a[n]={-3,1,7,6,-9,-1,-4,5,2,8};
    int i,count,max,proiz;
    for (count=i=max=0,proiz=1; i<n; i++){
        if (fabs(max)<fabs(a[i])) max=a[i];
        if (a[i]>c) count++;
        if (max<a[i])proiz=proiz*a[i];}
    cout<<"Kol-vo elementov bolshe C:"<<count<<endl;
    cout<<"Max modul:"<<max<<endl;
    cout<<"Proizvedenie"<<proiz<<endl;
    for (i=0; i<n-1; i++){
        int min=i;
        for (int j=i+1; j<n; j++)
        if (a[j]<a[min]) min=j;
    int b=a[i];
    a[i]=a[min];
    a[min]=b;}
    for (i=0; i<n; i++)cout<<a[i]<<' ';
    system("PAUSE");
    return EXIT_SUCCESS;
}
Вот что получилось:

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>
#include <cstdlib>
#include <math.h>
 
using namespace std;
 
   /*
   В одномерном массиве, состоящем из n вещественных элементов, вычислить:
   1) количество элементов массива, больших С;
   2) произведение элементов массива, расположенных после максимального по модулю элемента.
   Преобразовать массив таким обрахом, чтобы сначала располагались все отрицательные а потом положительные.
   */
 
template<typename Type>
int counter(Type *a, int n, Type C)
{
   int kol=0;
   for (int i=0; i<n; i++)
      if (a[i] > C) kol++;
   return kol;
}
 
template<typename Type>
int proizv(Type *a, int n)
{
   int proiz=1;
   int max=1;
   for (int i=0; i<n; i++)
      if (fabs(max)<fabs(a[i])) max=i;
   for (int i=max+1; i<n; i++)
      proiz*=a[i];
}
 
template<typename Type>
void modify(Type *a, int n)
{
     int i;
    for (i=0; i<n-1; i++){
        int min=i;
        for (int j=i+1; j<n; j++)
        if (a[j]<a[min]) min=j;
    int b=a[i];
    a[i]=a[min];
    a[min]=b;}
}
 
template<typename Type>
void print(Type *a, int n)
{
     int i;
    for (i=0; i<n; i++)cout<<a[i]<<' ';
}
 
int main()
{
   const int n = 10, C=2;
   int proiz, max, i;
   int a[n] = {1,3,5,-9,6,8,-4,3,2,-6};
 
   cout << "KOl-vo: " << counter(a, n, C) << endl;
   cout << "Proizvedenie: " << proizv(a, n)<< endl;
   modify(a, n);
   print(a, n);
 
   system("pause");
   return 0;
}
Но у меня ни как не получается вычислить произведение элементов.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2010, 22:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблоны (C++):

«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». - C++
«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». Есть ли разница в этих понятиях? Если есть, то в чём? И где (в каких...

Шаблоны. Плохо понимаемые моменты из книги "Шаблоны С++. Справочник разработчика". (Вандевурд, Джосаттис) - C++
Так как изучаю эту книгу, то в некоторых местах возникают вопросы. Чтобы не плодить много тем, корни у которых одни, решил создать эту...

Помогите писать на С++ через шаблоны. Консуле я писал, но надо писать исползуя шаблоны - C++
В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) количество элементов массива, равных 0; 2) сумму элементов...

Шаблоны C++ - C++
Написал template на С++, но он нифига не компилица, пишет мол типа не могу string в int преобразовать в строчке int out_param = (int)param;...

Шаблоны - C++
Я разбираюсь с ООП в С++ и застрял на шаблонах, будьте добры приведите пример кода, к примеру там.... вес машины и шаблон,(ну вообщем на...

Шаблоны - C++
// ConsoleApplication176.cpp : Defines the entry point for the console application. // template&lt;class type&gt; struct link { type...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
26.03.2010, 02:01 #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
#include <iostream>
#include <cstdlib>
#include <math.h>
 
using namespace std;
 
   /*
   В одномерном массиве, состоящем из n вещественных элементов, вычислить:
   1) количество элементов массива, больших С;
   2) произведение элементов массива, расположенных после максимального по модулю элемента.
   Преобразовать массив таким обрахом, чтобы сначала располагались все отрицательные а потом положительные.
   */
 
template<typename Type>
int counter(Type *a, int n, Type C)
{
   int kol=0;
   for (int i=0; i<n; i++)
      if (a[i] > C) kol++;
   return kol;
}
 
template<typename Type>
int proizv(Type *a, int n)
{
   int proiz=1;
   int max=1;
   for (int i=0; i<n; i++)
      if (fabs((float)max)<fabs((float)a[i])) max=i;
   for (int i=max+1; i<n; i++)
      proiz*=a[i];
   return proiz;
}
 
template<typename Type>
void modify(Type *a, int n)
{
     int i;
    for (i=0; i<n-1; i++){
        int min=i;
        for (int j=i+1; j<n; j++)
        if (a[j]<a[min]) min=j;
    int b=a[i];
    a[i]=a[min];
    a[min]=b;}
}
 
template<typename Type>
void print(Type *a, int n)
{
     int i;
    for (i=0; i<n; i++)cout<<a[i]<<' ';
}
 
int main()
{
   const int n = 10, C=2;
   int proiz, max, i;
   int a[n] = {1,3,5,-9,6,8,-4,3,2,-6};
 
   cout << "KOl-vo: " << counter(a, n, C) << endl;
   cout << "Proizvedenie: " << proizv(a, n)<< endl;
   modify(a, n);
   print(a, n);
 
   system("pause");
   return 0;
}
ошибки были в
C++
1
2
3
4
5
6
7
8
9
int proizv(Type *a, int n)
{
   int proiz=1;
   int max=1;
   for (int i=0; i<n; i++)
      if (fabs(max)<fabs(a[i])) max=i;
   for (int i=max+1; i<n; i++)
      proiz*=a[i];
}
ошибка №1 функция fabs работает для float а ты пихаешь int
ошибка №2 функция должна возвращать значение, а такового не происходит необходимо return proiz;
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2010, 02:01
Привет! Вот еще темы с ответами:

Шаблоны - C++
ругается на строку &quot;friend class List&lt;T&gt;;&quot;, вот что пишет: 1&gt;c:\users\slava\documents\visual studio...

Шаблоны - C++
Когда разделяю реализацию и прототип шаблонной в функции по разным файлам (*.h и *.cpp) происходит ошибка линковки... Я так понимаю, делать...

Шаблоны С++ - C++
template &lt;typename T_sizeCapacity&gt; class SomeClass { public: T_sizeCacity size; }; Как сделать чтобы T_sizeCapacity мог быть...

Шаблоны C++11 - C++
#include &lt;iostream&gt; template&lt;typename T1, typename T2&gt; auto func(T1 a, T2 b) -&gt; decltype(a&gt;b?b:a) { return a&gt;b?b:a; ...


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

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

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