Ответы 3.3 Программирование линейных алгоритмов, ГДЗ учебник информатика 8 класс Босова




Задание 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 Программирование линейных алгоритмов. Числовые типы данных, символьный и строковый типы данных, логический тип данных.