Форум программистов, компьютерный форум CyberForum.ru

Перевести код на c++ - C++

Восстановить пароль Регистрация
 
IPavel
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
04.07.2013, 07:23     Перевести код на c++ #1
Всем привет!
Столкнулся с такой проблемой...
есть код на freebasic нужно его перевести на с++...
Ну вот что-то никак не выходит...
Я не знаком с бейсиком, ну да ладно бы это...
но там какие-то ф-ции стандартные из него использованы и вот в них как раз и загвоздка...
не могу понять что они делают...
код ...
PureBasic
1
2
3
4
5
6
7
8
9
Function CalcDist(x1 As Integer, x2 As Integer, y1 As Integer, y2 As Integer) As Integer
    Dim As Integer xdiff, ydiff
    Dim dist As Integer
   
    xdiff = Abs(x1 - x2)
    ydiff = Abs(y1 - y2)
    dist =  (xdiff + ydiff + imax(xdiff, ydiff)) Shr 1
    Return dist
End Function
Как я понял из коментария эта ф-ция должна возвращать расстояние между двумя точками...
Ну что-то с этими стандартными ф-циями совсем не похоже...
'Returns fast distance calc between two points.
...
Буду весьма признателен если кто расталкует что к чему и как ...
На с++ конечно...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 07:23     Перевести код на c++
Посмотрите здесь:

Перевести код с С C++
Visual c++ код перевести в gcc linux код C++
C++ перевести код
C++ Перевести код на С++
Перевести код программы Паскаля в код С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
04.07.2013, 07:56     Перевести код на c++ #2
наплюй и напиши свою ( да и не похожа она на стандартную)
чтобы узнать расстояние между двумя точками, нужно вспомнить теорему Пифагора
квадрат гипотенузы равен сумме квадратов катетов

вот так она будет выглядеть для целочисленных значений

C++
1
2
3
4
5
6
#include <math.h>
............................
int CalcDist(int x1,int y1,int x2, int y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)(y1-y2));
}
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
04.07.2013, 08:26     Перевести код на c++ #3
Цитата Сообщение от ValeryS Посмотреть сообщение
наплюй и напиши свою ( да и не похожа она на стандартную)
согласен, тут какаята другая функция
Цитата Сообщение от ValeryS Посмотреть сообщение
вот так она будет выглядеть для целочисленных значений
чтобы найди расстояние, нужно из соответсвующих координат второй точки вычисть первую (это я из книги по геометрии посмотрел, и точно вам говорю, советую ещё в поисковик вбить тот же ответ будет)
и в библиотеки math.h(cmath) есть функция чтобы возвести в степень число
вообщем это функция, по нахождению растоянию между двумя точками должна выглядить так
C++
1
2
3
4
5
#include <cmath>
// ...........................
int CalcDist( int x1, int y1, int x2, int y2 ) {
    return sqrt( pow(x2-x1, 2)+pow(y2-y1, 2) );
}
IPavel
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
04.07.2013, 08:37  [ТС]     Перевести код на c++ #4
Цитата Сообщение от ValeryS Посмотреть сообщение
наплюй и напиши свою ( да и не похожа она на стандартную)
чтобы узнать расстояние между двумя точками, нужно вспомнить теорему Пифагора
квадрат гипотенузы равен сумме квадратов катетов

вот так она будет выглядеть для целочисленных значений

C++
1
2
3
4
5
6
#include <math.h>
............................
int CalcDist(int x1,int y1,int x2, int y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)(y1-y2));
}
Спасибо!
Но всётаки хотелось бы узнать как это чудо работает...
Просто у меня сложноватая логика в проекте...
Ну верней я взялся писать игру простейшую для набора так сказать опыта и практики...
И под руку тогда попался пример написания игры на бейсики плюс там был что было расписано с чего начать и т.п. ну и само собой пример написания игры...
Ну вот я разобрался с первыми 10 частями только вот здесь застрял...
Результат этой ф-ции связан с расчётом прямой видимости по Бразенхему,
поэтому и хотелось бы узнать точно что подаёт эта ф-ция...
Ну а для этого нужно знать как она работает...
Разобрал кое-что, забыл написать...
Abs - это аналог abs() на c++ - возвращает абсолютное число.
Chr 1 - это сдвиг в право если я правильно понял...
Осталось только - imax()...
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
04.07.2013, 08:47     Перевести код на c++ #5
Цитата Сообщение от Нету имени Посмотреть сообщение
чтобы найди расстояние, нужно из соответсвующих координат второй точки вычисть первую (это я из книги по геометрии посмотрел, и точно вам говорю, советую ещё в поисковик вбить тот же ответ будет)
а это что
Цитата Сообщение от ValeryS Посмотреть сообщение
(x1-x2)
ты хоть нарисуй на бумажке две точки проведи между ними линию и прикинь размер этой линии
Цитата Сообщение от Нету имени Посмотреть сообщение
и в библиотеки math.h(cmath) есть функция чтобы возвести в степень число
и ? вызывать функцию чтобы возвести в квадрат ? т.е умножить число на самое себя?
а зачем?
Цитата Сообщение от IPavel Посмотреть сообщение
Chr 1 - это сдвиг в право если я правильно понял...
ну да
оно же делить на 2
Цитата Сообщение от IPavel Посмотреть сообщение
Осталось только - imax()
по моему возвращает максимальное число, но могу ошибаться, спроси в ветке бэйсика
Цитата Сообщение от IPavel Посмотреть сообщение
Результат этой ф-ции связан с расчётом прямой видимости по Бразенхему,
формулу знаешь? напиши свою реализацию
IPavel
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
04.07.2013, 09:09  [ТС]     Перевести код на c++ #6
Цитата Сообщение от ValeryS Посмотреть сообщение
а это что
ты хоть нарисуй на бумажке две точки проведи между ними линию и прикинь размер этой линии

и ? вызывать функцию чтобы возвести в квадрат ? т.е умножить число на самое себя?
а зачем?
ну да
оно же делить на 2

по моему возвращает максимальное число, но могу ошибаться, спроси в ветке бэйсика


формулу знаешь? напиши свою реализацию
Да, знаю...
У меня две реализации...
Одна по этой же книжки написана, только на с++ я переписал с бейсика...
А другая с другой книженции по 2д графики...
чуть позже скину...
... imax...
А зачем он тогда максимальное число получал???
Yandex
Объявления
04.07.2013, 09:09     Перевести код на c++
Ответ Создать тему
Опции темы

Текущее время: 20:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru