Pagini recente » Cod sursa (job #1037350) | Cod sursa (job #1045749) | Cod sursa (job #587799) | Cod sursa (job #1768310) | Cod sursa (job #1711066)
#include<stdio.h>
#include <iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
#define SIZE 1000000
template<class Type>
class Vector
{
Type* ZonaFolosita;
Type* ZonaAlocata;
int DimensiuneFolosita;
int DimensiuneAlocata;
public:
Vector();
void insert(Type);
Type operator[](int );
void DeleteLast();
void DeletePoz(int );
void afisare();
void sortare();
void cautare(Type);
void verificare();
};
template<class Type>
Vector<Type>::Vector()
{
this->ZonaFolosita=new Type[0];
this->ZonaAlocata=new Type[SIZE];
this->DimensiuneFolosita=0;
this->DimensiuneAlocata=SIZE;
}
template <class Type>
void Vector<Type>::verificare()
{
if(DimensiuneAlocata==DimensiuneFolosita)
{
DimensiuneAlocata=2*DimensiuneAlocata;
ZonaAlocata=(Type*)realloc(ZonaAlocata,DimensiuneAlocata*sizeof(Type));
}
}
template<class Type>
void Vector<Type>::insert(Type Object)
{ verificare();
this->DimensiuneFolosita++;
this->ZonaFolosita=(Type*) realloc(ZonaFolosita,DimensiuneFolosita*sizeof(Type));
ZonaFolosita[DimensiuneFolosita-1]=Object;
memcpy(ZonaAlocata,ZonaFolosita,DimensiuneFolosita*sizeof(Type));
ZonaAlocata=(Type*)realloc(ZonaAlocata,DimensiuneAlocata*sizeof(Type));
}
template<class Type>
Type Vector<Type>::operator [](int i)
{
if(i<0||i>DimensiuneFolosita-1)
{
cout<<"Nu se poate ";
exit(0);
}
else
return ZonaFolosita[i];
}
template<class Type>
void Vector<Type>::cautare(Type Object)
{
int ok=0;
for(int i=0;i<DimensiuneFolosita;i++)
if(ZonaFolosita[i]==Object)
{
cout<<"S a gasit pe pozitia "<<i;
ok=1;
}
if(ok==0) cout<<endl<<"Nu s a gasit"<<endl;
}
template<class Type>
void Vector<Type>::sortare()
{
for(int i=0;i<DimensiuneFolosita-1;i++)
for(int j=i+1;j<DimensiuneFolosita;j++)
if(ZonaFolosita[i]>ZonaFolosita[j])
{
ZonaFolosita[i]=ZonaFolosita[i]+ZonaFolosita[j]-(ZonaFolosita[j]=ZonaFolosita[i]);
}
}
template<class Type>
void Vector<Type>::DeleteLast()
{
DimensiuneFolosita--;
Type* aux;
aux=(Type*)malloc(DimensiuneFolosita*sizeof(Type));
memcpy(aux,ZonaFolosita,DimensiuneFolosita*sizeof(Type));
delete ZonaFolosita;
ZonaFolosita=(Type*)malloc(DimensiuneFolosita*sizeof(Type));
memcpy(ZonaFolosita,aux,DimensiuneFolosita*sizeof(Type));
memcpy(ZonaAlocata,ZonaFolosita,DimensiuneFolosita*sizeof(Type));
ZonaAlocata=(Type*)realloc(ZonaAlocata,DimensiuneAlocata*sizeof(Type));
}
template<class Type>
void Vector<Type>::DeletePoz(int pozitie)
{
for(int i=pozitie;i<DimensiuneFolosita-1;i++)
ZonaFolosita[i]=ZonaFolosita[i+1];
DeleteLast();
}
template<class Type>
void Vector<Type>::afisare()
{
for(int i=0;i<DimensiuneFolosita;i++)
cout<<ZonaFolosita[i]<<" ";
cout<<endl;
}
Vector<int> A;
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.insert (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;
}