Создать шаблон класса двухмерного массива. В массиве найти столбец который содержит минимальный элемент. Отсортировать этот столбец методом выбора.
| Код | #include <iostream.h> #include <conio.h>
const int n = 4; template <class T> class mass { public: T mas [n][n];
void show() { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) cout << mas [i][j] << " "; cout << "\n"; } }
mass() { for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) mas [i][j] = (T) (rand()%9+1); }
void variant () { //поиск мин елемента T min = mas [0][0]; T ns; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (min >= mas [i][j]) { min = mas [i][j]; ns = j; } cout << "Min element massiva = " << min; cout << ", nahoditsy v stolbce pod #" << ns + 1 << ";" << endl; //подготовка к сортировке T mas2 [n]; int m ,N; for (int i = 0; i < n; i++) mas2 [i] = mas [i][ns]; T Min, buf; for(int i = 0; i < n; i++) if (Min < mas2[i]) {Min = mas2[i];} cout << "stage 1 \n"; //сортировка for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { if (Min > mas2[j]) {Min = mas2[j]; m = j;} } N++; buf = mas2[i]; mas2[i] = mas2[m]; mas2[m] = buf;
for(i = 0; i < n; i++) if (Min < mas2[i]) {Min = mas2[i];}
for (int i = 0; i < n; i++) mas [i][ns] = mas2 [i]; } }
};
void main() { mass <int> m1; m1.show(); cout << endl; m1.variant(); m1.show(); cout << endl; mass <float> m2; m2.show(); cout << endl; m2.variant(); m2.show(); cout << endl; getch(); }
|
С int значениями работает нормально, но с float не хочет, выбывает ошибку:
| Цитата | Illegal use of floating point Full parser context File1.cpp(28): decision to instantiate: void mass<double>::variant() --- Resetting parser context for instantiation... File1.cpp(6): class mass<T> File1.cpp(28): parsing: void mass<double>::variant()
|
Помогите исправить. |