1

Тема: Переклад коду з Pascal на С++

Привіт!
Допоможіть перекласти код з Pascal на С++
Програма для вирішення колізій при хешуванні методом ланцюжків ...

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;

2

Re: Переклад коду з Pascal на С++

Знайшов переклад, але він не зовсім працює(((

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;
}

3

Re: Переклад коду з Pascal на С++

Він і не буде, це ж не вся програма, а лише кусочок.

4

Re: Переклад коду з Pascal на С++

bunyk написав:

Він і не буде, це ж не вся програма, а лише кусочок.

Тобто не весь?!? це функції і процедура написані повнісю.... звірявся з кодом на паскалі....
Що ви мали на увазі???

5

Re: Переклад коду з Pascal на С++

Так і на паскалі не вся програма... В паскалі програми закінчуються словом end після якого стоїть крапка. Не з комою.

Ви її запускали?

6 Востаннє редагувалося n3250sasha (04.11.2012 14:37:57)

Re: Переклад коду з Pascal на С++

bunyk написав:

Так і на паскалі не вся програма... В паскалі програми закінчуються словом end після якого стоїть крапка. Не з комою.
Ви її запускали?

Так це і не є вся програма! Це тільки  функції.... Я їх не можу перекласти на С++....

7

Re: Переклад коду з Pascal на С++

Ось сайт з яког я брав цей код:
http://www.structur.h1.ru/hash.htm

8

Re: Переклад коду з Pascal на С++

І що ви хочете щоб я на тому сайті виправив код?

Спочатку вам самим потрібно зрозуміти для чого у вашій програмі хеш, і що взагалі повинна робити програма.

9 Востаннє редагувалося n3250sasha (04.11.2012 22:41:33)

Re: Переклад коду з Pascal на С++

bunyk написав:

І що ви хочете щоб я на тому сайті виправив код?
Спочатку вам самим потрібно зрозуміти для чого у вашій програмі хеш, і що взагалі повинна робити програма.

Пояснюю. Мені потрібно написати програму яка показує як працюють алгоритми хешування.
" Разрешение коллизий при хешировании методом открытой адресации. " -  я зробив з повним покроковим виведенням роботи алгоритму, з тими функціями і процедурою що там описан на Pascal, просто перевівши на С++ і дописав покровове виведення, а тепер потрібно зробити таке саме тільки для " Разрешение коллизий при хешировании методом цепочек. " але я не знаю як перевести цей код на С++...