Добавил:
Kolobok
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
//Sortirovka massiva strok metodom prostih vstavok
void sort(char *arr[], int N) //funsia sortirovki vstavkami
{
char *copy ;int found;
int d,/*distanciya*/
fillpos,/*mesto "diri"*/
i,/*indeks analiziruemogo elementa v "arr"*/
j;/*indeks pretendenta sleva na zapolnenie "diri"*/
d=N;
while(d>1)
{
d/=2; //sortirovka vstavkami pri tekushem "d"
for(i=d;i<N;i++)
{
copy=arr[i];fillpos=i;//nayiti mesto vstavki copy
found=0;
do
{
j=fillpos-d;
if(j<0)
{found=1;}//pretendenta sleva net
else
{
if(arr[j]<=copy)
{found=1;}//pretendent sleve > -sdvig
else
{arr[fillpos]=arr[j];fillpos=j;};
};
}
while(found==1);
arr[fillpos]=copy;
};
};
}
void main()
{
char* M[1000];
float max=0; int i;
clrscr();
cout << "\n\nEta programma osuschestvljaet sortirovku massiva strok v porjadke ubjivanija\n";
cout << "dlin strok\n";
do
{cout<<" vv. chislo n, ono dolgno bit >=1 i celim \n\n";
cin>>max;}
while ((max-int(max)!=0) || (max<1));
for(i=0; i<max; i++)
{
cout<<"Vvedite "<<(i+1)<<"-i element massiva \n";
cin>>M[i];
M[i+1]=M[i]+(strlen(M[i]) + 1); //mesto novogo elementa
};
clrscr();
cout<<endl<<"ishodnjij massiv:"<<endl;
for(i=0; i<max; i++)
cout<<endl<<"M["<<(i+1)<<"]: '"<<M[i]<<"'";
sort(M, max);
//getch();
//clrscr();
cout<<endl<<"otsortirovannjij massiv:"<<endl;
for(i=0; i<max; i++)
cout << endl << "M["<<(i+1)<<"]: '" <<M[i]<<"'";
getch();
}