Вопрос по информатике:
Дан стек символов. Преобразовать стек, оставив в нем из группы подряд идущих символов только один - Delphi
procedure TForm1.Button4Click(Sender: TObject);
var Buff: TNodePointer;
x: TItem;
i: Cardinal;
begin
i:=0;
Buff:=Head;
if(Buff^.Next=nil) then
begin
ShowMessage('В стеке один элемент!');
exit;
end;
while Buff <> nil do
begin
if(Buff^.Data=Buff^.Next^.Data) then
begin
while (Buff^.Next<>nil) and (Buff^.Data=Buff^.Next^.Data) and not(isEmpty(Buff)) do
begin
pop(Buff^.Next,x);
for i:=0 to StringGrid1.RowCount-2 do
begin
StringGrid1.Cells[0,i]:=StringGrid1.Cells[0,i+1]
end;
StringGrid1.RowCount:=StringGrid1.RowCount-1;
end;
end;
Buff:=Buff^.Next;
end;
end;
end.
Помогите с данной задачей, в общем если ввести к примеру 1 2 3 4 5 5 5 5 , то останется 1 2 3 4 5, а если ввести 1 2 3 4 5 5 5 5 6, то остается 1 2 3 4 5 5, не знаю с чем связано. Скорее всего ошибка с выводом на StringGrid
Так же прикладываю проект https://yadi.sk/d/C7AuwnlM3Gnf8Y
- 14.05.2018 11:25
- Информатика
- remove_red_eye 18272
- thumb_up 23
Ответы и объяснения 1
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^.Nextnil) 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 у меня сейчас нет, так что проверяйте сами. Если что не так - сообщайте.
- 16.05.2018 00:16
- thumb_up 8
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.