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

ЗАДАНИЕ КАФЕДРЫ

Написать программу, осуществляющую сортировку целых чисел методом подсчета из входного файла и записывающую результат в выходной файл. На экране должна отображаться исходная и отсортированная последовательности. Формат файла – текстовый. Количество записей в файле не ограничено. Вариант: 4i (Метод встава целых чисел)

Текст программы:

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

void sort(int a[],int b[], int k);

int main(void)

{

int i,n=0,*m,*sm;

FILE *inp,*out;

if((inp=fopen("1.txt","r"))==NULL)

{

system ("echo Нельзя открыть файл с элементами");

system ("pause");

return 0;

}

while(feof(inp)==0)

{

fscanf(inp,"%d",&i);

n++;

}

fclose(inp);

m=new int[n];

sm=new int[n];

fopen("1.txt","r");

clrscr();

system ("echo Количество элементов");

printf("n=%d\n\r",n);

system ("echo Исходная последовательность");

for(i=0;i<n;i++){

fscanf(inp,"%d",&m[i]);

printf(" %d ",m[i]);

}

sort(m,sm,n);

fclose(inp);

out=fopen("2.txt","w");

printf ("\n");

system("echo Отсортированная последовательность");

for(i=0;i<n;i++){

printf(" %d ",sm[i]);

fprintf(out," %d ",sm[i]);

}

delete []m;

delete []sm;

fclose(out);

getch();

}

void sort (int a[],int b[],int k)

{

int nov,j;

b[0]=a[0];

for (int p=1;p<k;p++)

{

nov=a[p];

j=p-1;

if(b[j]<nov)b[j+1]=nov;

while(b[j]>nov&&j>=0)

{

b[j+1]=b[j];

j--;

}

b[j+1]=nov;

}

}

Пример программы:

a[0]=b[0]

p=1

nov=a[p]

j=p-i

b[j+i]=nov

b[j+i]=nov

b[j+i]=b[i]

j=j-1

p=p+1

b[j+i]=nov