Главная Учебники - Разные Лекции (разные) - часть 33
Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования Южно-Уральский государственный университет Приборостроительный факультет Кафедра «Электронно-Вычислительные машины»
по курсу ПЯВУ Выполнила: студентка группы ПС-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.
|