М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
catcot1
catcot1
23.01.2023 14:26 •  Информатика

Дан стек символов. преобразовать стек, оставив в нем из группы подряд идущих символов только один - 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 так же прикладываю проект

👇
Ответ:
AnselmaRain
AnselmaRain
23.01.2023
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 у меня сейчас нет, так что проверяйте сами. Если что не так - сообщайте.
4,5(29 оценок)
Открыть все ответы
Ответ:
Сельга7
Сельга7
23.01.2023

program mtr1;

const N=10;

type iint:1..10;

       matrix: array [iint,iint] of integer;

var a: matrix;

     i,j: iint;

     m:iint;

    v:integer;

begin

       readln (m);

      randomize;

      (* заполнение матрицы *)

      for i:=1 to m do

     for j:=1 to m do

    a[i,j] := random(21)-10;

    for i:=1 to m do

    for j:=i to m do

    begin

            if i=j then

               continue;

     v:= a[i,j];

      a[i,j] := a[j,i];

      a[j,i] := v;

     end;

     for i:=1 m do

     begin

     for j:=1 to m do

     write(a[i,j],'  ');

     writeln;

     end;

end.

Объяснение:

4,5(3 оценок)
Ответ:
alinkis11
alinkis11
23.01.2023

несложная динамика)

#include <iostream>

#include <vector>

#include <map>

#include <cmath>

#include <queue>

#include <set>

using namespace std;

#define int long long

const int MAXN = 100,MAXK = 100;

int d[MAXN], d0[MAXN];

void solve(int n, int k)

{

   d[1] = k-1;

   d0[0] = 0;

   for(int i = 2; i <= n; i++)

   {

       d[i] = (d[i-1]+d0[i-1])*(k-1);

       d0[i] = d[i-1];

   }

   cout << d[n] + d0[n];

}

signed main() {

   ios_base::sync_with_stdio(0);

   cin.tie(0);

   cout.tie(0);

   int n,k;

   cin >> n >> k;

   solve(n,k);

}

4,5(49 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