PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018 Внимание! Если программа не работает, обновите версию!
begin var a:=ArrRandom(ReadInteger('n='),-50,50); a.Println; var k:=ReadInteger('Введите число-дубликат для удаления:'); var id:=a.FindIndex(t->t=k); if id>-1 then a:=a[:id+1]+a[id+1:].Where(t->t<>k).ToArray; a.Println end.
Четырехзначные восьмеричные числа - это числа в диапазоне от 1111₈ до 7777₈ Мы можем поступить двояким 1) перевести оба числа в десятичную систему счисления и таким образом определить диапазон чисел, которые (предположительно) надо суммировать. 2) перевести оба числа в шестнадцатиричную систему и записать диапазон шестнадцатиричными числами (в Паскале их можно указывать). Мне больше по душе второй вариант, потому что он не требует расчетов на калькуляторе или "в столбик". 1111₈ = 1 001 001 001₂ = 10 0100 1001₂ = 249₁₆ 7777₈ = 111 111 111 111₂ = 1111 1111 1111 = FFF₁₆ Осталось решить вопрос о том, как отобрать числа, у которых в восьмеричном коде последняя не пятерка. Вспомним перевод числа из десятичной системы в восьмеричную: мы делим на 8, выписывая остатки, в потом записываем из в обратном порядке. Следовательно, последней цифрой числа будет остаток от самого первого деления. И это дает нам правило отбора чисел: остаток от деления числа на 8 не должен равняться 5.
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018 Внимание! Если программа не работает, обновите версию!
begin ReadSeqIntegerWhile(t->t<>0) .Where(t->t.Between($249,$FFF) and (t mod 8 <>5)).Sum.Println end.
Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-50,50); a.Println;
var k:=ReadInteger('Введите число-дубликат для удаления:');
var id:=a.FindIndex(t->t=k);
if id>-1 then a:=a[:id+1]+a[id+1:].Where(t->t<>k).ToArray;
a.Println
end.
Пример
n= 20
-23 -34 14 35 -16 -4 42 -13 -3 -49 24 49 26 -12 -16 16 47 33 -1 -16
Введите число-дубликат для удаления: -16
-23 -34 14 35 -16 -4 42 -13 -3 -49 24 49 26 -12 16 47 33 -1
Четырехзначные восьмеричные числа - это числа в диапазоне от 1111₈ до 7777₈
Мы можем поступить двояким
1) перевести оба числа в десятичную систему счисления и таким образом определить диапазон чисел, которые (предположительно) надо суммировать.
2) перевести оба числа в шестнадцатиричную систему и записать диапазон шестнадцатиричными числами (в Паскале их можно указывать).
Мне больше по душе второй вариант, потому что он не требует расчетов на калькуляторе или "в столбик".
1111₈ = 1 001 001 001₂ = 10 0100 1001₂ = 249₁₆
7777₈ = 111 111 111 111₂ = 1111 1111 1111 = FFF₁₆
Осталось решить вопрос о том, как отобрать числа, у которых в восьмеричном коде последняя не пятерка. Вспомним перевод числа из десятичной системы в восьмеричную: мы делим на 8, выписывая остатки, в потом записываем из в обратном порядке. Следовательно, последней цифрой числа будет остаток от самого первого деления. И это дает нам правило отбора чисел: остаток от деления числа на 8 не должен равняться 5.
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018
Внимание! Если программа не работает, обновите версию!
begin
ReadSeqIntegerWhile(t->t<>0)
.Where(t->t.Between($249,$FFF) and (t mod 8 <>5)).Sum.Println
end.