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

Ответы 4

  • Показали, насколько не ориентируетесь в предмете.
    • Автор:

      shelby98
    • 4 года назад
    • 0
  • Как обычно, моя невнимательность, сейчас поправлю
  • 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 = 4160 148 63 5282
    • Автор:

      eddy
    • 4 года назад
    • 0
  • Возьмем произвольное число 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.
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years