Pagini recente » Cod sursa (job #2133818) | Cod sursa (job #2854252) | Cod sursa (job #1440028) | Cod sursa (job #1597629) | Cod sursa (job #1711070)
#include<stdio.h>
#include <iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
template<class T>
class vectorA{
int zonaAloc;
int zonaOc;
T* vec;
void vecResize();
public:
vectorA( int );
void push( T );
void showVec();
int length();
void pop( int );
void pop_end();
void sortare();
T& operator[]( int );
};
template<class T>
T& vectorA<T>::operator[](int a){
return vec[a];
}
template<class T>
void vectorA<T>::sortare(){
int t=1;
while(t==1)
{t=0;
for(int i=0;i<zonaOc-1;i++)
if( vec[i]>vec[i+1] )
{t=1;
T aux = vec[i]; vec[i] = vec[i+1]; vec[i+1] = aux;
}
}
}
template<>
void vectorA<char>::sortare(){
int t=1;
while(t==1)
{t=0;
for(int i=0;i<zonaOc-1;i++)
if( int(vec[i]) > int (vec[i+1]) )
{t=1;
char aux = vec[i]; vec[i] = vec[i+1]; vec[i+1] = aux;
}
}
}
template<>
void vectorA<string>::sortare(){
int t=1;
while(t==1)
{t=0;
for(int i=0;i<zonaOc-1;i++)
if( strcmp( vec[i].c_str(), vec[i+1].c_str() ) > 0 )
{t=1;
string aux = vec[i]; vec[i] = vec[i+1]; vec[i+1] = aux;
}
}
}
template<class T>
void vectorA<T>::pop_end(){
if( zonaOc > 0 )
zonaOc--;
}
template<class T>
void vectorA<T>::pop(int a){
if(a<zonaOc)
{for(int i=a ;i<zonaOc; i++)
if( i!= zonaOc-1)
vec[i]=vec[i+1];
zonaOc--;
}
}
template<class T>
void vectorA<T>::vecResize(){
T* newvec;
newvec = new T[zonaAloc*2];
for(int i=0;i<zonaAloc;i++)
newvec[i]=vec[i];
zonaAloc=zonaAloc*2;
delete[] vec;
vec=newvec;
}
template<class T>
int vectorA<T>::length(){
return zonaOc;
}
template<class T>
vectorA<T>::vectorA(int a)
{
vec=new T[a];
zonaAloc = a;
zonaOc = 0;
}
template<class T>
void vectorA<T>::showVec(){
for(int i=0;i<zonaOc;i++)
cout<<vec[i]<<"\n";
}
template<class T>
void vectorA<T>::push(T add){
vec[zonaOc]=add;
zonaOc++;
if(zonaAloc==zonaOc)
this->vecResize();
}
vectorA<int> A (500000);
int n;
void citire(void)
{
FILE *f = fopen("algsort.in","r");
int x;
fscanf(f,"%d",&n);
for(int i=0;i<n;i++) {
fscanf(f,"%d ",&x);
A.push (x);
}
fclose(f);
}
void afisare(void)
{
FILE *f = fopen("algsort.out","w");
for(int i=0;i<n;i++)
fprintf(f,"%d ",A[i]);
fclose(f);
}
int main()
{
citire();
A.sortare ();
afisare();
return 0;
}