Вход

программы на Paskal

Курсовая работа по программированию
Дата добавления: 13 декабря 2008
Язык курсовой: Русский
Word, rtf, 1.4 Мб
Курсовую можно скачать бесплатно
Скачать
Не подходит данная работа?
Вы можете заказать написание любой учебной работы на любую тему.
Заказать новую работу

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

Волгоградского Государственного Технического Университета

Волжский Политехнический институт



Кафедра ВИТ










Семестровая работа

по программированию








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

группы №107

Соколова О.А.

Проверил:

старший преподаватель:

Фадеева Марина Викторовна













Волжский, 2006 г.


Вариант №9.

  1. Присвоить целой переменной d первую цифру из дробной части заданного положительного вещественного числа х. Например: х = 39.497, тогда d = 4.

Блок-схема:

Текст программы:

program odinodin;

uses crt;

var x,z: real;

y,d: integer;

begin

clrscr;

writeln('vvedite polozhitelnoe veshestvennoe chislo');

readln(x); {Задаем число}

z:=x*10; {Заданному числу присваиваем его значение, умноженное на 10}

y:=trunc(z); {Округляем число до целой части}

d:=y mod 10; {Делим число на 10 и берем остаток от деления}

writeln('pervaya cifra iz drobnoi chasti zadannogo polozhitelnogo chisla=',d);

readkey;

end.

Результаты программы:


x

d

23.123

1

3.567

5

2.456

4

12.657

6

3.78

7

345.67

6

34.86

8

8.09

0

56.23

2

68.987

9


  1. Составить логическое выражение, принимающее значение ИСТИНА, если ладья, расположенная на поле (x1, y1) шахматной доски, бьёт поле (x2, y2) за один ход. Напечатать значение этого выражения для заданных x1, y1, x2, y2.

Блок-схема:

Текст программы:

Program odindva;

uses crt;

var x1,y1,x2,y2: integer;

begin

clrscr;

writeln('vvedite koordinati ladii: x1');

readln(x1); {Вводим координаты поля 1}

writeln('y1');

readln(y1);

writeln('vvedite koordinati polya: x2');

readln(x2); {Вводим координаты поля 2}

writeln('y2');

readln(y2);

if ((x1=x2) and ((y2y1-7))) or {Проверяем условия, при

((y1=y2) and ((x2x1-7))) then которых, поле бьется и выводим

writeln('byot pole s 1 hoda') else writeln('ne byot pole s 1 hoda'); сведения на экран}

readkey;

end.

Результаты программы:

Координаты поля 1

Координаты поля 2

Результат

2 3

3 5

ne byot pole s 1 hoda

2 7

2 8

byot pole s 1 hoda

6 1

4 1

byot pole s 1 hoda

3 8

3 6

byot pole s 1 hoda

2 8

3 5

ne byot pole s 1 hoda

1 1

1 7

byot pole s 1 hoda

3 7

3 8

byot pole s 1 hoda

5 8

2 8

byot pole s 1 hoda

7 3

4 5

ne byot pole s 1 hoda

2 6

2 7

byot pole s 1 hoda


  1. Задано целое число n: 20  n  99. Напечатать его в словесной форме, например: 31 - тридцать один.

Блок-схема:

Текст программы:

Program odintri;

uses crt;

var n,m,k: integer;

begin

clrscr;

writeln('vvedite chislo n ot 20 do 99');

readln(n);

m:=n div 10; {Разбиваем двузначное число на два и задаем условия записи}

k:=n mod 10;

if m=2 then writeln('dvadcat');

if m=3 then writeln('tridcat');

if m=4 then writeln('sorok');

if m=5 then writeln('pyatdesyat');

if m=6 then writeln('shesdesyat');

if m=7 then writeln('semdesyat');

if m=8 then writeln('vosemdesyat');

if m=9 then writeln('devyanosto');

if k=1 then writeln('odin');

if k=2 then writeln('dva');

if k=3 then writeln('tri');

if k=4 then writeln('chetire');

if k=5 then writeln('pyat');

if k=6 then writeln('shest');

if k=7 then writeln('sem');

