Форум: "Прочее";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];
ВнизJava => Delphi Найти похожие ветки
← →
Kerk © (2014-12-01 22:50) [0]
int b, shift = 0, result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lat += dlat;Shift := 0;
Result := 0;
repeat
B := Ord(Encoded[Index]) - 63;
Result := Result or ((B and $1f) shl Shift);
Shift := Shift + 5;
Inc(Index);
until b < $20;
if (Result and 1) <> 0 then
DLat := not (Result shr 1)
else
DLat := (Result shr 1);
Lat := Lat + DLat;
Сверху оригинал на Java, снизу мой перевод на Delphi. Результаты не сходятся. Что я упустил?
← →
kilkennycat © (2014-12-01 23:12) [1]Условие цикла?
← →
Ellisium © (2014-12-01 23:15) [2]А пофлудить можно?
Ты на Java пишешь в каком контексте?
← →
DVM © (2014-12-01 23:17) [3]Index чему равен в начале?
← →
Kerk © (2014-12-01 23:17) [4]
> kilkennycat © (01.12.14 23:12) [1]
> Условие цикла?
Вроде бы у while и until условия должны быть наоборот.
← →
DVM © (2014-12-01 23:17) [5]
> Ellisium © (01.12.14 23:15) [2]
> А пофлудить можно?
>
> Ты на Java пишешь в каком контексте?
это он портирует что-то связанное с https://developers.google.com/maps/documentation/directions/?csw=1
← →
junglecat © (2014-12-01 23:20) [6]> Что я упустил?
содержимое Encoded совпадает?
← →
jack128 © (2014-12-01 23:22) [7]Что мешает использовать дебагер ?
← →
kilkennycat © (2014-12-01 23:23) [8]не наоборот
← →
DVM © (2014-12-01 23:24) [9]
> Kerk ©
если encoded - это строка (а в оригинале она строка и начальное значение Index =0), то очевидно что-то не то получается, если конечно у строк индексация как обычно с 1, а не с 0.
← →
DVM © (2014-12-01 23:28) [10]кстати, да, do...while в Java это тоже самое, что repeat...until в паскале, а в Java есть еще просто while цикл.
← →
kilkennycat © (2014-12-01 23:29) [11]Или все-таки нет? Епрст, простейших вещей не помним :)
← →
junglecat © (2014-12-01 23:35) [12]> do...while в Java это тоже самое, что repeat...until в паскале
while - пока, until - пока не
в жабе должно быть как в си
← →
Kerk © (2014-12-01 23:36) [13]
> junglecat © (01.12.14 23:20) [6]
>
> > Что я упустил?
>
> содержимое Encoded совпадает?
Конечно :)
> DVM © (01.12.14 23:24) [9]
>
> > Kerk ©
>
> если encoded - это строка (а в оригинале она строка и начальное
> значение Index =0), то очевидно что-то не то получается,
> если конечно у строк индексация как обычно с 1, а не с 0.
Хорошая мысль, но я перепроверил, с индексами все в порядке. Изначально Index = Low(Encoded)
> кстати, да, do...while в Java это тоже самое, что repeat.
> ..until в паскале
По-моему, это не так.
Я сейчас подозреваю, что виноваты операции << и >>. В Delphi это логический сдвиг, а в Java - арифметический, если я все правильно понял.
← →
jack128 © (2014-12-01 23:37) [14]
> Епрст, простейших вещей не помним :)
тут нужно английский язык знать. Ну в крайнем случае - зайти на ideone и проверить.
← →
DVM © (2014-12-01 23:38) [15]
> Kerk © (01.12.14 23:36) [13]
> > кстати, да, do...while в Java это тоже самое, что repeat.
>
> > ..until в паскале
>
> По-моему, это не так.
в интернетах пишут что так:
http://metanit.com/java/tutorial/2.6.php
← →
Kerk © (2014-12-01 23:40) [16]
> DVM © (01.12.14 23:38) [15]
По твоей ссылке:
Цикл do сначала выполняет код цикла, а потом проверяет условие в инструкции while. И пока это условие истинно, цикл повторяется.
← →
DVM © (2014-12-01 23:43) [17]
> Kerk © (01.12.14 23:40) [16]
точно, все у тебя верно, цикл с постусловием, но оно проверяется не так как в паскале, а наоборот.
← →
KilkennyCat © (2014-12-01 23:56) [18]
> jack128 © (01.12.14 23:37) [14]
Английский? Да кому он нужен? (с) почти Симпсоны
:)
← →
KilkennyCat © (2014-12-02 00:00) [19]http://begin-english.ru/img/upload/gomer.jpg
← →
Dimka Maslov © (2014-12-02 00:19) [20]А разрядность одинаковая?
← →
Eraser © (2014-12-02 05:40) [21]попробуй отладчиком цикл прогнать с контролем переменных на делфи и на джаве, будет видно на каком этапе что-то пошло не так.
← →
DVM © (2014-12-02 13:36) [22]Так нашли ошибку то или нет?
← →
junglecat © (2014-12-02 13:40) [23]> виноваты операции << и >>. В Delphi это логический сдвиг,
> а в Java - арифметический
для беззнаковых типов - по барабану
← →
Kerk © (2014-12-02 14:07) [24]
> DVM © (02.12.14 13:36) [22]
>
> Так нашли ошибку то или нет?
Код правильный. Это был мой глюк. Входные данные все-таки немного отличались, т.е. баг был ДО этого кода. Извиняюсь, что потратил время форумчан на ерунду.
junglecat © (01.12.14 23:20) [6] получает главный приз :)
← →
RWolf © (2014-12-02 15:12) [25]
> > виноваты операции << и >>. В Delphi это логический сдвиг,
> > а в Java - арифметический
> для беззнаковых типов - по барабану
В том и соль, что в джаве нет беззнаковых типов. Зато есть отдельный логический сдвиг.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.046 c