#include
#include
#include
#include
//========================================================================
double FACTOR(double n)
{
if (n<0) {printf("Error.\n"); return 0;}
if (n==1) return 1;
else return n*FACTOR(n-1);
}
//=========================================================================
int SCAN_MASSIV (int A[1000],int *n, char *name)
{
FILE *base1;
int k, i, k1;
if ((base1=fopen(name,"r"))==NULL)
{
printf("Error,don't reading file.\n");
return 0;
}
if(fscanf(base1,"%d",&k)!=EOF) *n=k;
for(i=0;i<*n;i++)
{
if (fscanf(base1,"%d",&k1)!=EOF)
{
A[i]=k1;
}
}
fclose(base1);
return 1;
}
//----------------------------------------------------------------------
int VIVOD_MASSIV (int A[1000], int n)
{
int i;
printf ("MASSIV:\n");
for(i=0;i
printf("%3d",A[i]);
printf("\n\n");
return 1;
}
//======================================================================
//+++++++++++++++++++++++++++++++++|
//+++++SORTIROVKA_VSTABKAMI++++++++|
//+++++++++++++++++++++++++++++++++|
//======================================================================
int insert_sor (int A[1000], int n)
{
int i, j, temp;
FILE *base2;
if ((base2=fopen("vstavka.txt","w"))==NULL)
{ printf("Error.Don't reading file");
return 0;
}
else fprintf(base2,"%d\n",n);
//-------------------------------------------//
for(j=1; j
{ //
temp=A[j]; //
i=j-1; //
while((A[i] <= temp) && (i >= 0)) //sortirovka
{ //
A[i+1] = A[i]; //
--i; //
} //
A[i+1] = temp; //
} //
//-----------------------------------------//
for (i=0; i
{
fprintf(base2,"%2d",A[i]);
}
fclose(base2);
printf("OTSORTIROVANI_MASSIV:\n");
for(i=0; i
{
printf("%d ", A[i]);
}
return 1;
}
//===========================================================================
//+++++++++++++++++++++++++++++++++|
//+++++++++QUICK_SORTIROVKA++++++++|
//+++++++++++++++++++++++++++++++++|
//===========================================================================
int quicksort(int A[100], int high, int low, int n)
{
FILE *base3;
if ((base3=fopen("quick.txt","w"))==NULL)
{ printf("Error.Don't reading file");
return 0;
}
else fprintf(base3,"%d\n",n);
//----------------------
int i, j;
int p, temp;
i=low; //делаем копию нижней границы
j=high;//делаем копию верхней границы
p=A[(low+high)/2]; //выбираем опорный элемент
do
{
while (A[i]
// то передвигаем указатель i
// на один элемент вправо
while (A[j]>p) j--;//если выполняется условие цикла,
//то передвигаем указатель j
//на один элемент влево
if (i<=j) //если указатели не пересекаются по позициям
{ // в массиве, то меняет местами элементы i и j
temp=A[i];
A[i]=A[j];
A[j]=temp;
i++;
j--;
}
}
while (i<=j); //цикл продолжает свою работу пока
//указатели не пересекутся по позициям в массиве
if (j>low) quicksort(A, j, low, n); //Если в выделенном под массиве
// с границами [low;j] больше одного элемента, то запускаем для него функцию
if (high>i) quicksort(A, high, i, n); //Тоже самое только границы [i;high]
//запись в файл
for (i=0; i
{
fprintf(base3,"%d ", A[i]);
}
fclose(base3);
return 1;
}
//===========================================================================
void main()
{ clrscr();
double CH, CH2;
printf("BBOD number:\n");
scanf("%lf", &CH);
CH2=FACTOR(CH);
printf("Factorial number %.0lf!=%.0lf\n",CH,CH2);
printf("===================================================================\n");
//------------------------------------//
int A[1000],i, B[1000], n; //
char *name, *name2; //
char *name3; //
printf ("BBOD name file: "); //
scanf ("%s", name); //
SCAN_MASSIV (A, &n, name); //
VIVOD_MASSIV (A, n); //
printf ("\n"); //
getch();
insert_sor (A, n); //
printf("\n========================\n");
//--------------------------------------
printf ("\nBBOD name file2: "); //
scanf ("%s", name2); //
SCAN_MASSIV (A, &n, name2); //
VIVOD_MASSIV (A, n); //
printf ("\n"); //
getch(); //
printf("\nQUICKSORTIROVKA:\n"); //
quicksort(A, n-1, 0, n);
printf("Для вывода отсортированного массива введите:'quick.txt'\n");
printf ("\nBBOD name file3: ");
scanf ("%s", name3);
SCAN_MASSIV (A, &n, name3);
VIVOD_MASSIV (A, n); //
getch(); //
//-------------------------------------//
}
|