Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

С++ ЕНФ / LABA 6 / 6LB2 shell

.CPP
Скачиваний:
12
Добавлен:
25.05.2014
Размер:
1.64 Кб
Скачать
#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();
}
Соседние файлы в папке LABA 6