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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2008, 14:57   #1
alexeichik
Новичок
Джуниор
 
Регистрация: 21.05.2008
Сообщений: 2
Восклицание

Уважаемые, всем доброго здравия!!!
Нужна ваша помощь в решении следующих задач:

1.Построить описание класса, содержащего информацию о почтовом адресе организации.Предусмотреть возможность раздельного изменения составных частей адреса, создания и уничтожения объектов этого класса.В объекте использовать динамические поля.
Написать программу демонстрирующую работу с этим классом

2.Составить описание класса, обеспечивающего представления матрицы произвольного размера с возможностью изменения числа строк и столбцов, а так же вывода на экран подматрице любого размера и всей матрице. Написать программу, демонстрирующию работу с этим классом.

з.ы.Очень нужна помощь! Выручайте плз

Последний раз редактировалось Stilet; 21.05.2008 в 15:14.
alexeichik вне форума Ответить с цитированием
Старый 21.05.2008, 15:10   #2
alexeichik
Новичок
Джуниор
 
Регистрация: 21.05.2008
Сообщений: 2
По умолчанию

есть вот такая программа...возможно поможет
Код:
{Построить описание класса, содержащего информацию о почтовом адресе организации.Предусмотреть возможность раздельного изменения составных частей адреса, создания и уничтожения объектов этого класса.В объекте использовать динамические поля}
program lab24;
type link  = ^element;
   element = record
		data  : string;
                left  : link;
		right : link;
	     end;
var
   m, depth, minim  : integer;
   x:string;
   pn : link;


procedure add(var n : link; arg:string);
var
   ind, neo : link;
begin
   new(neo);
   neo^.data:=arg;
   neo^.left:=nil;
   neo^.right:=nil;
   if n=nil then n:= neo
   else begin
      ind:=n;
      while neo<>nil do begin
	 if arg<ind^.data then begin
	    if ind^.left=nil then begin
	       ind^.left:=neo;
	       neo:=nil
	    end
	    else ind:=ind^.left
	 end
	 else
	    if arg>ind^.data then begin
	       if ind^.right=nil then begin
		  ind^.right:=neo;
		  neo:=nil
	       end
	       else ind:=ind^.right
	    end
	    else begin
	       writeln('Such element is already existent');
	       neo:=nil;
	    end;
      end;
   end;
end; { add }

procedure restruct(var d : link);
var
   ind1, ind2 : link;
begin
   ind1:=d;
   if ind1^.right=nil then begin
      ind2:=d;
      d:=ind2^.left;
      dispose(ind2)
   end
   else
      if ind1^.left=nil then begin
	 ind2:=d;
	 d:=ind2^.right;
	 dispose(ind2)
      end
      else begin
	 ind2:=ind1^.left;
	 while ind2^.right<>nil do begin
	    ind1:=ind2;
	    ind2:=ind2^.right;
	 end;
	 ind1^.right:=ind2^.left;
	 ind2^.left:=d^.left;
	 ind2^.right:=d^.right;
	 dispose(d);
	 d:=ind2;
      end;
end; { restruct }

procedure delete(var n : link; arg:string);
var
   del, ind : link;
   t	    : boolean;
begin
   t:=false;
   del:=n;
   while (del<>nil) and (not t) do begin
      if arg=del^.data then t:=true
      else
	 if arg<del^.data then begin
	    ind:=del;
	    del:=del^.left;
	 end
	 else begin
	    ind:=del;
	    del:=del^.right;
	 end;
   end;
      if t then begin
	 if (del^.left=nil) and (del^.right=nil) then begin
	    if del=n then begin n:=nil; dispose(del) end else
	    if ind^.left=del then begin
	       ind^.left:=nil;
	       dispose(del)
	    end
	    else begin
	       ind^.right:=nil;
	       dispose(del)
	    end
	 end
	 else
	    if del=n then restruct(n) else
	    if ind^.left=del then restruct(ind^.left)
	    else restruct(ind^.right)
      end
      else writeln('Element is absent');
end; { delete }

procedure view(	   n : link; var d:integer);
var
   i : integer;
begin
   for i:=1 to d do begin
      write('    ') end;
   writeln(n^.data);
   if (n^.left=nil) and (n^.right=nil) then d:=d-1
   else begin
      if n^.right<>nil then begin
	 d:=d+1;
	 view(n^.right,d);
      end;
      if n^.left<>nil then begin
	 d:=d+1;
	 view(n^.left, d);
      end;
      d:=d-1;
   end;
end; { view }

procedure obhod1(    n : link; var d, min:integer);
begin
   if (n^.left=nil) and (n^.right=nil) then begin
      if d<min then min:=d;
      d:=d-1 end
      else begin
	 if n^.right<>nil then begin
	    d:=d+1;
	    obhod1(n^.right, d, min); end;
	 if n^.left<>nil then begin
	    d:=d+1;
	    obhod1(n^.left, d,min) end;
	 d:=d-1;
      end;
end; { obhod1 }

procedure obhod2(    n : link; var d:integer; min:integer);
begin
   if (n^.left=nil) and (n^.right=nil) then begin
      if d=min then writeln(n^.data);
      d:=d-1;
   end
   else begin
      if n^.right<>nil then begin
	 d:=d+1;
	 obhod2(n^.right,d,min);
      end;
      if n^.left<>nil then begin
	 d:=d+1;
	 obhod2(n^.left, d,min);
      end;
      d:=d-1;
   end;
end; { obhod2 }


begin
   m:=1;
   pn:=nil;
   while m<>0 do begin
      writeln;
      writeln('--- Type "1" to ADD new element');
      writeln('--- Type "2" to DELETE element');
      writeln('--- Type "3" to VIEW tree');
      writeln('--- Type "4" to FIND elements with minimal depth');
      writeln('--- Type "0" to EXIT program');
      writeln;
      write('Enter : ');
      readln(m);
      writeln;
      case m of
	1 : begin
	       write('Enter new element : ');
	       readln(x);
	       add(pn, x);
	    end;
	2 : begin
	       write('Enter element you want to delete : ');
	       readln(x);
	       delete(pn, x);
	    end;
	3 : begin
	       depth:=1;
	       if pn=nil then writeln('The tree is empty') else begin
	       writeln('The tree is : ');
	       view(pn, depth);
	       end;
	    end;
	4 : begin
	       depth:=1;
	       minim:=20;
	       if pn<>nil then begin
	       writeln('Elements with minimal depth');
	       obhod1(pn,depth,minim);
		  writeln(minim);
		  depth:=1;
	       obhod2(pn,depth,minim);
	       end
	       else writeln('The tree is empty');
	    end;
      end; { case }
   end;
end.

Последний раз редактировалось merax; 21.05.2008 в 15:27.
alexeichik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задачки мандаринка Паскаль, Turbo Pascal, PascalABC.NET 3 02.02.2008 17:02
Задачки на Си Cyn4uk Помощь студентам 3 06.12.2007 23:51
хелп 3 задачки на паскале Ksuha Помощь студентам 15 16.10.2007 16:31
Задачки по С Aero Помощь студентам 3 04.10.2007 18:41