IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
Closed Topic Открыть новую тему 
> Разобраться
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


вОт имеется код на паскале. делает он следующее: переводит из десятичной системы счисления в 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;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Кстати, не самая понятная реализация... То что лежит вот тут:
Общие вопросы по математике.

гораздо проще, согласись...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 11.05.2007 19:22) *

Кстати, не самая понятная реализация... То что лежит вот тут:
Общие вопросы по математике.

гораздо проще, согласись...


вот вот. как-то запутано все написано...
но всё же мне надо именно это прокоментировать .. help!

Сообщение отредактировано: BND -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






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;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 11.05.2007 19:58) *

skipped


и вновь благодарен за оказанную помощь =)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 11.05.2007 19:58) *


...
{ Это таким оригинальным способом переворачивается строка - вот почему, оказывается, число приписывали сзади }
for i:=1 to length(s) do
chislo:=chislo+s[length(s)-i+1];
....




еще вопросик: что значит "ПЕРЕВОРАЧИВАЕТСЯ СТРОКА" ? этого я что-то вапще понять не могу что-то.. что тут происходит )

Сообщение отредактировано: BND -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Было: s = '123456' - стало: chislo = '654321'...

Как видишь, chislo содержит перевернутую строку s.

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


ааа. чето я туплю...
вот еще назрел вопросик, тему новую думаю не буду создавать.
касательно языка СИ. volvo ты делал, если помнишь.
можно озвучить что тут делается. конкретно непонятно что такое "...==null". еще параметр "wt"
и почему s(20) ?
  char s[20], s_dec[20];
FILE *f_out;
if ((f_out = fopen("res.txt", "wt")) == NULL) {
return 1;
}

вот с си вапще темный лес..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


круууто!
у меня, например, в десятке программ есть такой отрывок. делают они абсолютно разное. хоть бы ссылку дал, где такое выложено.

fopen - это функция, открывающая файл и возвращающая информацию о том, удачно ли он был открыт.
вот и сравниваем этот результат с NULL'ом

Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Дополняю - открывает текстовый файл (это буква "t") для записи ("w")
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


 ! 
Беспрецидентный флуд в теоретическом разделе - да еще и в теме с нелегальным названием!
Закрыто.
BND, получаешь предупреждение.




--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 18.04.2024 18:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name