- Преподавателю
- Информатика
- Тексты - решения программ на Паскале по учебнику 10 класс
Тексты - решения программ на Паскале по учебнику 10 класс
Раздел | Информатика |
Класс | 10 класс |
Тип | Конспекты |
Автор | Баруцкова Ю.О. |
Дата | 12.01.2016 |
Формат | docx |
Изображения | Есть |
Задачи №4-11 из учебника 10 класса.
4. Дано натуральное трехзначное число n, в записи которого нет нулей. По предложенной записи алгоритма (псевдокод и в виде блок-схемы), определите результаты работы алгоритма.
В приведенной записи DIV и MOD соответственно операции деления нацело и получения остатка от целочисленного деления. В фигурных скобках записаны пояснения (комментарии) к операторам.
Read(n) {Ввод N}
A := n mod 10 {разряд единиц}
B := n div 100 {разряд сотен}
C := n div 10 mod 10 {десятки}
L := (n mod A=0) and (n mod B=0) and (n mod C=0)
Write ( L) {Вывод L}
Переведите алгоритм на язык программирования и получите работающую программу.
program ch4_4;
var
n,a,b,c: word;{беззнаковое целое}
l : boolean;
begin
write('Натуральное трехзначное число ==>');
readln(n);
a := n mod 10;
b := n div 100;
c := (n div 100) mod 10;
l := ( (n mod a) = 0) and ( (n mod b)=0) and ((n mod c)=0);
writeln(l);
end.
5. По предложенным записям алгоритма напишите программу вычисления значения функции
Read (x)
If (x-12)
Y:=-x2
else
if (x<0)
Y:=x4
else
Y:= x-2
Write (Y)
Протестируйте полученную программу, используя не менее трех тестовых наборов, чтобы можно было проверить все переходы.
program ch4_5;
var
x,y: double;{вещ с двойной точностью}
begin
write('Значение аргумента ==>');
readln(x);
if x <= -12 then
y := -x*x
else
if x <0 then
y := x*x*x*x
else
y := x-2;
writeln(y);
end.
6. Даны записи двух алгоритмов подсчета количества нечетных цифр в натуральном числе n. Слева решение оформлено с использованием цикла с предусловием, справа - с постусловием.
Выберите любой способ и переведите его на язык программирования. Протестируйте полученную программу.
Алгоритмы реализуют следующую идею. Из числа выбирается цифра младшего разряда, проверяется на нечетность и затем отбрасывается. Нечётные цифры учитываются. Этот процесс повторяется до тех пор, пока число не исчерпается, т.е. не станет равным нулю.
да
Read(n)
K := 0
While ( n <> 0)
if (n mod 10 mod 2 = 1)
K := K + 1
n := n div 10
Write (K)
Read ( n)
K = 0
Do
if (n mod 10 mod 2 = 1)
K = K + 1
n := n div 10
While (n <> 0 )
Write (K)
program ch4_6_1;
var
n: word;
k: byte;{беззнаковое короткое целое}
begin
write('Число N ==>');
readln(n);
k := 0;
while n <> 0 do
begin
if (n mod 10) mod 2 = 1 then
k := k+1;
n := n div 10;
end;
writeln(k);
end.
program ch4_6_2;
var
n: word;
k: byte;
begin
write('Число N ==>');
readln(n);
k := 0;
repeat
if (n mod 10) mod 2 = 1 then
k := k+1;
n := n div 10;
until n =0;
writeln(k);
end.
7. Используя предлагаемые записи алгоритма, напишите программу нахождения произведения первых k натуральных чисел, кратных трём.
Read(k)
P = 1 {здесь накапливаем произведение}
For I := 1 to k/3
P = P * I * 3
Write(P)
program ch4_7;
var
k,i: word;
p: longword;
begin
write('Число K ==>');
readln(k);
p := 1;
for i:=1 to k do
p := p*i*3;
writeln(p);
end.
8. Напишите программу решения следующей задачи.
Лотерейный номер состоит из трех чисел, каждое из которых может быть от 0 до 99 включительно. Определите шанс угадать выигрышный лотерейный номер.
Идея решения. Надо вычислить количество перестановок для заданного числа объектов (3), которые выбираются из общего числа объектов (100). Перестановка - это любое множество объектов, в котором внутренний порядок имеет значение. Формула определения числа перестановок имеет следующий вид:
Следовательно, надо написать функцию, вычисляющую факториал некоторого числа M (M!=1*2*3*4*…*M) и вычислить количество перестановок.
program ch4_8;
function a_n_k( n,k : word):longword;
var
i,p : longword;
begin
p := 1;
for i := n downto n-k+1 do
p := p *i;
a_n_k := p;
end;
begin
writeln ('Количество сочетаний из 100 по 3: ', a_n_k(100,3));
end.
9. Напишите программу заполнения массива X(N) положительными и отрицательными элементами. Из него требуется сформировать новый массив только из положительных элементов. Найти из них наибольший элемент. Распечатать новый массив и наибольший элемент.
program ch4_9;
var
x,y : array[0..100] of integer;
i,count : word;
max : integer;
begin
for i:=0 to 100 do
x[i] := random(200)-100;
count := 0;
max := -1;
for i:=0 to 100 do
if x[i] > 0 then
begin
y[count] := x[i];
if y[count] > max then
max := y[count];
inc(count);
end;
writeln ('Результат:');
for i:=0 to count-1 do
write(y[i],' ');
writeln;
writeln ('Максимальный элемент:', max);
end.
10. Напишите программу, в которой предлагается список учащихся разных классов, посещающих футбольную секцию. Требуется упорядочить список по возрастанию классов. Распечатать список фамилий и классов.
program ch4_10;
type
schooler = record
fio : string;
age : word;
end;
var
schoolers : array[1..100] of schooler;
i,lim : word;
swap : boolean;
buf : schooler;
begin
for i:=1 to 10 do
begin
writeln('Ученик №',i);
write('ФИО ==>');
readln(schoolers[i].fio);
write('Класс ==>');
readln(schoolers[i].age);
end;
lim := 9;
repeat
swap := false;
for i:=1 to lim do
if schoolers[i].age > schoolers[i+1].age then
begin
swap := true;
buf := schoolers[i];
schoolers[i] := schoolers[i+1];
schoolers[i+1] := buf;
end;
lim := lim-1;
until not swap;
writeln ('По возрастанию классов:');
for i:=0 to 10 do
write(schoolers[i].fio,', ',schoolers[i].age,' класс.');
end.
11. Напишите программу нахождения минимального элемента первой строки массива К(n, n), заполненного случайными числами.
program ch4_11;
const
N = 100;
var
k: array[1..N,1..N] of integer;
i,j,min: byte;
begin
for i:=1 to N do
for j:=1 to N do
k[i,j] := random(10000)-10000;
min := 1;
for i:=2 to N do
if k[1,i] < k[1,min] then
min := i;
writeln ('Минимальный элемент первой строки: K[1,',min,']=',k[1,min]);
end.