Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2009, 11:11   #1
scibern
 
Регистрация: 10.01.2009
Сообщений: 8
Печаль Товарищи, помогите разобраться с указателями

Помогите пожалуйста кусочек кода на С++ перевести на Паскаль:

Код:
void gosthash_compress(unsigned long *h, unsigned long *m)
{
      unsigned long r;
      unsigned long l;
      r = h[i];			       
      l = h[i + 1];
}
вот этот код нужно перевести в аналогичный паскаль
Не могу понять, как переменной определенного типа можно присвоить значение указателя? Всех заранее благодарю за ответы...


Модератор: тег CODE

Последний раз редактировалось MaTBeu; 11.01.2009 в 11:59.
scibern вне форума Ответить с цитированием
Старый 11.01.2009, 11:32   #2
Doc
Пользователь
 
Аватар для Doc
 
Регистрация: 09.01.2009
Сообщений: 15
По умолчанию

здесь h и m - это указатели на начало массива, а r и l переменные, которым присваиваются элементы массива h
Код:
procedure gosthash_compress(var array [1..h] of longint, array [1..m] of longint) //хотя m может быть вовсе и не массивом
var r,l:Longint;
i:Integer;
begin
r:=h[i]; 
l:=h[i + 1];
end;
Вроде должно быть так.

Последний раз редактировалось Doc; 11.01.2009 в 11:40.
Doc вне форума Ответить с цитированием
Старый 11.01.2009, 11:42   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Doc Думаю, все-таки так:
Код:
procedure gosthash_compress(h: array [1..hMAX] of longint, m : array [1..mMAX] of longint)
где hMAX и mMAX - правые границы массивов.
Ведь h и m - сами массивы, а не индексы.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.01.2009, 11:46   #4
Doc
Пользователь
 
Аватар для Doc
 
Регистрация: 09.01.2009
Сообщений: 15
По умолчанию

верно, просто давно на паскале не писал
Doc вне форума Ответить с цитированием
Старый 11.01.2009, 11:53   #5
scibern
 
Регистрация: 10.01.2009
Сообщений: 8
Печаль

все дело в том, что мне нужно в процедуру передать указатели, а не значения; каким образом потом присвоить переменной r значение элемента массива, на который указывает h, например?
scibern вне форума Ответить с цитированием
Старый 11.01.2009, 12:18   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

scibern Вот небольшой пример работы с указателями в паскале. Думаю, это то, что вам нужно.
Код:
uses crt;
type mass = array[1..4] of longint;
type ukm = ^mass;
var mas : mass;
k : integer;

procedure gosthash_compress(h : ukm);
var r,l,i : longint;
 begin
 i:=2;
 r := h^[i];
 l := h^[i+1];
 writeln(r,'  ',l);
 end;

begin
clrscr;
for k:=1 to 4 do
 begin
 mas[k] := k;
 write(mas[k]:5);
 end;
writeln;
writeln('---------');

gosthash_compress(@mas);

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.01.2009, 12:24   #7
scibern
 
Регистрация: 10.01.2009
Сообщений: 8
По умолчанию

Большое спасибо, за ответ
scibern вне форума Ответить с цитированием
Старый 11.01.2009, 12:28   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот этот кусок:
Код:
void gosthash_compress(unsigned long *h, unsigned long *m)
{
      unsigned long r;
      unsigned long l;
      r = h[i];			       
      l = h[i + 1];
}
..по идее, должен выглядеть как-то так:
Код:
type massiv = array[1..10] of longint;
ukmass = ^massiv;
uklong = ^integer;
var
i,j : longint;
A : massiv;
{.....}
procedure gosthash_compress(h : ukmass; m : uklong);
 var  r,l : longint;
 begin
 r := h^[i];
 l := h^[i+1];
 end;
{........ всякое разное.....}
begin
{...}
gosthash_compress(@A,@j);
{....}
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Товарищи программисты помогите расшифровать оператор scibern Общие вопросы Delphi 3 11.01.2009 03:16
Товарищи Программеры помогите плиз. Строки 6AZblJlb Паскаль, Turbo Pascal, PascalABC.NET 4 05.12.2008 22:28
Работа с указателями!!! HKBD Общие вопросы C/C++ 1 06.10.2008 07:52
Товарищи програмисты помогите по ПАСКАЛЮ. BEAR696 Фриланс 11 03.06.2008 20:18
Помогите пожалуйста с динамической памятью и указателями Riddick2013 Помощь студентам 1 19.12.2007 14:41