![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
volvo |
![]()
Сообщение
#21
|
Гость ![]() |
Что значит
Цитата чтобы была возможность работы с данными вещественного, строкового и т.п. типа ? Если ты BubbleSortVer2<int> поменяешь на BubbleSortVer2<char>, твоя программа не будет с ним работать? Или ты хочешь сделать еще одно меню: сначала пользователь выбирает с каким типом работать, а потом - выбирает метод сортировки массива?Тогда тебе всю работы по вызову сортировок надо вынести в шаблонную функцию: template <class T>
void work() {
// и здесь производить все операции, которые пользователь выберет
// из меню Message(), инстанцируя шаблоны сортировок типом T, например:
T a[size];
// для инициализации массива "a" можно написать шаблонную
// функцию Random, и сделать ее явные специализации для любого
// типа, с которым ты хочешь работать...
// Ну, а потом - ...
int time=GetTickCount();
BubbleSortVer2<T>(a, size);
time=GetTickCount()-time;
}
В основной же программе: int main() {
cout << "1: int; 2: double; 3: char; 4: string" << endl;
cin >> choice;
switch(choice) {
case 1:
Work<int>();
break;
case 2:
Work<double>();
break;
case 3:
Work<char>();
break;
case 4:
Work<string>();
break;
}
}
Идея понятна?Сообщение отредактировано: volvo - 4.06.2008 18:49 |
Rocket |
![]()
Сообщение
#22
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Что значит ? Если ты BubbleSortVer2<int> поменяешь на BubbleSortVer2<char>, твоя программа не будет с ним работать? Или ты хочешь сделать еще одно меню: сначала пользователь выбирает с каким типом работать, а потом - выбирает метод сортировки массива? Тогда тебе всю работы по вызову сортировок надо вынести в шаблонную функцию: template <class T>
void work() {
// и здесь производить все операции, которые пользователь выберет
// из меню Message(), инстанцируя шаблоны сортировок типом T, например:
T a[size];
// для инициализации массива "a" можно написать шаблонную
// функцию Random, и сделать ее явные специализации для любого
// типа, с которым ты хочешь работать...
// Ну, а потом - ...
int time=GetTickCount();
BubbleSortVer2<T>(a, size);
time=GetTickCount()-time;
}
В основной же программе: int main() {
cout << "1: int; 2: double; 3: char; 4: string" << endl;
cin >> choice;
switch(choice) {
case 1:
Work<int>;
break;
case 2:
Work<double>;
break;
case 3:
Work<char>;
break;
case 4:
Work<string>;
break;
}
}
Идея понятна?Идею понял, код изменил. Но компилятор выдает ошибку при обращение к Work<...>, в чём причина? И ещё вот, мне не особо понятно как со строками использовать эти методы сортировок, или есть какие-то особенности? Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#23
|
Гость ![]() |
Ну да, я накосячил, забыл вызов функции... Поправлю в предыдущем посте...
Кстати, у тебя в main() лишняя закрывающая скобка... И еще, чтобы программа компилировалась, надо явно задать специализацию SetMin() для типа string: void SetMin(string& val) {
val = "";
}
, иначе будет ошибка... |
Rocket |
![]()
Сообщение
#24
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Ну да, я накосячил, забыл вызов функции... Поправлю в предыдущем посте... Кстати, у тебя в main() лишняя закрывающая скобка... И еще, чтобы программа компилировалась, надо явно задать специализацию SetMin() для типа string: void SetMin(string& val) {
val = "";
}
, иначе будет ошибка...Изменил, вроде всё работает)...только теперь не понятно вот что: при размерности массива, например 25000, выкидывает из программы. Из-за чего это?...причем предыдущий вариант с таким значением работал... Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#25
|
Гость ![]() |
![]() int ch,size;
// Это как понимать? Сначала описываешь массив непонятно какого размера ...
T a[size];
// и только потом вводишь собственно размер?
cout<<"Please, enter the size of massive to sort!"<<endl;
cin>>size;
Я бы сделал вот так: int ch, size;
cout<<"Please, enter the size of massive to sort!"<<endl;
cin>>size;
T *a = new T[size];
... // здесь работа с массивом, ничего не меняется
delete a;
|
Rocket |
![]()
Сообщение
#26
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
![]() int ch,size;
// Это как понимать? Сначала описываешь массив непонятно какого размера ...
T a[size];
// и только потом вводишь собственно размер?
cout<<"Please, enter the size of massive to sort!"<<endl;
cin>>size;
Я бы сделал вот так: int ch, size;
cout<<"Please, enter the size of massive to sort!"<<endl;
cin>>size;
T *a = new T[size];
... // здесь работа с массивом, ничего не меняется
delete a;
Идеальна! Спасибо за помощь! ![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 4:01 |