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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2012, 01:06   #1
n3250sasha
 
Регистрация: 21.12.2011
Сообщений: 3
Восклицание Перевод кода с Pascal на C++

Доброго времени суток!
Помогите перевести код с Pascal на C++.
Программа для разрешение коллизий при хешировании методом цепочек...

Код:
type 
    link = ^node;
    node = record
    key: integer;
    st: string;
    next: link;
end;
 
var
    mas: array[0..9] of link;
 
function h(key: integer): integer;
begin
    h:=key mod 10;
end;
 
function search(key1: integer; st1: string): link;
var
    i: integer;
    q, p, s: link;
begin
    i:= h(key1);
    q:=nil;
    p:=mas[i];
    while p <> nil do
    begin
        if p^.key = key1 then
        begin
                search:=p;
                exit;    
        end;
        q := p;
        p := p^.link;
    end;
    {Если ключ не найден, вставляем новую запись}
    new(s);
    s^.key:=key1;
    s^.st:=st1;
    s^.next:=nil;
    if q = nil then
    mas[i]:=s
    else
    q^.next:=s;
    search:=s;
end;
n3250sasha вне форума Ответить с цитированием
Старый 04.11.2012, 16:19   #2
n3250sasha
 
Регистрация: 21.12.2011
Сообщений: 3
По умолчанию

Нашел код, но он не совсем рабочий (((
Код:
typedef
struct node {
  int key;
  string st;                              // В структуре вообще запутался :(
  node *link;
  node *next;
}link;
link mas[9];
int h(int key) {
  return key % 10;
}
link search(int key1, string st1)
{
  int i;
  link q,p,s;
  i = h(key1);
  q = NULL;       // ругается на эту строку
  p = mas[i];
  while (p != NULL) {  // тоже ругается
    if (*p->key = key1) {
      search = p;
      exit();
    }
    q = p;
    p = *p->link;
   }
   malloc(s);
   *s->key = key;
   *s->st = st1;
   *s->next = NULL;
   if (q == NULL) {
     mas[i] = s;
   } else {
     *q->next = s;
   }
   search = s;
}
n3250sasha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы. Перевод кода из Pascal в C++ Ilepekyp Помощь студентам 2 09.03.2012 23:42
Перевод кода из Pascal в C++ Kerragin Помощь студентам 5 13.12.2011 07:54
Перевод кода с Pascal в Delphi Rin Общие вопросы Delphi 5 09.01.2011 01:39
Перевод кода с Java на Pascal Warfvare Помощь студентам 4 19.06.2010 08:38
Перевод кода из Pascal в Object Pascal zemskov77 Общие вопросы Delphi 1 03.01.2009 09:37