В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
Кокс383939484
Кокс383939484
01.01.2023 22:17 •  Информатика

1) 1561 +7361 в 8-ичной системе счисления 2) 1101011 + 11011 в 2-ичной системе счисления
3) 101001 * 101 в 2-ичной системе счисления
4) 95FA * D23 в 16-ичной системе счисления
5) 1654 * 453 в 8-ичной системе счисления​

Показать ответ
Ответ:
lizaveta19961
lizaveta19961
26.01.2020 16:53
//Pascal ABC.NET v3.0 сборка 1111

begin
var d:=ReadlnString('Вас приветствует программа, которая может делить '+'два числа с остатком. Напишите свое имя');
Writeln('Здравствуйте, ',d,'!');

repeat
Writeln('Как нужно написать ответ?',#13#10,'1 вариант. 5: 3 = 1(ост.2)',#13#10,'2 вариант. 5 = 3*1 + 2',#13#10,'0 - завершить работу');
  var c:char;
   Repeat
    c:=ReadlnChar('Введите 0, 1 или 2:');
     case c of
      '0': exit;
      '1','2':break;
      end;
    until False;
  var a,b:BigInteger;
 if not BigInteger.TryParse(ReadlnString('Введите целочисленное делимое:'),a) then
 begin
  Writeln('Вы ввели неверное значение. Работа завершена');
  Exit
 end;
 if not BigInteger.TryParse(ReadlnString('Введите целочисленный делитель:'),b) then
 begin
  Writeln('Вы ввели неверное значение. Работа завершена');
  Exit
 end;
 if integer(b)=0 then
{приведение к типу Integer. Менее абстрактно, чем BigInteger}
  begin
   writeln('Вы ввели неверное значение.');
   exit
  end;
if c='1' then WritelnFormat('{0}:{1}={2}(ост.{3})',a,b,a div b,a mod b)
else
WritelnFormat('{0}={1}*{2}+{3}',a,b,a div b,a mod b);
var f:char;
Repeat
f:=ReadlnChar('Если вы хотите завершить работу, введите "0", если продолжить - любую букву.');
case f of
'0': exit;
else break;
end;
until False;
until False
 end.
0,0(0 оценок)
Ответ:
АУЕшник2281337
АУЕшник2281337
14.10.2020 04:14

Получается, зависит от последних цифр возраста:

1) "лет" -если последняя цифра 0,5,6,7,8,9 или две цифры 05÷20

а остальные (не попавшие в первое условие) именуются так:

2) "год" -если последняя цифра 1

3) "года" -если последняя цифра 2,3,4

Вот несколько вариантов программы (проверял в PascalABC.NET 3.4.2.1837, и часть программ будет работать только там):

1) Вариант с самыми простыми и известными операторами (для начинающих и для совместимости с другими версиями Pascal). Поэтому: используются только if-then-else, составной оператор (блок) begin-end, операции сравнения, обычные ввод и вывод, и переменные типов integer и string; не используются логические операции. Правда, есть операции нахождения остатка от деления на 10 и на 100 (n mod 10  и  n mod 100). Если вы их не проходили, то остаток можно вычислять, используя функции, возвращающие целую часть числа:  n-Int(n/10)*10  и  n-Int(n/100)*100  или  n-Trunc(n/10)*10  и  n-Trunc(n/100)*100.  Всё это нужно для получения последней цифры числа (или двух последних цифр).

var

n: integer;

s: string;

begin

write('Введите возраст: ');

read(n);

if n < 0 then write('Недопустимый возраст.') else

if n > 120 then write('Недопустимый возраст.') else

begin

s := ' лет.';

if n mod 10 >= 2 then

if n mod 10 <= 4 then s := ' года.';

if n mod 10 = 1 then s := ' год.';

if n mod 100 >= 5 then

if n mod 100 <= 20 then s := ' лет.';

write('Вам ', n, s);

end;

end.

2) Вариант с использованием оператора выбора (case) и диапазонов значений. Я начинал с этого варианта, и тут я записал все диапазоны значений возраста до 120 лет (я не вспомнил общих правил написания лет-год-года в зависимости от количества лет, поэтому перебрал все возраста, проверяя написание на слух :)

Здесь и далее использована переменная типа byte (целые значения от 0 до 255, размер 1 байт). Если использовать тип integer, то по идее надо проверять на отрицательные значения, которые возможны при вводе для этого типа. Хотя, можно конечно считать, что вводить будут всегда правильно, и делать проще - не проверять это вообще (тогда пойдёт и integer). Если так упрощать, то можно не проверять и на возраст больше 120 лет.

Кроме byte, с той же целью можно использовать word (2 байта, 0..65535) или longword (4 байта, 0..4294967295), если вы их проходили. Правда, они слегка избыточны для этой задачи.

var n: byte;

begin

write('Введите возраст: ');

read(n);

case n of 0,5..20,25..30,35..40,45..50,55..60,65..70,75..80,85..90,95..100,105..120: write('Вам ',n,' лет.');

1,21,31,41,51,61,71,81,91,101: write('Вам ',n,' год.');

2..4,22..24,32..34,42..44,52..54,62..64,72..74,82..84,92..94,102..104: write('Вам ',n,' года.');

else write('Недопустимый возраст.');

end;

end.

2а) В той же программе часть условий можно не писать (тут в проверке используется максимальное значение для типа byte, поэтому если менять тип, то нужно менять и это значение):

var n: byte;

begin

write('Введите возраст: ');

read(n);

case n of

121..255: write('Недопустимый возраст.');

1,21,31,41,51,61,71,81,91,101: write('Вам ',n,' год.');

2..4,22..24,32..34,42..44,52..54,62..64,72..74,82..84,92..94,102..104: write('Вам ',n,' года.');

else write('Вам ',n,' лет.');

end;

end.

3) Тут остаток от деления на 10 проверяется на принадлежность  к множеству указанных остатков. Ещё, есть логическая операция (or):

var n: byte;

begin

write('Введите возраст: ');

read(n);

if n>120 then write('Недопустимый возраст.') else

if (n mod 10 in [0,5..9]) or (n mod 100 in [5..20]) then write('Вам ',n,' лет.') else

if n mod 10 = 1 then write('Вам ',n,' год.') else write('Вам ',n,' года.')

end.

4) И напоследок, вариант с условной операцией (условие ? выражение1 : выражение2), конвертацией из строки в byte (и прочими непотребствами :)  Лишние пробелы ужаты, поэтому всё не очень читаемо.

begin

var n:=byte.Parse(ReadString('Введите возраст:'));

write('Вам ',n>120?'многовато лет':n+' '+((n mod 10in[5..9,0])or(n mod 100in[5..20])?'лет':n mod 10=1?'год':'года'),'.')

end.

Отдельно, строка с выводом (более читаемо, без ужатия пробелов):

write('Вам ', n>120 ? 'многовато лет' : n + ' ' + ((n mod 10 in [5..9,0]) or (n mod 100 in [5..20]) ? 'лет' : n mod 10 = 1 ? 'год' : 'года'), '.')

Хотя, если перенести пробел и точку в сами сообщения, то строка даже чуть короче станет:

write('Вам ', n>120 ? 'многовато лет.' : n + ((n mod 10 in [5..9,0]) or (n mod 100 in [5..20]) ? ' лет.' : n mod 10 = 1 ? ' год.' : ' года.'))

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота