Procedure TForm1.Button4Click(Sender: TObject); var Buff: TNodePointer; x: TItem; i,j: Cardinal; begin i:=0; Buff:=Head; if(Buff^.Next=nil) then begin ShowMessage('В стеке один элемент!'); exit; end; while Buff <> nil do begin while (Buff^.Next<>nil) and (Buff^.Data=Buff^.Next^.Data) and not(isEmpty(Buff)) do begin pop(Buff^.Next,x); for j:=i to StringGrid1.RowCount-2 do StringGrid1.Cells[0,j]:=StringGrid1.Cells[0,j+1]; StringGrid1.RowCount:=StringGrid1.RowCount-1; end; Buff:=Buff^.Next; i:=i+1; end; end;
PS. Delphi у меня сейчас нет, так что проверяйте сами. Если что не так - сообщайте.
OCR-версия страницы из учебника (текст страницы, которая находится выше):Отсюда получаем ас = ab и Ьс = Ьа. Из этих двух равенств следует, что ас-Ьс, или (Ь - а) с = 0. Но Ь - а - АВ, с-DC, поэтомуАВ DC = 0, и, значит, АВ J_ CD, что и требовалось доказать.464 Вычислите угол между прямыми АВ и CD, если: а) А (3; -2; 4), В (4; -1; 2), С (6; -3; 2), D (7; -3; 1); б) А (5; -8; -1), В (6; -8; -2), С (7; -5; -И), D (7; -7; -9); в) А (1; 0; 2), В (2; 1; 0), С (0; -2; -4), D (-2; -4; 0); г) А (-6; -15; 7), В (-7; -15; 8), С (14; -10; 9), D (14; -10; 7).465 Дана правильная треугольная призма АВСА1В1С1, в которой ААХ = = л/2АВ (рис. 139, а). Найдите угол между прямыми АСХ и АХВ. РешениеПусть АВ = а, тогда ААХ = v2a. Введем прямоугольную систему координат так, как показано на рисунке 139, б. Вершины А, В, А1т С!имеют следующие координаты (объясните почему): А^~—;|-;0j,В (0; а; 0), А, ; j; aV2 ), С, (0; 0; aV2).Отсюда находим координаты векторов АСХ и ВАХ:ACi{-^#rf;aV2}, ^ ji^;-|;aV2Векторы АСг и ВАг являются направляющими векторами прямых ACj и AlB. Искомый угол ф между ними можно найти по фор-муле (2V ,i_3a2+la2 + 2(J2!14 4 ,cos Ф = - --------— = откуда Ф = 60°.;3a2+la2 + 2a2 . ;la2+la2 + 2a2 2\' 4 4 \ 4 4466 В кубе ABCDA^Bfi^D^ точка М лежит на ребре АА,, причем AM : MAj = 3 : 1, а точка N — середина ребра ВС. Вычислите косинус угла между прямыми: а) MN и DDX\ б) MN и BD; в) MN и В,£»; г) MN и Afi.
var Buff: TNodePointer;
x: TItem;
i,j: Cardinal;
begin
i:=0;
Buff:=Head;
if(Buff^.Next=nil) then
begin
ShowMessage('В стеке один элемент!');
exit;
end;
while Buff <> nil do
begin
while (Buff^.Next<>nil) and (Buff^.Data=Buff^.Next^.Data) and not(isEmpty(Buff)) do
begin
pop(Buff^.Next,x);
for j:=i to StringGrid1.RowCount-2 do
StringGrid1.Cells[0,j]:=StringGrid1.Cells[0,j+1];
StringGrid1.RowCount:=StringGrid1.RowCount-1;
end;
Buff:=Buff^.Next;
i:=i+1;
end;
end;
PS. Delphi у меня сейчас нет, так что проверяйте сами. Если что не так - сообщайте.