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

Дан массив, содержащий 2017 положительных целых чисел, не превышающих 10000. необходимо найти и вывести количество таких элементов этого массива, шестнадцатеричная запись которых содержит ровно два знака, и при этом первая цифра больше второй. например, для массива из 4 элементов, содержащего числа 160, 148, 63, 528, ответ будет равен 2. в шестнадцатеричной системе эти числа записываются как a0, 94, 3f, 210; первые два числа подходят, в третьем – первая цифра не больше второй, в четвёртом – больше двух знаков. на языке паскаль объясните , !

Показать ответ
Ответ:
Локи30
Локи30
09.09.2020 11:57
Возьмем произвольное число n. Оно будет иметь ровно два знака в шестнадцатеричной записи тогда и только тогда, когда 15 < n < 256. Таким образом, задача сводится к нахождению количества элементов массива находящихся в промежутке (15; 256). 
Первую цифру числа в шестнадцатеричной записи можно найти как N div 16, а вторую - N mod 16
Программа на языке Pascal:

const
  N = 2017; // Количество элементов в массиве

var
  a: array[1..N] of integer;
  i, c: integer;

begin
  // Генерация массива (можно изменить на ввод с клавиатуры)
  for i := 1 to N do
    a[i] := Random(10000) + 1;
  // Подсчет количества элементов массива, удовлетворяющим 
неравенству
  c := 0;
  for i := 1 to N do
    if (a[i] > 15) and (a[i] < 256) and (a[i] div 16 > a[i] mod 16) then
      c += 1;
  write(c);
end.
0,0(0 оценок)
Ответ:
yesenia2007
yesenia2007
09.09.2020 11:57
Var i,k,n: integer;
    a: array[1..2017] of integer;
begin
//  n:=2017;
  write('n = ');  readln(n);  // для проверки
  for i:=1 to n do read(a[i]);
  k:=0;
  for i:=1 to n do
  if (16<=a[i]) and (a[i]<=254) then
  if (a[i] div 16) > (a[i] mod 16) then k:=k+1;
  writeln(k);
end.

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