if k=8 then writeln('vosem');

if k=9 then writeln('devyat');

readkey;

end.

Результаты программы:

Вводимые данные

Выводимые данные

20

dvadcat

31

tridcat odin

42

sorok dva

53

pyatdesyat tri

64

shesdesyat chetire

75

semdesyat pyat

86

vosemdesyat shest

97

devyanosto sem

78

semdesyat vosem

49

sorok devyat


  1. Вычислить приближенное значение интеграла по формуле прямоугольников для заданного целого n > 39.

Блок-схема:


Текст программы:

Program dvaodin;

uses crt;

const n=40;

var a,b,f,h,x,p,s: real;

i: integer;

begin

clrscr;

a:=0.1; {Задаем пределы интегрирования}

b:=0.5;

h:=(b-a)/n; {Задаем значения по формуле}

s:=0;

for i:=1 to n do

begin

p:=(1-sqr(a+i*h))/(a+i*h+sqr(a+i*h)*( a+i*h)); {Задаем значения по формуле}

s:=s+p;

end;

f:=h*s;

writeln(f);

readkey;

end.

Результаты программы:

1.3540421380Е+00


  1. Дана квадратная матрица A(N,N). Выполнить перестановку строк и столбцов исходной матрицы таким образом, чтобы элементы первой главной диагонали упорядочились по возрастанию.

Блок-схема:

fuction proVd:

procedure zamen:

procedure printF:

procedure recur:

randomize:

Текст программы:

Program dvadva;

uses crt;

const n=3;

type massiv = array[1..n,1..n] of integer;

var mas:massiv;

i,j:integer;

function proVd(tmp:massiv):boolean; {функция проверяет главную диагональ на правильность к условию }

var toll:boolean;

i:integer;

begin

toll:=true;

for i:=1 to n - 1 do if tmp[i,i]>tmp[i+1,i+1] then toll:=false;

proVd:=toll;

end;

procedure zamen(var tmp:massiv;x,y:integer;toll:boolean); {процедура упорядочивает элементы главной диагонали по возрастанию}

var t,i:integer;

begin

for i:=1 to n do

if toll then

begin

t:=tmp[i,x];

tmp[i,x]:=tmp[i,y];

tmp[i,y]:=t;

end else

begin

t:=tmp[x,i];

tmp[x,i]:=tmp[y,i];

tmp[y,i]:=t;

end;

end;


procedure printF(tmp:massiv); {процедура выводит матрицу на экран}

var i,j:integer;

begin

for i:=1 to n do begin

for j:=1 to n do write(tmp[i,j]:4);writeln;end;

end;


procedure recur(step:integer); { главная рекурсивная процедура, которая перебирает все возможны перестановки столбцов и строк, и если диагональ стала правильной выводит полученный массив и выходит}

var i,j:integer;

k:integer;

begin

if step>n then exit;

if proVd(mas) then

begin

printF(mas);

readkey;

halt;

end;

for i:=step to n-1 do

for j:=i+1 to n do

for k:= 0 to 1 do

begin

if k = 0 then

begin

zamen(mas,i,j,true);

recur(step+1);

zamen(mas,i,j,true);

end else

begin

zamen(mas,i,j,false);

recur(step+1);

zamen(mas,i,j,false);

end;

end;

end;


begin

clrscr;

randomize; {формируем матрицу случайным образом}

for i:=1 to n do

for j:=1 to n do mas[i,j]:=random(10);

printF(mas);

writeln('---');

recur(1);

readkey;

end.

Результаты программы:

Первоначальные данные

Итоговые данные

2 4 8

3 1 3

2 7 9

1 3 3

4 2 8

7 2 9



    1. Напечатать слова заданной непустой строки в порядке увеличения их длины. Считать, что слова разделены одним или несколькими пробелами или запятой.

Блок-схема:


Текст программы:

Program dvatri;

uses crt;

var m,k,n,i,j:integer;

s,p:string;

a:array[1..100]of string;

begin

clrscr;

readln(s);

i:=1;

for j:=1 to length(s) do begin {Считаем кол-во букв в каждом слове}

