Составить программу в кумире для . введите числа a, b, n. если оба числа больше n, то напечатайте слово "больше", если меньше n, то напечатайте "меньше", иначе напечатайте "n в промежутке a и b"
Программа в PascalABC.Net: const digits=['0','1','2','3','4','5','6','7','8','9']; var s:string; n,i,err:integer; isdigit:boolean; begin Write('Введите натуральное число (1-9999): '); Read(s); i:=1; isdigit:=True; n:=Length(s); repeat isdigit:=isdigit and (s[i] in digits); Inc(i) until (not isdigit) or (i>n); if isdigit then begin Val(s,n,err); Writeln('Введено корректное число ',n) end else Writeln('Число содержит нецифровой символ') end.
Отметим, что в PascalABC.Net в реальной жизни решение могло бы выглядеть так: var s:string; n,err:integer; begin Write('Введите натуральное число (1-9999): '); Read(s); Val(s,n,err); if err=0 then Writeln('Введено корректное число ',n) else Writeln('Число содержит нецифровой символ') end.
Текстуальное упорядочение, принятое в большинстве систем сравнения символьных строк, даст следующее: 10мб, 1мб, 500кб, 5мб
В самом деле, символ "1" стоит в кодовой таблице раньше, чем символ "5" и это дает две подпоследовательности: 1мб, 10мб и 500кб, 5мб. Теперь рассматриваем второй символ в каждой подпоследовательности. Числа в кодовой таблице идут перед буквами, поэтому в первом случае "0" следует перед "м" и получаем 10мб, 1 мб, а во втором "0" следует перед "к" и получаем 500кб, 5мб.
В то же время, в некоторых системах строки сравниваются сначала по длине, а затем, при равной длине, по содержимому, и в этом случае мы бы получили порядок 1мб, 5мб, 10мб, 500кб.
Какой ответ является в данном случае правильным, однозначно сказать нельзя.
const
digits=['0','1','2','3','4','5','6','7','8','9'];
var
s:string;
n,i,err:integer;
isdigit:boolean;
begin
Write('Введите натуральное число (1-9999): ');
Read(s);
i:=1;
isdigit:=True;
n:=Length(s);
repeat
isdigit:=isdigit and (s[i] in digits);
Inc(i)
until (not isdigit) or (i>n);
if isdigit then
begin Val(s,n,err); Writeln('Введено корректное число ',n) end
else Writeln('Число содержит нецифровой символ')
end.
Отметим, что в PascalABC.Net в реальной жизни решение могло бы выглядеть так:
var
s:string;
n,err:integer;
begin
Write('Введите натуральное число (1-9999): ');
Read(s);
Val(s,n,err);
if err=0 then Writeln('Введено корректное число ',n)
else Writeln('Число содержит нецифровой символ')
end.
В самом деле, символ "1" стоит в кодовой таблице раньше, чем символ "5" и это дает две подпоследовательности: 1мб, 10мб и 500кб, 5мб. Теперь рассматриваем второй символ в каждой подпоследовательности. Числа в кодовой таблице идут перед буквами, поэтому в первом случае "0" следует перед "м" и получаем 10мб, 1 мб, а во втором "0" следует перед "к" и получаем 500кб, 5мб.
В то же время, в некоторых системах строки сравниваются сначала по длине, а затем, при равной длине, по содержимому, и в этом случае мы бы получили порядок 1мб, 5мб, 10мб, 500кб.
Какой ответ является в данном случае правильным, однозначно сказать нельзя.