|
Составить программу на языке Turbo Pascal для параллельной сортировки чисел
Составить программу на языке 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.
|
|