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

PZ_1

.pdf
Скачиваний:
7
Добавлен:
18.03.2015
Размер:
829.33 Кб
Скачать

Рисунок - 5 Алгоритм Шелла

 

 

 

 

 

8

Изм.

 

№ докум.

Подп.

Дата

8

 

 

Теперь мы можем приступать к разработке программы на языке про-

граммирования С++, предварительно ознакомившись с данной средой програм-

мирования.

 

 

 

 

 

9

Изм.

 

№ докум.

Подп.

Дата

9

 

 

4 Описание программы

После запуска программа просит ввести размерность первого (рис. 5) и

второго массива.

Рисунок - 5 Ввод данных

Затем программа сравнивает их, если они не равны выводиться соответ-

ствующее сообщение (рис. 6).

Рисунок - 6 Сообщение о разных размерностях

 

 

 

 

 

10

Изм.

 

№ докум.

Подп.

Дата

10

 

 

Если они одинаковые то программа считывает данные из текстовых фай-

лов в динамические массивы, сортирует их согласно заданным условиям, фор-

мирует из них один массив и выводит его на экран и в файл.(рис. 7)

Рисунок - 7 Результат выполнения программы

Рисунок - 8 Текстовый файл с результатом

 

 

 

 

 

11

Изм.

 

№ докум.

Подп.

Дата

11

 

 

Выводы

В данной курсовой работе был разработан и реализован алгоритм про-

граммы позволяющий решить исходную задачу. Реализация происходила на языке программирования С++.

Создание файла исходных данных реализовано программно с использо-

ванием функции генерации случайных чисел, что позволяет при каждом новом запуске программы работать с новыми данными.

Исходные данные считываются в динамические массивы, затем они сор-

тируются и из них формируется один массив согласно заданным условиям.

Используемый алгоритм сортировки – сортировка Шелла.

Произошло успешнее изучение языка программирования C++ и среды

Microsoft Visual C++.

Используются операторы выделения и освобождения динамической па-

мяти, присвоения, сложения, взятия модуля, сравнения. Оператор инкремента и вызова данных.

 

 

 

 

 

12

Изм.

 

№ докум.

Подп.

Дата

12

 

 

Список литературы

1.ГОСТ 19.701-90 Схемы алгоритмов программ, данных и систем. М.,

1992. 22 с.

2.ГОСТ 2.105-95. Общие требования к текстовым документам. М., 1996.

31 с.

3.Культин Н. «С/С++ в задачах и примерах» - СПб.:БХВ-Петербург,

2002. — 288 с.

4. Э. Кениг, Б. Му «Эффективное программирование на С++» -

Мск.:Вильямс 2002. - 384с.

5. Страуструп Б. Язык программирования С++ (2–ред)./Пер. с англ.–М.:

Радио и связь, 1995. – 352с.

 

 

 

 

 

13

Изм.

 

№ докум.

Подп.

Дата

13

 

 

Приложения

 

 

 

 

 

14

Изм.

 

№ докум.

Подп.

Дата

14

 

 

Приложение А

#include <stdio.h> #include <stdlib.h> #include <iostream.h> #include <time.h>

void dannie(int m1,int m2)

{

FILE*a;

a=fopen("massiva.txt","w");

FILE*b;

b=fopen("massivb.txt","w"); int i,n,c;

srand(time(NULL));

for(i=0;i<m1;i++)

{

c=-1000+rand()%2001; fprintf(a,"%i\n",c);

}

fclose(a);

for(i=0;i<m2;i++)

{

c=-1000+rand()%2001; fprintf(b,"%i\n",c);

}

fclose(b);

}

Изм.

№ докум.

Подп. Дата

 

 

 

15

15

void main()

{

int n,i,x,j,k,y,n1,n2; double start, finish;

cout<<"Vvedite razmernost 1 massiva"<<endl; cin>>n1;

cout<<"Vvedite razmernost 2 massiva"<<endl; cin>>n2;

FILE*aa;

aa=fopen("massiva.txt","r");

FILE*bb;

bb=fopen("massivb.txt","r");

FILE*cc;

cc=fopen("massivc.txt","w"); if (n1!=n2)

cout<<"Raznie razmernosti"<<endl;

else

{

dannie(n1,n2); int *a = new int[n1]; int *b = new int[n2]; for(i=0;i<n1;i++)

{

fscanf(aa,"%i",&a[i]);

fscanf(bb,"%i",&b[i]);

}

y=n2;

Изм.

№ докум.

Подп. Дата

 

 

 

Продолжение приложения А

16

16

k=y/2; start=(double)clock()/CLOCKS_PER_SEC; while(k>0)

{

for(i=0;i<y-k;i++)

{

j=i;

while((j>=0) && (b[j]>b[j+k]))

{

x=b[j];

b[j]=b[j+k];

b[j+k]=x; j=j-1;

}

}

k=k/2;

}

finish=(double)clock()/CLOCKS_PER_SEC;

y=n1;

k=y/2;

while(k>0)

{

for(i=0;i<y-k;i++)

{

j=i;

while((j>=0) && (a[j]<a[j+k]))

Изм.

№ докум.

Подп. Дата

 

 

 

Продолжение приложения А

17

17

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]