profile
Размещено 3 года назад по предмету Информатика от Minerva00100

Сделать перевод из Паскаль в С++
Помогите пожалуйста!
Вот код:
uses
CRT;
const
min_hash=ord('0')+ord('0');
max_hash=ord('z')+ord('z');
ind_sym=['a'..'z','A'..'Z','0'..'9','_'];
type
max_string=string[32];
pInd_elem=^ind_elem;
ind_elem=record
data:max_string;
next:pInd_elem;
end;
hash_table=array[min_hash..max_hash] of pInd_elem;
var
ht:hash_table;
fd:file of char;
i,cur_elem,all_col_count,check_count,count:integer;
ind_str:max_string;
ch:char;
FileName:string;
rez:LongInt;
procedure CreateHash;
begin
cur_elem:=ord(ind_str[1])+ord(ind_str[length(ind_str)]);
end;
procedure FindInd(var t:pInd_elem);
begin
inc(check_count);
if t<>nil then
begin
if t^.data=ind_str then
begin
WriteLn(cur_elem:5,#9,t^.data);
WriteLn(' Число сравнений ',check_count);
end
else FindInd(t^.next);
end
else WriteLn(' Идентификатор не найден');
end;
procedure GetIndName;
begin
write(' Введите нужный идентификатор: ');
ReadLn(ind_str);
end;
procedure colliz(var t:pInd_elem);
begin
if t=nil then
begin
t:=new(pInd_elem);
t^.data:=ind_str;
t^.next:=nil;
inc(count);
inc(all_col_count);
end
else
if t^.data<>ind_str then colliz(t^.next);
end;
procedure GetHash;
begin
CreateHash;
if ht[cur_elem]=nil then
begin
ht[cur_elem]:=new(pInd_elem);
ht[cur_elem]^.data:=ind_str;
ht[cur_elem]^.next:=nil;
inc(count);
end
else
if ht[cur_elem]^.data<>ind_str then colliz(ht[cur_elem]^.next);
end;
begin
ClrScr;
write('Введите имя файла с идентификаторами: ');
ReadLn(FileName);
for i:=min_hash to max_hash do ht[i]:=nil;
{$I-}
assign(fd,FileName);
reset(fd);
rez:=IOResult;
{$I+}
if rez=0 then
begin
WriteLn('Строим таблицу идентификаторов ');
count:=0;
all_col_count:=0;
ind_str:='';
while(not EOF(fd)) do
begin
read(fd,ch);
while(ch in ind_sym)do
begin
ind_str:=ind_str+ch;
read(fd,ch);
end;
if ind_str<>'' then
begin
GetHash;
ind_str:='';
end;
end;
close(fd);
WriteLn('Таблица построена');
WriteLn(' Было найдено ',count,' идентификаторов ');
WriteLn(' Было обнаружено ',all_col_count,'коллизии');
ch:='0';
repeat
if UpCase(ch)='Y' then
begin
check_count:=0;
GetIndName;
CreateHash;
FindInd(ht[cur_elem]);
end;
write('Искать идентификатор y/n: ');
ReadLn(ch);
until UpCase(ch)='N';
end
else
WriteLn(' Невозможно открыть файл ',FileName);
end.

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.