Joomla портал
seo seo Subscribe
0
seo

const a: array [1..12] of integer = (31,28,31,30,31,30,31,31,30,31,30,31);

b: array [1..12] of integer = (0,31,59,90,120,151,181,212,243,273,304,334);

begin if (m>=1) and (m=1) and (d

then numerday := b[m]+d

else numerday := 0

end;

Пример 5. Определение дня и месяца в невисокосном году по номеру дня.

а). Процедура на Паскале.

procedure date (n: integer; var d,m: integer);

const b: array [1..12] of integer = (0,31,59,90,120,151,181,212,243,273,304,334);

var n: integer;

label m1;

begin for m:=1 to 11 do

if n

if n

then m := 12

else m := 0;

m1: if m>0

then d := n – b[m]

else d := 0

end;

Пример 6. Установить, является ли данное целое число n простым.

а). Словесный алгоритм. Надо перебрать все натуральные числа k, меньшие квадратного корня из заданного числа n. Если для какого-то k число n делится на k нацело, то n составное, в противном случае оно простое.

б). Функция на Паскале.

function simple (n: integer): boolean;

var k,m: longint; b: boolean;

label m1;

begin b := true;

m := trunc (sqrt (n) );

for k:=2 to m do

if (n mod k)=0 then

begin b := false;

goto m1

end;

m1: simple := b

end;

Пример 7. Определить количество простых делителей в полном разложении заданного числа n.

а). Словесный алгоритм. Перебором в возрастающем порядке найдем наименьшее число k, на которое делится данное число n. Если k=n, значит число n простое и состоит из одного простого множителя. Если k

б). Рекурсивная функция на Паскале (функция, в которой один из операторов представляет собой вызов себя самой).

function fn (n: longint): integer;

var k,m: longint; p: integer;

label m1;

begin p := 1;

m := trunc (sqrt (n) );

for k:=1 to m do

if (n mod k)=0 then

begin p := 1+fn (n div k);

goto m1

end;

m1: fn := p

end;

Пример 8. Описать событие: “Карта К1 бьет карту К2, включая учет козырной масти”.

а). Функция на Паскале.

type

suit = (spades, clubs, diamonds, hearts);

value = (c7,c8,c9,c10,jack,queen,king,ace);

card = record s: suit; v: value end;

function beat (sc: suit; c1,c2: card): boolean;

begin

if c1.s=sc

then beat := ( (c2.s sc) or ( (c2.s = sc) and (c1.v > c2.v) ) )

else beat := ( (c1.s=c2.s) and (c1.v > c2.v) )

end;

Пример 9. Определение количества простых чисел, меньших или равных данному числу n.

а). Алгоритм (решето Эратосфена).

Сначала все числа от 2 до n считаются простыми. Затем, начиная с 2, для каждого числа k, для которого уже установлено, что оно простое, произво¬дится следующая процедура: все числа, кратные k, считаются составными. Процедура заканчивается, когда k2>n. После этого подсчиты¬вବется число простых чисел.

б). Функция на Паскале.

function eratosphen (n: integer): integer; {n

var

simple: set of 2..255; {Множество простых чисел}

k,m,p,s: integer;

begin

simple := [2..n]; {Сначала все числа от 2 до n считаются простыми}

m := trunc (sqrt (n) );

for k:=2 to m do

if (k in simple) then

begin

p := 2*k;

while p

begin

simple := simple – [p]; {Число p не является простым}

p := p+k

end

end;

s := 0;

for k:=2 to n do

if (k in simple) then s := s+1;

eratosphen := s

end;

4.2. Алфавит языка Паскаль.

Текст программы на Паскале состоит из собственно текста программы и ком¬ме¬нтариев. Коммента¬рием называется последовательность любых символов расширенного кода ASCII, ограниченная парой фигурных скобок { и }, либо парой (* и *), либо парой /* и */. Собственно текст программы состоит из слов в специальном алфавите, который является подмножеством системы знаков ASCII. Алфавит Паскаля состоит из букв (в число букв включены прописные и строчные буквы латин¬ского алфавита и символ подчеркивания ‘_’), пробела, цифр и следующих специальных символов (разделитель символов – верти¬кальная черта):

seo
8th Май 2011
Теги:
seo

Написать ответ

seo
 
seo
Все права защищены © 2023 Joomla портал
 
 
seo