Симоновx

advertisement
Симонов Николай Сергеевич, МБОУ СОШ с.Целинное
Хайбуллинского района
Среда программирования - Pascal ABC версия: 3.0.1.37
Задание 1
Разработать программу, случайным образом перемешивающую дни недели (повторы дней не
допускаются).
program p1;
Var i,k,vr:integer;
mas: array [1..7] of integer;
begin
Randomize;
//заполнение массива чисел от 1 до 7
for i:=1 to 7 do mas[i]:=i;
//перемешивание чисел
for i:=1 to 7 do
begin
k:= Random(7-i+1)+i;
if k<>i then begin
vr:=mas[i];
mas[i]:=mas[k];
mas[k]:=vr;
end;
end;
//вывод дней недели в зависимости от числа
for i:=1 to 7 do
case mas[i] of
1: write ('Понедельник ');
2: write ('Вторник ');
3: write ('Среда ');
4: write ('Четверг ');
5: write ('Пятница ');
6: write ('Суббота ');
7: write ('Воскресенье ');
end;
end.
Задание 2
Разработать интерактивную программу для игры «Камень-Ножницы-Бумага-Ящерица-Спок»
пользователя с компьютером.
program p2;
var
e,r:integer;
begin
randomize;
//компьютер задумывает число от 1 до 5, если камень=1; ножницы=2;бумага=3;ящерица=4;спок=5
r:=random(5)+1;
// ввод цифры в зависимости от предмета
write('Введи цифру в зависимости от предмета, который ты
выбираешь:камень=1;ножницы=2;бумага=3;ящерица=4;спок=5;');
read(e);
//вывод результата в зависимости от комбинации предметов
if (r=1) and (e=1) then write ('Ничья');
if (r=1) and (e=2) then write ('Ты проиграл');
if (r=1) and (e=3) then write ('Ты выиграл');
if (r=1) and (e=4) then write ('Ты проиграл');
if (r=1) and (e=5) then write ('Ты выиграл');
if (r=2) and (e=1) then write ('Ты выиграл');
if (r=2) and (e=2) then write ('Ничья');
if (r=2) and (e=3) then write ('Ты проиграл');
if (r=2) and (e=4) then write ('Ты проиграл');
if (r=2) and (e=5) then write ('Ты выиграл');
if (r=3) and (e=1) then write ('Ты проиграл');
if (r=3) and (e=2) then write ('ты выиграл');
if (r=3) and (e=3) then write ('Ничья');
if (r=3) and (e=4) then write ('Ты выиграл');
if (r=3) and (e=5) then write ('Ты проиграл');
if (r=4) and (e=1) then write ('Ты выиграл');
if (r=4) and (e=2) then write ('ты выиграл');
if (r=4) and (e=3) then write ('Ты проиграл');
if (r=4) and (e=4) then write ('Ничья');
if (r=4) and (e=5) then write ('Ты проиграл');
if (r=5) and (e=1) then write ('Ты проиграл');
if (r=5) and (e=2) then write ('Ты проиграл');
if (r=5) and (e=3) then write ('Ты выиграл');
if (r=5) and (e=4) then write ('Ты выиграл');
if (r=5) and (e=5) then write ('Ничья');
writeln;
write ('Я задумал',r,'-и(ы)й предмет');
end.
Задание 3
Разработать программу, которая выводит на экран все простые числа в диапазоне от 1 до 1000.
program p3;
var
i, pr,ch:integer;
begin
for pr := 1 to 1000 do begin
ch:= 0;
for i := 1 to pr do begin
//если делится на 1 и только на себя, то выводим число
if pr mod i = 0 then inc(ch);
end;
if ch = 2 then write(pr:5)
end
end.
Задание 4
Разработать программу «Угадай число», которая с помощью генератора случайных чисел
загадывает и проверяет угадывание числа. В программе используется интервал от 1 до 100 и
дается пять попыток угадывания.
program p4;
var
i,ug,p, pr,ch:integer;
begin
randomize;
//компьютер задумывает в интервале от 1 до 100
ch:=random(100)+1;
writeln('Угадай число от 0 до 100');
// 5 раз в цикле отгадываем число, если угадал досрочно выходим из цикла
for i:=1 to 5 do begin read(ug);
if ug=ch then begin write('Поздравляю!Ты угадал число!'); break; end
else begin p:=5-i;
writeln('Ты не угадал число!Осталось ',p,' попыт(-ки,-ка,-ок)'); end;
end;
end.
Задание 5
Разработать программу подсчета количество пар любых двух целых чисел диапазоне от 1 до
10000 для которых справедливо утверждение: Сумма квадратов любых двух целых чисел равно
кубу одного из этих чисел. Если такие пары чисел существуют, подсчитать среди них количество
нечетных чисел. Если такие пары чисел существуют, вывести построчно значения этих чисел.
program p5 ;
var
i,j,k,nech: longint;
begin
k:=0;
//перебираем пары чисел, если отвечает условию печатаем и считаем их количество, также
считаем количество нечетных чисел в этих парах
for i:=1 to 10000 do
for j:=1 to 10000 do begin
if ((i*i+j*j)=i*i*i) or ((i*i+j*j)=j*j*j)then begin
writeln (i,' ',j); inc(k);
if (i mod 2 <>0) or (j mod 2 <>0) then inc(nech); end; end;
write ('количество пар=',k ,' количество нечетных чисел в парах=',nech);
end.
Задание 6
Какое число меньше миллиона имеет больше всего делителей? Разработать программу, которая
выводит такое число, делители числа и их количество.
const n=10000;
var
k,max:integer;
chislo,ch,i:longint;
m:array [1..n] of longint;
begin
max:=0; //максимальное количество делителей
//находим делители числа в цикле
for i:=1 to n do begin k:=0; //количество делителей
for ch:=1 to i do
if i mod ch = 0 then begin inc(k);
if k>=max then begin max:=k;chislo:=i; m[max]:=ch; end; end;
end;
writeln('Число, имеющее самое большое количество делителей = ',chislo);
write('Делители числа:');
for k:=1 to max do write(m[k]:5);writeln;
write('Количество делителей = ',max)
end.
Задание 7
Каждая страница книги содержит 64 строки. В каждой строке содержится 32 символа. Разработать
программу, которая подсчитывает число страниц в книге, если известно, что текст книги занял 512
Кбайт памяти. Для кодирования каждого символа использовалась кодировка Unicode.
program s_nechet ;
var
stran,strok,v: integer;
ch:real;
begin
stran:=64; // на каждой странице 64 строки
strok:=32; // в каждой строке 64 символа, 1 символ= 1 байт
v:=512*1024;//превращаем в байты
ch:=v/(stran*strok); //находим колич. страниц
write('количество страниц=',ch);
end.
Задание 8
Разработать программу подсчета количества единиц, используемых при записи целых
положительных чисел в двоичной и восьмеричной системах счисления. В программе
используются числа, которые не больше числа 65 в десятичной системе счисления.
program p8;
//фунция перевода из 10сс в 2сс
function decbin(x:integer):string;
var s:string;
begin
s:='';
while x>0 do
begin
s:=chr(ord('0')+x mod 2)+s;
x:=x div 2; end;
decbin:=s;
end;
//фунция перевода из 10сс в 8сс
function decoct(x:integer):string;
var s:string;
begin
s:='';
while x>0 do
begin
s:=chr(ord('0')+x mod 8)+s;
x:=x div 8; end;
decoct:=s;
end;
var a,i,k2,k8: integer;
begin
writeln('Введите число в 10сс:');
readln(a);
writeln('Число в 2сс:',decbin(a));
writeln('Число в 8сс:',decoct(a));
k2:=0; k8:=0;
//в строке находим количество единиц
for i:=1 to length(decbin(a)) do if decbin(a)[i] ='1' then inc(k2);
writeln('Количество единиц в двоичной записи числа ',k2);
for i:=1 to length(decoct(a)) do if decoct(a)[i] ='1' then inc(k8);
writeln('Количество единиц в восьмеричной записи числа ',k8);
end.
Download