Главная страница
    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.053 c
1-1331451118
renok
2012-03-11 11:31
2015.09.10
Сериализация PageControl а


15-1412627403
Юрий
2014-10-07 00:30
2015.09.10
С днем рождения ! 7 октября 2014 вторник


2-1396857888
TDataModule
2014-04-07 12:04
2015.09.10
dfm и TDataModule


15-1419681062
Jeer
2014-12-27 14:51
2015.09.10
"Неожиданные встречи"


15-1411754150
Jeer
2014-09-26 21:55
2015.09.10
О детях, внуках и что мы им..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский