Автор работы: Пользователь скрыл имя, 16 Сентября 2009 в 13:41, Не определен
Учебник по программированию
Целочисленная арифметика TURBO PASCAL (примеры задач)
1. 0.pas-Подсчитать
кол-во цифр в заданном
натуральном числе
program N1{подсчит ть кол-во цифр в з д нном н тур льном числе};
var N:integer;
function KOL(N:integer):integer;
begin
if N>9 then KOL:=KOL(N mod 10)+KOL(N div 10)
else KOL:=1;
end;
BEGIN
Write('Введите N');ReadLn(N);
WriteLn(KOL(N));
ReadLn;
END.
2. Найдите целые числа-палиндромы, которые при возведении в квадрат
тоже дают палиндромы
program borlpasc;
{н йдите целые числа -палиндромы, которые при возведении в квадрат
тоже д ют п линдромы}
var i,i1,i2:longint;
function Palindrom(n:longint):boolean;
var n1,n2,o:longint;
begin n1:=n;n2:=0; {n1 - данное число, n2 - число которое получится}
while n1>0 do
begin o:=n1 mod 10;{о - ост ток от деления н 10}
n1:=n1 div 10;
n2:=n2*10+o;
end;
Palindrom:=(n=n2);
end;
begin writeln('Введите интервал поиск :');
write('Начало интервала:');readln(i1);
write('Конец интерв л :');readln(i2);
for i:=i1 to i2 do
if Palindrom(i) and Palindrom(sqr(i))
then writeln(i,'-п линдром ',sqr(i),'-п линдром');
end.
3. Поменять местами первую и последнюю цифры числа
program borlpasc;
var b,a,n,k:integer;
begin write('введите число n=');
readln(n);
k:=n;
a:=k mod 10;
repeat b:=k mod 10;
k:=k div 10
until k div 10 =0;
b:=k mod 10;
writeln(a,n div 10 div 10 mod 10,n div 10 mod 10,b)
end.
4. Дано нат. K. напечатать К-ю цифру последовательности
12345678910111213...,
в
которой записаны
подряд все натуральныe
числa
{Andrey Sharov}
{ e-mail : ansharov@one.lv }
{ website: borlpasc.narod.ru
{д но н т. K. н печ т ть К-ю цифру последов тельности 12345678910111213...,
в которой з пис ны подряд все н тур льныe числa}
program borlpasc;
var i,j,k,n,o:integer;
a,t:longint;
begin write('Введите k=');readln(k);
t:=0;i:=0;
repeat t:=t+1;
j:=t;
while j>0 do{счит ем количество цифр в числе
и доб вляем к общему количеству}
begin j:=j div 10;
i:=i+1;
{if i=k then o:=j mod 10;}
end;
until i>=k;
while i>=k do{возвр щ емся по цифр м последнего числ
до нужной}
begin o:=t mod 10;
t:=t div 10;
i:=i-1;
end;
writeln('k-я цифр :',o)
end.
5. Дано число N<=99. Дописать в начало и в конец числа цифру k
program borlpasc;
var n,k:integer;
begin write('введите k=');
readln(k);
write('введите n=');
readln(n);
writeln('Получилось число:');
write(k,n,k)
end.
6. Проверить, есть ли в записи числа N в степени k цифра m
Program borlpasc;
var i,n,m,s,k,l,a:integer;
begin write('введите n=');
readln(n);
write('введите k=');
readln(k);
write('введите цифру m=');
readln(m);
i:=0;l:=0;s:=1;
repeat s:=s*n;
i:=i+1
until i=k;
repeat a:=s mod 10;
if a=m then l:=l+1;
s:=s div 10
until s=0;
if l=0 then writeln('В з писи числ нет цифры',' ',m)
else writeln('В з писи числ цифр ',m,' есть')
end.
7. Найти наименьшее нат. число, представимое двумя различными
способами в виде суммы кубов двух натуральных чисел
program borlpasc;
var i,k:integer;
x,y:integer;
begin i:=1; k:=0;
repeat i:=i+1;
for y:=1 to i-1 do
for x:=1 to i do
if x*x*x+y*y*y=i then k:=k+1
until k>=2; writeln(x,y);
writeln('н им н т число=',i)
end.
8. Доказать, что любую целочисленную денежную сумму большую 7 рублей можно выплатить без сдачи трешками и пятерками.
program borlpasc;
var n,n3,n5,k:integer;
begin write('Введите сумму(>7) n=');
readln(n);
k:=0;
for n3:=0 to (n div 3) do
for n5:=0 to (n div 5) do
begin if n3*3+n5*5=n
then writeln(n3,' трешки и ',n5,' пятерок');
k:=k+1
end;
if k=0
then writeln('Из трешек и пятерок эту сумму не сложить.')
end.
9. Дано нат. K. напечатать К-ю цифру последовательности 149162536...,
в которой записаны подряд квадраты всех натуральных чисел
program borlpasc;
var i,j,k,n,o:integer;
a,t:longint;
begin write('Введите k=');readln(k);
j:=0;a:=1;i:=0;
repeat j:=j+1;a:=sqr(j);
t:=a;
while t>0 do{счит ем количество цифр в числе
и доб вляем к общему
begin t:=t div 10;
i:=i+1;
end;
until i>=k;
t:=a;
while i>=k do{возвр щ емся по цифр м последнего числ
до нужной}
begin o:=t mod 10;
t:=t div 10;
i:=i-1;
end;
writeln('k-я цифр :',o)
end.
10. Есть ли в записи числа 3 одинак цифры
PROGRAM borlpasc;{Есть ли в з писи числ 3 один к цифры}
VAR N:INTEGER;a,b,c,d:integer;
BEGIN WRITE('ВВЕДИТЕ ЧИСЛО N=');
READLN(N);
a:=n div 1000;
b:=n div 100 mod 10;
c:=n div 10 mod 10;
d:=n mod 10;
IF (a=b) and (a=c) or (a=b) and (a=d) or (a=c) and (a=d) or
(b=c) and (b=d)
THEN WRITELN('В ЗАПИСИ ЧИСЛА ЕСТЬ 3 ОДИНАКОВЫЕ ЦИФРЫ')
ELSE WRITELN('В ЗАПИСИ ЧИСЛА НЕТ ТРЕХ ОДИНАКОВЫХ ЦИФР')
END.
11. Дано натур число n<=9999. Поменять порядок следования цифр.
program borlpasc;
var s,x:integer;
begin write('введите число=');
readln(x);
s:=0;
repeat s:=s*10+x mod 10;
x:=x div 10
until x=0;
writeln(s)
end.
12. Перевод из 10 в двоичную ситему счисления
PROGRAM borlpasc; {ПЕРЕВОД ЧИСЛА ИЗ 10-ОЙ СИСТЕМЫ СЧИСЛЕНИЯ В 2-УЮ}
TYPE massiv=array [1..50] of integer;
var a:massiv;
n,i:integer;
begin write('введите число:');
readln(n);
i:=1;
while n>=2 do
begin a[i]:= n mod 2;
i:=i+1;
n:= n div 2;
end;
i:=i-1;
write(n);
while i<>0 do
begin write(' ',a[i]);
i:=i-1;
end;
writeln
end.
13. Перевод из 10 в двоичную ситему счисления (II способ);
program two_system;
var sec:array[1..16] of byte;
d,ten,i:integer;
procedre two( ten_1:integer;var two_s:byte);
begin two_s:=ten_1 mod 2;
ten_1:=ten_1 div 2;
end;
begin
write('введите н т.число: ');
readln(ten);
if ten<=0 then write('некорректные д нные')
else
d:=ten;
a[i]:=0;
fori:=16 downto 1 do two(ten,sec[i]);
write('н тур льное число: ',d);
write('в двоичной системе
for i:=1 to 16 do write(' ',sec[i]);
end.
14. Найти все делители натурального числа N
program borlpasc;
const kol=100;
type cyfra=0..9;
chislo=array[1..kol] of cyfra;
var i,r,d,s,k,code:integer;
j,c0,c1,x,y,z,o,z1,n,lastd: