Читайте также:
|
|
Нахождение наибольшего общего делителя
program nod;
var a,b,c:integer;
begin
Writeln('enter a,b');
Readln(a,b);
While b>0 do begin
c:=b;
b:=a-(a div b)*b;
a:=c;
end;
Writeln(a);
end.
*- у взаимно простых чисел НОД=1
** - НОК(a,b)= abs(a*b)/НОД(a,b);
Нахождение простых чисел от 1 до n
program simplified;
var n:integer;i,j:integer;
a:array[1..100] of boolean;
begin
Writeln('enter n');
Readln(n);
i:=2;
While sqr(i)<=n do begin
if a[i]=false then begin
j:=sqr(i);
While j<=n do begin
If a[j]=false then a[j]:=true;
j:=j+i;
end;
end;
inc(i);
end;
For i:=2 to n do If a[i]=false then Write(i:3);
end.
*- через алгоритм нахождения простых чисел можно найти все простые делители числа
**- если до sqrt(n) число n не имеет делителей => n – простое
Сортировка массива (метод Шелла)
Program shell;
const n=30;
type arr=array[1..n] of integer;
var x:arr;p:integer;
procedure sorting(var a:arr);
var b,i,j,k,h:integer;
begin
b:=n;
k:=b div 2;
While k>0 do begin
For i:=1 to b-k do begin
j:=i;
While (j>=1) and (a[j]>a[j+k]) do begin
h:=a[j];
a[j]:=a[j+k];
a[j+k]:=h;
dec(j);
end;
end;
k:=k div 2;
end;
end;
begin
Randomize;
For p:=1 to n do begin
x[p]:=-n+random(2*n+1);
Write(x[p]:4);
end;
Writeln;
Writeln;
sorting(x);
For p:=1 to n do begin
Write(x[p]:4);
end;
end.
Сортировка массива слиянием
program merg;
uses crt;
const n=30;
type arr=array[1..n] of integer;
var a:arr; ii:integer;
procedure Merge (var a: arr; p, q, r: integer);
var i, j, k: integer;
var B: arr;
begin { Merge }
i:= p;
j:= q + 1;
k:= p;
while ((i <= q) and (j <= r)) do
begin
if (A[i] < A[j])
then begin
B[k]:= A[i];
i:= i + 1;
end
else begin
B[k]:= A[j];
j:= j + 1;
end;
k:= k + 1;
end;
while (i <= q) do
begin
B[k]:= A[i];
k:= k + 1;
i:= i + 1;
end;
while (j <= r) do
begin
B[k]:= A[j];
k:= k + 1;
j:= j + 1;
end;
for k:= p to r do A[k]:= B[k];
end;
procedure MergeSort (var A: arr; p, r: integer);
var q: integer;
begin { MergeSort }
if (p < r) then
begin
q:= (p + r) div 2;
MergeSort (A, p, q);
MergeSort (A, q + 1, r);
Merge (A, p, q, r);
end;
end;
begin
Randomize;
For ii:=1 to n do begin
a[ii]:=-3*n+random(6*n+1);
Write(a[ii]:4);
end;
Writeln;
Writeln;
mergesort(a,1,n);
For ii:=1 to n do Write(a[ii]:4);
end.
Пирамидальная сортировка массива
program pyramide;
uses crt;
const n=30;
type arr=array[1..n] of integer;
var a:arr; q:integer;
procedure swap(var x,y:integer);
var temp:integer;
begin
temp:=x;
x:=y;
y:=temp;
end;
procedure toPyr(var data:arr;z:integer);
var i:integer;
begin
for i:=(z div 2) downto 1 do begin
if 2*i<=z then if data[i]<data[2*i] then swap(data[i],data[2*i]);
if 2*i+1<=z then if data[i]<data[2*i+1] then swap(data[i],data[2*i+1]);
end;
end;
procedure left(var data:arr);
var i:integer;
temp:integer;
begin
temp:=data[1];
for i:=1 to n-1 do
data[i]:=data[i+1];
data[n]:=temp;
end;
begin
Randomize;
For q:=1 to n do begin
a[q]:=-2*n+random(4*n+1);
Write(a[q]:4);
end;
for q:=n downto 1 do begin
topyr(a,q);
left(a);
end;
Writeln;
Writeln;
For q:=1 to n do Write(a[q]:4);
end.
low | X:=low(x) | Возвращает младшее значение в диапазоне аргумента. |
Ord | X:=ord(‘a’) | Возвращает код символа из таблицы ASCII |
ln | X:=ln(2.71) | Натуральный логарифм числа |
pi | X:=pi | Возвращает значение числа пи |
odd | If odd(x)=true then … | Проверяет – является аргумент нечетным числом |
pred | X:=pred(11); {x=11; x=10} | Возвращает предшествующее значение аргумента |
length | X:=length(s); | Возвращает динамическую длину строки |
pos | X:=pos(s1,s2) | Производит поиск подстроки в строке. Возвращает номер позиции первого вхождения подстроки в строку. |
Дата добавления: 2014-12-19; просмотров: 23 | Поможем написать вашу работу | Нарушение авторских прав |