1. Заголовок или название темы должно быть информативным ! 2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК ! 4.НЕ используйте форум для личного общения! 5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
вОт имеется код на паскале. делает он следующее: переводит из десятичной системы счисления в i-ичную. но так как я начинающий в паскале, то большинство строчек мне непонятны. прокоментируйте строчки пожалуйста, что какая делает. то есть что в них происходит. спасибо.
function DecToOther(x:longint;R:word):string; var ost:longint; s,st,chislo:string; i:integer; begin chislo:='';s:='';st:=''; repeat ost:=x mod R; x:=x div R; if ost>9 then st:=chr(ord('A')-10+ost) else str(ost,st); s:=s+st; until x=0; for i:=1 to length(s) do chislo:=chislo+s[length(s)-i+1]; DecToOther:=chislo; end;
function DecToOther(x:longint; R:word): string; var ost: longint; s, st, chislo: string; i: integer; begin { задаем начальные значения переменным - все "пусто" } chislo:='';s:='';st:='';
{ повторяем... } repeat ost:=x mod R; { запоминаем остаток от деления числа на основание с/с } x:=x div R; { а теперь, собственно, делим заданное число на основание с/с }
{ теперь надо "приписать" цифру или букву, соответствующую остатку, к результату... }
{ здесь есть 2 ветви - если остаток > 9 - то это буква от A и дальше, тогда надо к коду "A" прибавить остаток и отнять 10 (отнимать - потому что 10 в 16-ричной с/с соответствует A, и если остаток был равен 10, то он как раз и преобразуется в букву "А") } if ost > 9 then st:=chr(ord('A')-10+ost) else str(ost,st); { иначе (остаток меньше 10) - это просто число, которое переводится в строковое представление }
{ Вот, собственно, добавляем остаток (уже переведенный в строку) к текущему результату (почему-то в конец, хотя по алгоритму надо бы приписывать остаток спереди) } s:=s+st; until x=0; { ... а продолжается это все, пока не обработано все исходное число, т.е. пока в результате DIV не был получен 0... }
{ Это таким оригинальным способом переворачивается строка - вот почему, оказывается, число приписывали сзади } for i:=1 to length(s) do chislo:=chislo+s[length(s)-i+1];
{ и возвращаем результат функции } DecToOther:=chislo; end;
... { Это таким оригинальным способом переворачивается строка - вот почему, оказывается, число приписывали сзади } for i:=1 to length(s) do chislo:=chislo+s[length(s)-i+1]; ....
еще вопросик: что значит "ПЕРЕВОРАЧИВАЕТСЯ СТРОКА" ? этого я что-то вапще понять не могу что-то.. что тут происходит )
ааа. чето я туплю... вот еще назрел вопросик, тему новую думаю не буду создавать. касательно языка СИ. volvo ты делал, если помнишь. можно озвучить что тут делается. конкретно непонятно что такое "...==null". еще параметр "wt" и почему s(20) ?
круууто! у меня, например, в десятке программ есть такой отрывок. делают они абсолютно разное. хоть бы ссылку дал, где такое выложено.
fopen - это функция, открывающая файл и возвращающая информацию о том, удачно ли он был открыт. вот и сравниваем этот результат с NULL'ом
Сообщение отредактировано: мисс_граффити -
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!