All pastes #264035 Raw Edit

Stuff

public text v1 · immutable
·published 2006-12-02 00:48 UTC
rendered paste body
with Ada.Unchecked_Conversion, ada.text_io; use ada.text_io;
with ada.integer_text_io; use ada.integer_text_io;

procedure hash is

type str is new String(1..2);
function toInt is new Ada.Unchecked_Conversion(str, Long_Integer);

--hash node, self aware of address and key
type hNode is record
	key: String(1..16);
	link: integer;
	address: Long_Integer;
end record;

--size of hash table
tableSize: integer := 128;

--hash table
type hTable is array(1..tableSize) of hNode;

--buffer for reading in hNode
bufferNode: hNode;

--selection at menu prompt
selection: integer :=0;

--empty value of key
emptyVal: String (1..16):= (others=>' ');
linkedEmptyVal: String(1..16):=(others=>'&');


function hFunct return hNode is
	buffer: String(1..16);
	tempNode:hNode;
	
	begin
		put("Enter Key:: ");
		get(buffer);
		tempNode.key:=buffer; --double check this syntax
		sum:=abs(toInt(buffer(3..4))) +abs(toInt(buffer(7..8))) + abs(toInt(buffer(11..12))) + abs(toInt(buffer(15..16)));
		sum:=sum mod tableSize;
		tempNode.address:=sum;
		
		return tempNode;
		
	end hFunct;
	
procedure insert is
	tNode:hNode;
	count:long_integer:=0;
	begin
		put("enter string '&&&&&&&&&&&&&&&&' (16 of them) to end insertion");
		loop
		tNode:=hFunct;
		exit when tnode.key=linkedEnptyVal;
		
		count:=tNode.address;
			loop
			if hTable(count).key = emptyVal or hTable(count).key = linkedEmptyVal then
				hTable(count).key:=tNode.key;
				exit;
			else
				count:=count+1;
			end if;
			end loop;
		end loop;
	end insert;
				


begin

	--initialize hash table to default values (space holders)
	for x in 1..tableSize loop 
		hTable(x).link:=-1;
		hTable(x).key:=(others=>' ');
		hTable(x).address:=0;
	end loop;

		put_line("+++++++++++++++++++++++++++++++++++++++++++++++");
		put_line("+++ Welcome to the Hash Table Program +++ ");
		put_line("+++++++++++++++++++++++++++++++++++++++++++++++");
		loop
			put_line("+Menu::");
			put_line("1: Insert into hash table");
			put_line("2: Lookiup in hash table");
			put_line("3: Print stats");
			put_line("4: Exit");
			put("Please Enter a Selection:: ");
			get(selection);
			exit when selection = 4;
			
			if selection = 1 then
				insert;
			--elsif selection = 2 then
			
			
			--elsif selection = 3 then
			
			
			--elsif selection = 4 then
			
			
			
			end if;
			
		end loop;
		
end hash;