Ответы по параграфу 3.3 Программирование линейных алгоритмов
Задание 2. Напишите программу вычисляющую «y» для заданного «x» по формуле
y = x3 + 2.5x2 – x + 1 = ((x+2.5)x-1)x + 1
(Нельзя возводить в степень, в присваивании только одна арифметическая операция, не больше 5-ти операторов присваивания.)
program z_2; var x, y: real; BEGIN write ('x>>'); read (x); y:= x + 2.5; y:= y*x; y:= y-1; y:= y*x; y:= y+1; writeln ('y = ', y) END.
Задание 3. Напишите программу, вычисляющую длину отрезка AB по заданным координатам точек A и B.
Формула нахождения длины отрезка по заданным координатам:program z_3; var xA, yA, xB, yB, d: real; BEGIN write ('xA='); read (xA); write ('yA='); read (yA); write ('xB='); read (xB); write ('yB='); read (yB); d:= sqrt(sqr(xB-xA) + sqr(yB-yA)); writeln ('d=', d) END.
Задание 4. Известны длины сторон треугольника a, b, c. Напишите программу, вычисляющую площадь этого треугольника.
program z_4; var a, b, c, p, S: real; BEGIN writeln('Площадь треугольника по трём его сторонам'); writeln('Введите стороны треугольника:'); write('a>>'); read (a); write('b>>'); read (b); write('c>>'); read (c); //Проверяем, существует ли такой треугольник if ((a+b)>c) and ((a+c)>b) and ((b+c)>a) then begin //Вычислим полупериметр p := (a+b+c)/2; //Теперь вычислим площадь S:=sqrt(p*(p-a)*(p-b)*(p-c)); writeln ('S = ', S:3:2, ' см2'); end else writeln ('Треугольник со сторонами ', a,', ', b,', ', c,' не существует'); END.
Задание 5. Известны координаты A, B, C треугольника. Напишите программу, вычисляющую площадь этого треугольника.
Объединим программы из двух предыдущих заданий.program z_5; var xA, yA, xB, yB, xC, yC, a, b, c, p, S: real; BEGIN writeln('Площадь треугольника по трём его сторонам'); writeln('Введите координаты вершин:'); write ('xA='); read (xA); write ('yA='); read (yA); write ('xB='); read (xB); write ('yB='); read (yB); write ('xC='); read (xC); write ('yC='); read (yC); a:= sqrt(sqr(xB-xA) + sqr(yB-yA)); b:= sqrt(sqr(xC-xB) + sqr(yC-yB)); c:= sqrt(sqr(xC-xA) + sqr(yC-yA)); //Проверяем, существует ли такой треугольник if ((a+b)>c) and ((a+c)>b) and ((b+c)>a) then begin //Вычислим полупериметр p := (a+b+c)/2; //Теперь вычислим площадь S:=sqrt(p*(p-a)*(p-b)*(p-c)); writeln ('S = ', S:3:2, ' см2'); end else writeln ('Треугольник со сторонами ', a,', ', b,', ', c,' не существует'); END.
Задание 6. Если сумма налога исчисляется в рублях и копейках, то налоговая служба округляет ее до ближайшего рубля (до 50 копеек – с недостатком, свыше 50 копеек с избытком). Используйте компьютер, чтобы ввести точную сумму налога и вывести, сколько следует уплатить.
Функция "round(x)" округляет число до ближайшего целого.program z_6; var nalog: real; k: integer; BEGIN write ('Введите точную сумму налога: '); read (nalog); nalog:= round(nalog); write ('Следует уплатить "', nalog, '" рублей.'); END.
Задание 7. Исследуйте работу функции random, запустив многократно на выполнение программу в учебнике.
Как можно получить случайное число из интервала:а) (0, x);
random (x-1) + 1;
б) (0, x];
random (x) + 1;
в) (n, x +n);
random (x+n-1) + n+1;
Задание 8. Одна компания выпустила билеты трёх разрядов: для молодежи, для взрослых и для пенсионеров. Номера билетов каждого разряда лежат в пределах:
Для молодежи: от 1 до 100;
Для взрослых: от 101 до 200;
Для пенсионеров – от 201 до 250.
Выберите случайным образом лотерейный билет в каждом разряде.
program z_8; var a, b, c: integer; BEGIN a:= random (100)+1; b:= random (100)+101; c:= random (50)+201; writeln ('Для молодежи билет номер ', a); writeln ('Для взрослых билет номер ', b); writeln ('Для пенсионеров билет номер ', c); END.
Задание 9. Запишите программу, которая для произвольного натурального двузначного числа определяет:
а) сумму и произведение его цифр;
б) число, образованное перестановкой цифр исходного числа.
program z_9; var a, b, c, sum, pr: integer; BEGIN writeln ('Введите двузначное натуральное число:'); readln (a); b:= a div 10; c:= a mod 10; sum:= b+c; pr:= b*c; writeln ('а) Сумма: ', sum, '; Произведение: ', pr); writeln ('б) ', c*10+b) END.
Задание 10. Запишите программу, реализующую алгоритм работы кассира, выдающего покупателю сдачу (s) наименьшим возможным количеством банкнот по 1000 (k1000), 500 (k500), 100 (k100), 50 (k50) рублей.
program z_10; var s: integer; BEGIN writeln ('Введите сдачу:'); readln (s); writeln ('Следует сдать:'); writeln ('банкнот по 1000 руб. - ', s div 1000, ' шт.'); s:= s mod 1000; writeln ('банкнот по 500 руб. - ', s div 500, ' шт.'); s:= s mod 500; writeln ('банкнот по 100 руб. - ', s div 100, ' шт.'); s:= s mod 100; writeln ('банкнот по 50 руб. - ', s div 50, ' шт.'); s:= s mod 50; END.
Задание 11. Идет k-я секунда суток. Разработайте программу, которая по введённой k-ой секунде суток определяет, сколько целых часов h и целых минут m прошло с начала суток.
program z_11; var k: integer; BEGIN writeln ('Введите секунды суток:'); readln (k); write ('Прошло ', k div 3600, ' часа(-ов) '); k:= k mod 3600; write (k div 60, ' минут'); END.
Задание 12. Запишите программу, которая вычисляет сумму кодов букв в слове «БАЙТ».
program z_12; BEGIN writeln ('Слово "БАЙТ"'); writeln ('Сумма кодов букв: ', ord('Б')+ord('А')+ord('Й')+ord('Т')) END.
Задание 13. Запишите на языке Паскаль программу, которая формирует и выводит на экран строку символов, коды которых равны 66, 69, 71, 73, 78.
program z_13; BEGIN writeln ('Код: 66, 69, 71, 73, 78'); writeln ('Сформированное слово: ', chr(66)+chr(69)+chr(71)+chr(73)+chr(78)) END.
Задание 14. Разработайте программу, которая запрашивает три строковые величины – взаимосвязанные прилагательное, существительное и глагол, а затем выводит все варианты фраз с использованием введенных слов.
program z_14; var a, b, c: string; BEGIN writeln('Введите прилагательное, существительное и глагол:'); write ('Прилагательное: '); readln (a); write ('Существительное: '); readln (b); write ('Глагол: '); readln (c); writeln (' ------- '); writeln (a, ' ', b, ' ', c); writeln (a, ' ', c, ' ', b); writeln (b, ' ', a, ' ', c); writeln (b, ' ', c, ' ', a); writeln (c, ' ', a, ' ', b); writeln (c, ' ', b, ' ', a); END.
Задание 15. Даны значения целочисленных переменных: a=10, b=20. Чему будет равно значение логической переменной rez после выполнения операции присваивания?
а) rez:= (a=10) or (b>10) Trueб) rez:= (a>5) and (b>5) and (a<20) and (b<30) True
в) rez:= (not(a<15)) or (b>20) False
Задание 16. Составьте программу, вводящую true, если высказывание является истинным, и false в противном случае:
а) Сумма цифр трехзначного числа x является четным числом.program z_16a; var x: integer; //Исходные данные a, b, c, s: integer; //Промежуточные величины ans: boolean; //Результат BEGIN randomize; x:= random (900)+100; writeln ('Трёхзначное число x=', x); a:=x div 100; b:=x mod 100 div 10; c:=x mod 10; s:=a+b+c; writeln ('s=', s); ans:= s mod 2=0; writeln (ans) END.
б) Треугольник со сторонами a, b, c является разносторонним.
Проверку существования треугольника со сторонами a, b, c в этой программе мы не выполняем.
program z_16b; var a, b, c: real; //Исходные данные ans: boolean; //Результат BEGIN write ('a='); readln (a); write ('b='); readln (b); write ('c='); readln (c); ans:= (a<>b) and (a<>c) and (b<>c); writeln (ans) END.Решение заданий из учебника Информатика 8 класс Босова, параграф 3.3 Программирование линейных алгоритмов. Числовые типы данных, символьный и строковый типы данных, логический тип данных.