PZ_1
.pdfРисунок - 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