Program SandP; //Название программы var //Описание переменных x,y: real; // Стороны прямоугольника S: real; // Площадь прямоугольника P: real; // Периметр прямоугольника procedure RectSP(a,b: real; var S,P:real); //Процедура begin S := a * b; //Нахождение площади P := a + b; //Нахождение суммы end; begin //Начало основной части программы writeln('Введите стороны прямоугольника: '); //Диалог с пользователем readln(x,y); //Считывание сторон RectSP(x,y,S,P); //Вызов процедуры writeln('Площадь равна ',S); //Вывод площади writeln('Периметр равен ',P); //Вывод периметра end. //Конец программы
1. Чтобы найти количество чисел, кратных восьми, на заданном интервале [a;b], надо найти на этом интервале ближайшее к a число и потом прибавлять к нему по восемь, пока не пройдем весь интервал, считая, сколько чисел Но это глуповатый Он просто и бездумно программируется, но как считали раньше, когда компьютеров не было? Определим остаток от деления а на 8. Если он нулевой, то a - первое из найденных чисел. Остаток от деления 121 на 8 равен 1, т.е. нам не повезло. Тогда прибавим к значению а число 8 и вычтем найденный остаток.121+8-1=128. Это и есть наше первое число. Сужаем интервал [128;400]. Чтобы найти, сколько на нем чисел, кратных 8, надо разделить нацело 400-128 на 8 и прибавляем к результату единицу. Получаем 35 - это и есть ответ. Программу составим универсальную, которая будет находить на интервале [a;b] количество чисел, кратных m.
PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018 Внимание! Если программа не работает, обновите версию!
begin var (a,b):=ReadInteger2('Введите через пробел границы интервала:'); var m:=ReadInteger('Укажите число для поиска кратных ему:'); var r:=a mod m; if r>0 then a:=a+8-r; Writeln('Количество чисел равно ',(b-a) div m +1) end.
Пример Введите через пробел границы интервала: 121 400 Укажите число для поиска кратных ему: 8 Количество чисел равно 35
2. В этой задаче все совсем просто. Читаем очередное число p, находим остаток от деления p на восемь. Если он ненулевой, проверяем, чтобы остаток от деления p на 10 был равен двум. Если и это верно, добавляем p к накапливаемой сумме s. Так поступаем n раз.
begin var n:=ReadInteger('n='); var s:=0; var p:integer; for var i:=1 to n do begin Read(p); if p mod 8 <> 0 then if p mod 10 = 2 then s:=s+p end; Writeln('Сумма отобранных чисел равна ',s) end.
Пример n= 8 127 32 222 45 80 832 702 29 Сумма отобранных чисел равна 924
47₁₆
Объяснение:
2D₁₆ + 1A₁₆
Сложение "в столбик". Ведем его в десятичной системе и делаем корректировку на разницу оснований систем т.е. на 16-10=6, если результат превышает 15.
Нужно помнить (или пользоваться таблицей), в соответствии с которой:
А₁₆=10₁₀; B₁₆=11₁₀; C₁₆=12₁₀; D₁₆=13₁₀; E₁₆=14₁₀; F₁₆=15₁₀.
D₁₆+A₁₆ = 13 + 10 = 23. Корректировка: 23 - 6 = 17₁₆ Записываем 7 и +1 в следующий разряд.
2+1+1=4. Тут корректировка не нужна. Результат 47₁₆
2 D
+ 1 A
4 7