if s[j]<>' ' then a[i]:=a[i]+s[j];

if ((s[j]=' ') and (s[j+1]<>' '))then i:=i+1;

end;

for j:=1 to i do begin

for n:=1 to i-1 do begin

m:=length(a[n]); {Присваиваем в цикле длину каждого слова новой переменной}

k:=length(a[n+1]);

if m>k then {Сравниваем длину слов и расставляем в порядке увеличения}

begin

p:=a[n];

a[n]:=a[n+1];

a[n+1]:=p;

writeln(a[j]);

end;

end;

end;

readkey;

end.

Результаты программы:

Вводимые данные

Выводимые данные

123 1234 1234567 12345

123 1234 12345 1234567

Wert werty wer wertyu we

We wer wert werty wertyu

Qazxsw edc rfvb gtyhn

Edc rfvb gtyhn qazxsw

Odin dva chetitre

Dva odin chetire

123456789 12345678 1234567 123456 12345 1234 123 12 1

1 123 1234 12345 123456 1234567 12345678 123456789

Tyugh okm rfgh

Okm rfgh tyugh

Abc ab abcd

Ab abc abcd

Za z zaz

Z za zaz

Ret tero er

Er ret tero

Koluni step lex

Lex step koluni


3.1 Используя множественный тип, описать функцию f(n), подсчитывающую количество гласных букв латинского алфавита в заданной непустой строке (прописные и строчные буквы не различать), и процедуру, печатающую эту строку без гласных букв и выводящую только первые вхождения каждого символа. Составить программу, использующую описанные процедуру и функцию. Пример: My name is Ann, функция f(x) возвращает 4, а процедура печатает буквы: MNS.

Блок-схема:

functin posch:

procedure print:

Текст программы:

program triodin;

uses crt;

var

str:string;

z:integer;

function posch(b:string):integer; {Функция считает кол-во гласных}

var

stroka:set of char;

i,k,j:integer;

glas:string;

begin

k:=0; {Обнуляем счетчик}

stroka:=[]; {Обнуляем строку}

glas:='EeYyUuIiOoAa'; {Задаем множество гласных}

for j:=1 to length(str) do

begin

if (glas[j] in stroka) or (glas[j+1] in stroka) then k:=k+1; {Проверяем букву на вхождение в множество гласных и, если она входит, увеличиваем счетчик}

end;

posch:=k;

end;


procedure print(str:string); {Процедура удаляет все гласные из строки и выводит каждое первое вхождение согласных}

var i: integer;

a: set of char;

b: char;

begin

a:=['E','e','Y','y','U','u','I','i','O','o','A','a']; {Задаем множество гласных букв}

b:=[ ]; {Задаем пустое множество}

for i:=1 to length(str) do

begin

if str[i] in a then delete(str,i,1); {Если буква входит в множество гласных, стираем ее}

if str[i] in b then break else b:=b+str[i]); {Если не входит, тогда записываем ее в множество b, если она там уже есть, то возвращаемся к началу цикла}

end;

writeln(b); {Выводим буквы на печать}

end;

begin

clrscr;

writeln('Vvedite stroky');

readln(str);

z:=posch(str);

writeln('Kolichestvo glasnih= ',z);

print(str,b);

readkey;

end.

Результаты программы:

Вводимые данные

Выводимые данные

My name is ann

4 mns

He is the man

3 hsmnr

Why are you

8 whrt

How do you do it

7 hwdt

You must

4 mst

Lets go

2 ltsg

Dont care

3 dntcr

Just wait

3 jstw

May be

3 mb

He will come

4 hwlcm


3.2. Описать рекурсивную функцию для вычисления биномиального коэффициента Составить программу, вычисляющую значение для m=0,1,...,n и n=1,2,...,k, где k1 - заданное целое число.

Блок-схема:

function Binom

Текст программы:

Program tridva;

uses crt;

var

n,m,k:integer;

sum : extended;

function Binom(bn:extended;n,k,kol:integer):extended;

{bn - промежуточное значение бинома;

n - нижний коэффициент бинома;

k - верхний коэффициент бинома;

kol - число использующая для вычисления факториала}

begin

