Составить программу на языке Turbo Pascal для параллельной сортировки чисел
Ввод и вывод значений целого, вещественного, логического и перечисляемого типов. Табулирование функции на отрезке с заданным количеством точек. Рекурсивная функция - вычисление суммы, произведения, количества, минимума, максимума и проверка условия.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 07.03.2010 |
Размер файла | 75,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
Южно-Уральский государственный университет
Приборостроительный факультет
Кафедра «Электронно-Вычислительные машины»
Курсовая работа
по курсу ПЯВУ
Выполнила: студентка
группы ПС-197 Савельева К.А.
Проверил: Сяськов С.В.
Челябинск 2009
Условие задачи
Составить программу на языке Turbo Pascal для параллельной сортировки множества из n чисел, где n- мощность множества, состоящего из букв фамилии, n>2.
Оглавление
- Условие задачи
- Описание программы
- Схема алгоритма
- Текст Программы
- Примеры выполнения
- Список литературы
Описание программы
Тело программы начинается с цикла for, создающего верхнюю строчку, состоящую из символов:
{ for i:=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:
{for i:=1 to e do
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 на основе использования массивов данных. Особенности хранения данных, способы объявления переменных, действия над элементами массивов, их ввод и вывод. Практическое применение одномерных и многомерных массивов.
методичка [17,8 K], добавлен 25.11.2010Описание подпрограммы SumDigit, находящей сумму цифр S целого числа N. Нахождение суммы цифр данных чисел, используя эту подпрограмму. Алгоритм и код программы, тестовые наборы. Вывод о ее работоспособности. Описание функции RingS вещественного типа.
лабораторная работа [514,5 K], добавлен 23.11.2014Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.
курсовая работа [359,0 K], добавлен 23.05.2012Написание программы "телеграф", который принимает от пользователя сообщения и выводит его на экран в виде последовательности точек и тире. Их вывод сортируется звуковым сигналом соответствующей длительности. Программа написана на языке Turbo Pascal.
курсовая работа [565,6 K], добавлен 18.08.2008Определение функции, ее прототип. Рекурсия - частичное определение объекта через себя. Рекурсивная функция произведения 2-х целых чисел. Задача о вычислении Факториала. Вычисление чисел Фибоначчи. Рекурсивное исполнение программы о Ханойских башнях.
презентация [1,2 M], добавлен 20.05.2012Перевод числа из десятичной системы счисления в двоичную. Результат выполнения в TURBO PASKAL заданных функций и операций. Программа вычисления значений функции на языке PASKAL, блок-схема. Вычисление суммы и произведения всех элементов массива.
контрольная работа [66,6 K], добавлен 15.02.2013Постановка задачи и ее формализация. Поиск значений интерполяционного многочлена в точках x1 и x2. Поиск минимума функции F(x) на отрезке [a;b]. Проверка условий сходимости методов. Тестирование программных модулей. Детализированная схема алгоритма.
курсовая работа [893,0 K], добавлен 04.02.2011Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.
курсовая работа [115,5 K], добавлен 22.05.2010Разработка эскизного и технического проектов программы "Helpopr" (ввод, хранение и вывод данных на дисплей по запросу пользователя). Язык программирования Turbo Pascal. Описание алгоритма программы. Требования к компьютеру и программному обеспечению.
курсовая работа [198,1 K], добавлен 03.02.2010Особенности применения компьютерных программ Pascal, Excel, MathCAD и Delphi для вычисления значения функции y(x) с заданным промежутком и шагом. Виды результатов вычислений, их сравнение и вывод. Изображение блок-схемы алгоритма решения задания.
контрольная работа [760,0 K], добавлен 08.03.2011