Составить программу на языке Turbo Pascal для параллельной сортировки чисел

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

Южно-Уральский государственный университет

Приборостроительный факультет

Кафедра “Электронно-Вычислительные машины”

Курсовая работа

По курсу ПЯВУ

Выполнила: студентка

Группы ПС-197 Савельева К. А.

Проверил: Сяськов С. В.

Челябинск 2009

Условие задачи

Составить программу на языке TurboPascal для параллельной сортировки множества из n чисел, где n – мощность множества, состоящего из букв фамилии, n>2.

Оглавление

Условие задачи

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

Схема алгоритма

Текст Программы

Примеры выполнения

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

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

Тело программы начинается с цикла for, создающего верхнюю строчку, состоящую из символов:

{ fori:=1 to 35 do

Begin

Textcolor(1);

Write(chr(5));

End; }

Где 35- произвольное число, длина строки; τextcolor – процедура, задающая цвет нужному фрагменту программы. Далее оформление создается аналогичным образом.

Для начала работы программы вводим фамилию. Она считывается в переменную fam типа string. Затем требуется создать по количеству символов из этой введенной фамилии одномерный массив типа integer. Для этого сначала требуется посчитать количество символом – это легко можно сделать с помощью строковой функции Length: e:=Length(fam), где e-переменная типа integer.

Далее требуется проверить введенную фамилию, на наличие цифр. Для этого используется функция Val: val(fam[i],n, kod). Эту функцию выполняем в цикле for, так как нужно проверить каждый символ в фамилии. Потом делаем проверку переменной kod в условном операторе if:

{fori:=1 toedo

Begin

Val(fam[i],n, kod);

If kod=0 then

Begin

Writeln (‘neverno vvedena familia’)

F:=false; end;}

Если kod=0 значит в нашей фамилии содержится цифра.

Все выше описанное происходит в цикле repeat, условием выхода которого является f=false. В начале этого цикла мы поднимаем флажок, т. е. f=true. Далее, как описано во фрагменте кода выше, если kod=0 мы опускаем флажок. Это нужно для того, чтобы получилось зацикливание, и пользователь мог, в случае неправильного ввода фамилии, сделать это снова. Если же f=true после прохождения по циклу, цикл завершит свою работу.

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

K:=0;

{metod vstavki}

{for i:=2 to e do

Begin

X:=a[i];

J:=i-1;

While (x<a[j]) and (j>=1) do

Begin

A[j+1]:=a[j];

J:=j-1;

K:=k+1;

If j=0 then goto 1;

End;

1: a[j+1]:=x;

End;}

{puzyrkovyi metod}

For i:=2 to e do

Begin

For j:=e downto i do

If a[j-1] > a[j] then

Begin

X:=a[j-1];

A[j-1]:=a[j];

A[j]:=x;

End;

End;

Схема алгоритма

Текст Программы

Program kursach1;

Uses crt;

Var a: array [1..100] of integer;

I, e,n, kod, j,k, x:integer; fam:string; f:boolean;

Label 1;

Begin

Clrscr;

For i:=1 to 35 do

Begin

Textcolor(1);

Write(chr(5));

End;

Writeln;

TextColor(1); write(chr(5));

Repeat

F:=true;

Textcolor(5);

Write(‘ vvedite familiu= ‘);read(fam);

TextColor(1); write(chr(5));

E:=length(fam);

For i:=1 to e do

Begin

Val(fam[i],n, kod);

If kod=0 then

F:=false;

End;

If f=false then writeln(‘neverno vvedena familia’) else

Until f=true;

Textcolor(4); write(‘ kol-vo bukv v familii= ‘,e);

TextColor(1); write(‘ ‘,chr(5));

Writeln;

Write(chr(5));

TextColor(11); write(‘ vvedite massiv iz ‘,e,’ chisel: ‘);

TextColor(1); write(chr(5));

Writeln;

Write(chr(5),’ ‘);

For i:=1 to e do

Begin

TextColor(14);

Write(i,’-e chislo=’);

TextColor(45);

Read(a[i]);

TextColor(1);

Write(chr(5),’ ‘);

End;

TextColor(15); write(‘ Isxodnii massive: ‘);

Textcolor(1); write(chr(5));

Writeln;

Write(chr(5));

For i:=1 to e do

Begin

TextColor(5); write(‘ ‘,a[i],’ ‘);

End;

Writeln;

Textcolor(1); write(chr(5));

TextColor(15); write(‘ Otsortirovannii massive:’);

TextColor(1); write(‘ ‘,chr(5));

Writeln;

K:=0;

{metod vstavki}

{for i:=2 to e do

Begin

X:=a[i];

J:=i-1;

While (x<a[j]) and (j>=1) do

Begin

A[j+1]:=a[j];

J:=j-1;

K:=k+1;

If j=0 then goto 1;

End;

1: a[j+1]:=x;

End;}

{puzyrkovyi metod}

For i:=2 to e do

Begin

For j:=e downto i do

If a[j-1] > a[j] then

Begin

X:=a[j-1];

A[j-1]:=a[j];

A[j]:=x;

End;

End;

Write(chr(5));

For i:=1 to e do

Begin

TextColor(5);

Write(‘ ‘,a[i],’ ‘);

End;

Writeln;

For i:=1 to 35 do

Begin

Textcolor(1);

Write(chr(5));

End;

Readln;

End.

Примеры выполнения

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

1. http://pascal. proweb. kz/

2. Д. Кнут, Искусство программирования, М.:Мир,1978.

3. Рейнгольд, Нивергельт, Део, Комбинаторные алгоритмы. Теория и практика, М.:Мир, 1982.


Составить программу на языке Turbo Pascal для параллельной сортировки чисел