Показать сообщение отдельно
Старый 06.10.2005, 01:00   #6
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Смущение

вносим коррективы типа
template<class abstr>
перед прототипами функций и их телами. Собсно, заменяем конкретный тип данных - например целочисленный int на шаблон
abstr a[]
Далее я изменил код ф-ции main() для наглядности:
она последовательно обррабатывает массив типа Int,float and char.
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>

template<class abstr>
void CHELN_sort(abstr a[],long N);
template<class abstr>
void input(abstr a[],long N);
template<class abstr>
void output(abstr a[],long N);

void main(){
	long N;
	cout<<"N?\n";
	cin>>N;
	cout<<"for int"<<endl;
	int *xint=new int[N];
	input(xint,N);
	output(xint,N);
	CHELN_sort(xint,N);
	output(xint,N);
	cout<<"Press any key\a";
	cout<<endl;
	delete xint;
	float *xfloat=new	float[N];
	cout<<"for float"<<endl;
	input(xfloat,N);
	output(xfloat,N);
	CHELN_sort(xfloat,N);
	output(xfloat,N);
	cout<<"Press any key\a";
	cout<<endl;
	delete xfloat;
	char *xchar=new	char[N];
	cout<<"for char"<<endl;
	input(xchar,N);
	output(xchar,N);
	CHELN_sort(xchar,N);
	output(xchar,N);
	cout<<"Press any key\a";
	cout<<endl;
	getch();
}
template<class abstr>
void CHELN_sort(abstr a[],long N){
	cout<<"CHELN_sort RUN\n";
	for(int j=0;j<N-1;j++){
 if(a[j]>a[j+1]){
 	a[j]=a[j]+a[j+1];
 	a[j+1]=a[j]-a[j+1];
 	a[j]=a[j]-a[j+1];
 	for(int i=j;i>0;i--){
  if(a[i]<a[i-1]){
  	a[i]=a[i]+a[i-1];
  	a[i-1]=a[i]-a[i-1];
  	a[i]=a[i]-a[i-1];
  }
  else break;
 	}
 }
	}
}
template<class abstr>
void input( abstr a[],long N){
	cout<<"Select type:"<<endl;
	cout<<"1) Random"<<endl;
	cout<<"2) Manually"<<endl;
	char p=getch();
	if(p=='1'){
 for(int i=0;i<N;i++)
 	a[i]=(rand()%255)*0.1;
	}
	else{
 for(int i=0;i<N;i++){
 	cout<<"a["<<i<<"]=";
 	cin>>a[i];
 }
	}
}
template<class abstr>
void output(abstr a[],long N){
	cout<<"output ===\n";
	for(int i=0;i<N;i++)
 cout<<"a["<<i<<"]="<<a[i]<<" ("<<float(a[i])<<")"<<endl;
}
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием