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

Шаблоны классов и функций - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В чём ошибка.В коде там где коментарий там ошибка поучается. http://www.cyberforum.ru/cpp-beginners/thread404721.html
#include <iostream> #include <Windows.h> using namespace std; class CMyString{ char *pStr; public: CMyString();
C++ Не понимаю, структуры...и как сделать задание Мне надо составить структуру, содержащую информацию о иностранцах, в ней надо указать часть света и страну из которой прибыли. Определить часть света и страны, из которой прибыло минимальное количество людей. Знаю, что надо объявить структуру: struct inostrnci { char name; char svet; char strana; }; http://www.cyberforum.ru/cpp-beginners/thread404706.html
переделать программу C++
помоги переделать программу для буквы x #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <graphics.h> #include <iostream.h> struct H { int X;
C++ Про перегрузку функции и Virtual в классах
В общем вообще запутался с этим ООП... Вот есть в классе функция, перегрузка функции даёт возможность этой функции иметь несколько значений? (Если можно, простенький пример). Параметр Virtual делает тоже самое-какой в нём смысл? То есть при параметре Virtual это всё так же работает и в классах второй степени (или как они там зовуцо)...
C++ по строкам.замените в слове сочетание "му" на "а" , а букву "ы" на "ца". очень нужно http://www.cyberforum.ru/cpp-beginners/thread404684.html
замените в слове сочетание "му" на "а" , а букву "ы" на "ца". очень нужно Добавлено через 21 час 4 минуты неужели никто не знает решение этой задачи?
C++ Подскажите новичку. Здравствуйте. Есть такой пример составил под него программу на С++ #include <iostream> #include <stdio.h> #include <math.h> int main(void); { double a, x, y, z; подробнее

Показать сообщение отдельно
iKarma
9 / 9 / 0
Регистрация: 17.10.2011
Сообщений: 114
11.12.2011, 21:02     Шаблоны классов и функций
Всем доброго времени суток =) Мне нужно создать класс для работы с целыми числами. Используя шаблоны, выполнить тоже задание для вещественных чисел. А само задание звучит так: если в последовательности N целых чисел есть хотя бы один член меньше 10, то все отрицательные числа заменить их квадратами, а в противном случае - домножить все члены на 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
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
template <class AgrType>
class Numbers {
private:
   AgrType *Source; //Исходный массив
   AgrType *Final; //Массив дополнений
   int Size; //Размерность массивов
public:
   Numbers(int N); //Конструктор
   ~Numbers(); //Деструктор
   void NumberAdd(AgrType elem, int index); //Функция добавления элементов
   AgrType Min() const; //Функция поиска минимального элемента
   void Change(); //Функция замены отрицательных чисел на их квадраты
   void Multiply(); //Функция умножения всех членов на 2*
   void MethodChoice(); //Функция выбора метода обработки
   void Print() const; //Функция вывода на экран
};
 
template <class AgrType>
Numbers <AgrType> :: Numbers(int N)
{
   Size = N;
   Source = new AgrType[N];
   if (Source == NULL)
   {
        cout << "ERROR!\n" ;
        cout << "Press Anykey to Exit" ;
        getch();
        exit(1);
   };
   Final = new AgrType[N];
   if (Final == NULL)
   {
        cout << "ERROR!\n" ;
        cout << "Press Anykey to Exit" ;
        getch();
        exit(1);
   };
}
 
template <class AgrType>
Numbers <AgrType> :: ~Numbers()
{
    delete[] Source;
    delete[] Final;
};
 
template <class AgrType>
void Numbers <AgrType> :: NumberAdd(AgrType elem, int index)
{
   Source[index] = elem;
};
 
template <class AgrType>
AgrType Numbers <AgrType> :: Min() const
{
    AgrType min = 0;
    int imin = 0;
    min = Source[0];
    for (int i = 0; i < Size; i++) {
        if (Source[i] < min) {
            min = Source[i];
            imin = i;
        }
    }
    return min;
};
 
template <class AgrType>
void Numbers <AgrType> :: Change()
{
    for (int i = 0; i < Size; i++)
    {
        if (Source[i] < 0) 
            Final[i] = Source[i] * Source[i];
    };
}
 
template <class AgrType>
void Numbers <AgrType> :: Multiply()
{
    for (int i = 0; i < Size; i++)
    {
        Final[i] = Source[i] * 2;
    };
}
 
template <class AgrType>
void Numbers <AgrType> :: MethodChoice()
{
    AgrType min;
    min = Min();;
    if (min < 10)
        Change();
    else 
        Multiply();
}
 
template <class AgrType>
void Numbers <AgrType> :: Print() const
{
   cout << "Source:\n";
   for (int i = 0; i < Size; i++)
      cout << Source[i] << " ";
   cout << "\nFinal:\n";
   for (int i = 0; i < Size; i++)
      cout << Final[i] << " ";
};
 
void main()
{
   int n, i_elem;
   float f_elem;
   char choice;
 
   cout << "Do u wanna work with Integer (I) or Float (F) numbers? ";
   cin >> choice;
 
   switch (choice)
   {
      case 'I':
      case 'i':
      {
          cout << "Array of Integer:\n" ;
          cout << "Input dimension of array: " ;
          cin >> n ;
          Numbers <int> intN(n);
          for (int i = 0; i < n; i++)
          {
              cout << "[" << i+1 << "]=";
              cin >> i_elem ;
              intN.NumberAdd(i_elem, i);
          };
          intN.MethodChoice();
          intN.Print();
          break;
      };
      case 'F':
      case 'f':
      {
          cout << "Array of Float\n" ;
          cout << "Input dimension of array: " ;
          cin >> n ;
          Numbers <float> flN(n);
          for (int i = 0; i < n; i++)
          {
              cout << "[" << i+1 << "]=" ;
              cin >> f_elem ;
              flN.NumberAdd(f_elem, i);
          };
          flN.MethodChoice();
          flN.Print();
          break;
      };
   };
 
   cout << "\nPress Anykey to Exit" ;
   getch();
};
Вроде всё правильно с шаблонами реализовал, но почему-то не работает обработка, как мне кажется функция void MethodChoice(); не работает, здесь ли ошибка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru