var
i: integer;
s: string;
g: boolean;
x: integer;
begin
readln(s);
i:=length(s);
g:=false;
x:=0;
while ( i >=1) and (not g) do
begin
g:=not (s[i] in ['0'..'9'b]); //что означает i в квадратных скобках перед s, что значит in и это что значит ['0'..'9']?
if not g then x:=x*10+ord(s[i]) -48;//зачем тут ord и опять же i перед s
i:=i-1;
end ;
writeln(x);
end.
Другие языки программирования и технологии
Помогите понять некоторые детали в программе на паскале
1. s[i] - символ строки s с индексом i. Строка - это символьный массив с индексами от 1 до length(s).
2. ['0'..'9'] - множество, содержащее символы от '0' до '9' включительно (т. е. изображения всех десятичных цифр).
3. in - операция проверки того, что значение, находящееся слева от in присутствует в множестве, находящемся справа от in. s[i] in ['0'..'9'] проверяет, что символ строки s с индексом i является изображением цифры.
4. ord преобразует значение любого перечислимого типа в его порядковый номер внутри своего типа. Так символ преобразуется в целочисленный код символа в кодировке ASCII. А 48 - это код символа '0' в данной кодировке. Можно было бы записать x := x * 10 + ord(s[i]) - ord('0') - стало бы понятнее. Конструкция ord(s[i]) - ord('0') преобразует ИЗОБРАЖЕНИЕ цифры в символе s[i] в ЦЕЛОЕ ЧИСЛО, равное этой цифре.
А, например, ord(false) = 0 и ord(true) = 1.
P.S. Где ты этот говнокод откопал?
2. ['0'..'9'] - множество, содержащее символы от '0' до '9' включительно (т. е. изображения всех десятичных цифр).
3. in - операция проверки того, что значение, находящееся слева от in присутствует в множестве, находящемся справа от in. s[i] in ['0'..'9'] проверяет, что символ строки s с индексом i является изображением цифры.
4. ord преобразует значение любого перечислимого типа в его порядковый номер внутри своего типа. Так символ преобразуется в целочисленный код символа в кодировке ASCII. А 48 - это код символа '0' в данной кодировке. Можно было бы записать x := x * 10 + ord(s[i]) - ord('0') - стало бы понятнее. Конструкция ord(s[i]) - ord('0') преобразует ИЗОБРАЖЕНИЕ цифры в символе s[i] в ЦЕЛОЕ ЧИСЛО, равное этой цифре.
А, например, ord(false) = 0 и ord(true) = 1.
P.S. Где ты этот говнокод откопал?
Илья *********
но ведь - 48 стоит после орда
Илья *********
почему тогда он под аски подстраивается?
Всё коряво… Но работает!


тип string в паскале не только строка но и символьный массив.
Оператор in проверяет вхождение символов множества. Проще говоря не цифра ли символ №i в переменной s
Оператор in проверяет вхождение символов множества. Проще говоря не цифра ли символ №i в переменной s
Илья *********
сколько бы я не ввёл символов он выводит 0
s - строка, т. е. массив символов. s[i] - означает символ с номером i в строке s. Например, строка s равна 'sometext', тогда если i = 3, то s[i] = 'm'.
['0'..'9'] - это множество символов '0', '1', '2' и так далее до '9'.
in - проверяет, есть ли s[i] в множестве ['0'..'9'], короче говоря, это проверка - есть ли символ s[i] в множестве ['0'..'9']. Таким образом проверяется, является ли символ s[i] - цифрой.
ord - получает целочисленный код символа (символы текста кодируются целыми числами, например символу '*' соответсвует код 10. Тогда ord('*') будет = 10).
['0'..'9'] - это множество символов '0', '1', '2' и так далее до '9'.
in - проверяет, есть ли s[i] в множестве ['0'..'9'], короче говоря, это проверка - есть ли символ s[i] в множестве ['0'..'9']. Таким образом проверяется, является ли символ s[i] - цифрой.
ord - получает целочисленный код символа (символы текста кодируются целыми числами, например символу '*' соответсвует код 10. Тогда ord('*') будет = 10).
Похожие вопросы
- паскаль. помогите понять одну формулу в программе. внутри...
- Помогите исправить ошибку в коде программы на паскале.
- Пожалуйста, срочно помогите написать одну з трёх программ на паскале.
- Помогите с программой на Паскаль! Деталь автомобиля описывается инвентарным номером (положительное целое число), весом..
- Программа на паскале! Помогите(бесплатно)
- Нужно написать программы в Паскале! Массивы! Срочно! Помогите!
- Помогите составить программу на паскале!
- помогите с программами в паскале
- Помогите пожалуйста создать программу на Паскале. Заранее всем благодарен
- Помогите решить программу в паскале)