if kol<=n then

begin

if kol>k then bn:=bn*kol;

if (n - k)>= kol then bn:=bn/kol;

Binom := Binom(bn,n,k,kol+1);

end else

Binom := bn;

end;

begin

clrscr;

sum:=0;

write('k = ');

read(k);

{writeln(binom(1,20,6,1):8:0);}

for n:=1 to k do

for m:=0 to n do sum:=sum + binom(1,n,m,1);

writeln('Summa = ',sum:8:0);

readkey;

end.

Результаты программы:

Водимые данные

Выводимые данные

1

2

2

6

3

14

4

30

5

62

6

126

7

254

8

510

9

1022

10

2046



4. Описать комбинированный тип для представления экзаменационной ведомости. Составить программу, которая обеспечивает ввод информации для заданного числа студентов и распечатку введенных данных в виде таблицы. Вычислить средний балл в каждой учебной группе и напечатать по каждой группе список студентов, имеющих средний балл выше среднего балла группы.

Блок-схема:

Текст программы:

Program cheture;

uses crt;

type

z=record

name: string[25];

lastn: string[25];

group: integer;

sb: real;

end;

const

n=10;

var

i,k6,k7,k10:integer;

s: array[1..n] of z;

sb6,sb7,sb10,s6,s7,s10: real;

sbg7,sbg6,sbg10: real;

begin

clrscr;

for i:=1 to n do

begin {Водим данные о студентах: имя, фамилию, номер группы и средний балл}

writeln('vvedite imya');

readln(s[i].name);

writeln('vvedite familiyu');

readln(s[i].lastn);

writeln('vvedite nomer gruppi: 106, 107 ili 110');

readln(s[i].group);

writeln('vvedite sredniy bal studenta');

readln(s[i].sb);

end;

for i:=1 to n do

begin

writeln(s[i].name,' ' ,s[i].lastn,' ',s[i].group,' ',s[i].sb);

{Выводим данные на экран}

end;

sb6:=0; sb7:=0; sb10:=0; k6:=0; k7:=0; k10:=0; sbg6:=0; sbg7:=0; sbg10:=0; {Обнуляем все счетчики}

for i:=1 to n do

begin {Считаем кол-во студентов в каждой группе}

if s[i].group=106 then

begin

k6:=k6+1;

sbg6:=sbg6+s[i].sb;

end;

if s[i].group=107 then

begin

k7:=k7+1;

sbg7:=sbg7+s[i].sb;

end;

if s[i].group=110 then

begin

k10:=k10+1;

sbg10:=sbg10+s[i].sb;

end;

end;

s6:=sbg6/k6; {Считаем средний балл каждой группы}

s7:=sbg7/k7;

s10:=sbg10/k10;


{Сравниваем средний балл группы со средним баллом студентов этой группы, если средний балл студента выше, то выводим сведения о студенте на экран}

For i:=1 to n do

begin

if s[i].group=106 then

begin

if s[i].sb>s6 then writeln(s[i].name,' ' ,s[i].lastn,' ',s[i].group,' ',s[i].sb);

end;

if s[i].group=107 then

begin

if s[i].sb>s7 then writeln(s[i].name,' ' ,s[i].lastn,' ',s[i].group,' ',s[i].sb);

end;

if s[i].group=110 then

begin

if s[i].sb>s10 then writeln(s[i].name,' ' ,s[i].lastn,' ',s[i].group,' ',s[i].sb);

end;

end;

readkey;

end.

Результаты программы:

Вводимые данные

Выводимые данные

Daniel Carvalho 107 5

Egor Titov 110 2

Vadim Evseev 110 3, 2

Petr Bystrov 110 2,4

Alexandr Kolinko 106 3, 4

Sergei Semak 107 4,8

Dmitriy Kirichenko 107 4,4

Andrey Arshavin 106 4,1

Alexandr Kerzhakov 106 3,3

Pavel Mamaev 106 3,7

Daniel Carvalho 107 5

Andrey Arshavin 106 4,1

Pavel Mamaev 106 3,7

Vadim Evseev 110 3, 2





© Рефератбанк, 2002 - 2017