Составить программу на языке Turbo Pascal для параллельной сортировки чисел
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
Южно-Уральский государственный университет
Приборостроительный факультет
Кафедра «Электронно-Вычислительные машины»
Курсовая работа
по курсу ПЯВУ
Выполнила: студентка
группы ПС-197 Савельева К.А.
Проверил: Сяськов С.В.
Челябинск 2009
Условие задачи Составить программу на языке Turbo Pascal для параллельной сортировки множества из n чисел, где n- мощность множества, состоящего из букв фамилии, n>2.
Оглавление- Условие задачи
- Описание программы
- Схема алгоритма
- Текст Программы
- Примеры выполнения
- Список литературы
Описание программыТело программы начинается с цикла for, создающего верхнюю строчку, состоящую из символов:{ for i:=1 to 35 dobegintextcolor(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: {for i:=1 to e dobeginval(fam[i],n,kod);if kod=0 thenbeginwriteln ('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 dobeginx:=a[i];j:=i-1;while (x<a[j]) and (j>=1) dobegina[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 dobeginfor j:=e downto i doif a[j-1] > a[j] thenbeginx:=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;beginclrscr;for i:=1 to 35 dobegintextcolor(1);write(chr(5));end;writeln;TextColor(1); write(chr(5));repeatf:=true;textcolor(5);write(' vvedite familiu= ');read(fam);TextColor(1); write(chr(5));e:=length(fam);for i:=1 to e dobeginval(fam[i],n,kod);if kod=0 thenf:=false;end;if f=false then writeln('neverno vvedena familia') elseuntil 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 dobeginTextColor(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 dobeginTextColor(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 dobeginx:=a[i];j:=i-1;while (x<a[j]) and (j>=1) dobegina[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 dobeginfor j:=e downto i doif a[j-1] > a[j] thenbeginx:=a[j-1];a[j-1]:=a[j];a[j]:=x;end;end;write(chr(5));For i:=1 to e dobeginTextColor(5);write(' ',a[i],' ');end;writeln;for i:=1 to 35 dobegintextcolor(1);write(chr(5));end;readln;end.
Примеры выполненияСписок литературы1. http://pascal.proweb.kz/2. Д. Кнут, Искусство программирования, М.:Мир,1978.3. Рейнгольд, Нивергельт, Део, Комбинаторные алгоритмы. Теория и практика, М.:Мир, 1982.