Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1414158286
Дмитрий С
2014-10-24 17:44
2015.09.10
Удаление SpeedChecker


2-1393935798
leshka
2014-03-04 16:23
2015.09.10
Создание TCheckBox


15-1417284465
Дмитрий С
2014-11-29 21:07
2015.09.10
Магнит+Электромагнит


2-1395098688
Вова
2014-03-18 03:24
2015.09.10
выпадающее меню в TCustomComponent


15-1412754599
ProstoTak
2014-10-08 11:49
2015.09.10
Программа CamFind - это нечто





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский