Добавить материал и получить бесплатное свидетельство о публикации в СМИ
Эл. №ФС77-60625 от 20.01.2015
Инфоурок / Информатика / Конспекты / Тексты - решения программ на Паскале по учебнику 10 класс

Тексты - решения программ на Паскале по учебнику 10 класс



Осталось всего 4 дня приёма заявок на
Международный конкурс "Мириады открытий"
(конкурс сразу по 24 предметам за один оргвзнос)


  • Информатика

Поделитесь материалом с коллегами:

Задачи №4-11 из учебника 10 класса.

4. Дано натуральное трехзначное число n, в записи которого нет нулей. По предложенной записи алгоритма (псевдокод и в виде блок-схемы), определите результаты работы алгоритма.

В приведенной записи DIV и MOD соответственно операции деления нацело и получения остатка от целочисленного деления. В фигурных скобках записаны пояснения (комментарии) к операторам.

hello_html_3cb88829.png


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. По предложенным записям алгоритма напишите программу вычисления значения функции

hello_html_m4689ea28.png

hello_html_6bb0cbf9.png

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. Слева решение оформлено с использованием цикла с предусловием, справа – с постусловием.

Выберите любой способ и переведите его на язык программирования. Протестируйте полученную программу.

Алгоритмы реализуют следующую идею. Из числа выбирается цифра младшего разряда, проверяется на нечетность и затем отбрасывается. Нечётные цифры учитываются. Этот процесс повторяется до тех пор, пока число не исчерпается, т.е. не станет равным нулю.

да

hello_html_25cbf2c1.png

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 натуральных чисел, кратных трём.

hello_html_m10c0d4e9.gif

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 включительно. Определите шанс угадать выигрышный лотерейный номер.

hello_html_39cd95fd.gifИдея решения. Надо вычислить количество перестановок для заданного числа объектов (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.




57 вебинаров для учителей на разные темы
ПЕРЕЙТИ к бесплатному просмотру
(заказ свидетельства о просмотре - только до 11 декабря)


Автор
Дата добавления 15.02.2016
Раздел Информатика
Подраздел Конспекты
Просмотров111
Номер материала ДВ-456839
Получить свидетельство о публикации

Включите уведомления прямо сейчас и мы сразу сообщим Вам о важных новостях. Не волнуйтесь, мы будем отправлять только самое главное.
Специальное предложение
Вверх