Задано число в шестнадцатеричной системе счисления f023a9, 12с4. как изменится число, если в его представлении запятую перенести на два знака влево? на три знака вправо?
В PascalABC.NET эта задача решается легко и быстро. В других версиях будет монстрик.
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017 // Внимание! Если программа не работает, обновите версию!
procedure MakeFile(path:string); // не относится к заданию, создает файл Text со 100 числами begin WriteLines(path,SeqRandom(100,-99,99).Select(x->x.ToString)) end;
begin MakeFile('MyFile1.txt'); // теперь у нас есть текстовый файл из 100 случайных чисел // собственно, решение var n:=ReadInteger('Укажите количество чисел:'); var a:=ReadLines('MyFile1.txt').Take(n).ToArray; Writeln('Исходная последовательность'); a.Println; Writeln('Результирующая последовательность'); a:=a.OrderBy(x->x.Last).ToArray; a.Println; WriteAllLines('MyFile2.txt',a); end.
Возьмем произвольное число 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.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Задано число в шестнадцатеричной системе счисления f023a9, 12с4. как изменится число, если в его представлении запятую перенести на два знака влево? на три знака вправо?
2) увеличится в 4096 раз