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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2021, 11:56   #1
kilogram4ik
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 68
По умолчанию Проверить на равенство два списка L1 и L2 .

Само условие : Проверить на равенство два списка L1 и L2 .

Люди помогите пожалуйста сделать задание , а то получить 4 не хочется за него .
А то я вообще не понимаю эту тему. Вся надежда только на вас .

Сам проект я оставлю .

Последний раз редактировалось kilogram4ik; 24.02.2021 в 18:40.
kilogram4ik вне форума Ответить с цитированием
Старый 28.02.2021, 18:45   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Но ведь решение само напрашивается - обход первого и второго списка поэлементно и сравнение соответствующих элементов. В конце надо проверить, что в списках было одинаковое число элементов.
Arigato вне форума Ответить с цитированием
Старый 28.02.2021, 19:20   #3
kilogram4ik
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 68
По умолчанию

Arigato, да проблема в том что я хз как это сделать
kilogram4ik вне форума Ответить с цитированием
Старый 28.02.2021, 20:06   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Где сам проект?
На скорую руку
Код:
unit Unit12;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm12 = class(TForm)
    Button1: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form12: TForm12;
  L1, L2, SL: TStringList;

implementation

{$R *.dfm}

procedure TForm12.Button1Click(Sender: TObject);
var
  I, I2: Integer;
begin
  SL.Clear;

  for I := 0 to L1.Count - 1 do
  begin
    for I2 := 0 to L2.Count - 1 do
    begin
      if L1.Strings[I] = L2.Strings[I2] then SL.Add(L1.Strings[I]);
    end;
  end;

  if SL.Count > 0 then ShowMessage('Список совпадений:' + #13#10 + SL.Text);
end;

procedure TForm12.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FreeAndNil(L1);
  FreeAndNil(L2);
  FreeAndNil(SL);
end;

procedure TForm12.FormCreate(Sender: TObject);
begin
  L1 := TStringList.Create;
  L2 := TStringList.Create;
  SL := TStringList.Create;

  L1.Add('1');
  L1.Add('4');
  L1.Add('7');
  L1.Add('a');
  L1.Add('j');

  L2.Add('d');
  L2.Add('h');
  L2.Add('4');
  L2.Add('z');
  L2.Add('1');
end;

end.
Shouldercannon вне форума Ответить с цитированием
Старый 28.02.2021, 20:14   #5
kilogram4ik
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 68
По умолчанию

Shouldercannon, проект в файле и сам код
Код:
unit spiski;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    BitBtn1: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn4: TBitBtn;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
    n,n1:integer;
    st,st1:string;
    S_T,S_T1:integer;
implementation

{$R *.dfm}

Type
TPStudent=^TStudent;
TStudent=record
f_name:string[20];
f1_name:string[20];
next:TPStudent;
next1:TPStudent;
end;
var head : TPStudent;
    head1 : TPStudent;


procedure TForm1.BitBtn1Click(Sender: TObject);
var node:TPStudent;
    curr:TPStudent;
    pre:TPStudent;
begin
new(node);
node^.f_name:=Edit1.Text;
curr:=head;
pre:=NIL;
while (curr<>NIL) and(node.f_name>curr^.f_name) do
begin
  pre:=curr;
  curr:=curr^.next;
  end;
  if pre=NIL then
  begin
    node^.next:=head; head:=node;
  end
  else
  begin
    node^.next:=pre^.next;
    pre^.next:=node;
  end;
Edit1.Text:='';
Edit1.SetFocus;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var node1:TPStudent;
    curr1:TPStudent;
    pre1:TPStudent;
begin
new(node1);
node1^.f1_name:=Edit2.Text;
curr1:=head1;
pre1:=NIL;
while (curr1<>NIL) and(node1.f_name>curr1^.f1_name) do
begin
  pre1:=curr1;
  curr1:=curr1^.next1;
  end;
  if pre1=NIL then
  begin
    node1^.next1:=head1; head1:=node1;
  end
  else
  begin
    node1^.next1:=pre1^.next1;
    pre1^.next1:=node1;
  end;
Edit2.Text:='';
Edit2.SetFocus;
end;






procedure TForm1.BitBtn4Click(Sender: TObject);
var curr:TPStudent;
    curr1:TPStudent;
begin
n:=0;
st:='';
curr:=head;
while curr<>NIL do
begin

  n:=n+1;
  st:=st+ curr^.f_name +' ' + #13;
  curr:=curr^.next;
end;

n1:=0;
st1:='';
curr1:=head1;
while curr1<>NIL do
begin
  n1:=n1+1;
  st1:=st1+ curr1^.f1_name +' ' + #13;
  curr1:=curr1^.next1;
end;

if (n=0) then
ShowMessage('В списках нет элементов.')
else
ShowMessage('Список №1:'+#13+st);


if (n1=0) then
ShowMessage('В списках нет элементов.')
else
ShowMessage('Список №2:'+#13+st1);
end;
end.
Вложения
Тип файла: rar списки.rar (52.8 Кб, 1 просмотров)
kilogram4ik вне форума Ответить с цитированием
Старый 28.02.2021, 22:38   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Не нужно дублировать поля name и next, достаточно иметь 2 головы списков. Код добавления элемента в список стоит вынести в отдельную процедуру. Считать количество элементов с помощью n и n1 нет смысла, так как уже есть глобальные счетчики S_T и S_T1. Можно сравнить, например, так:
Код:
  if S_T <> S_T1 then
  begin
    ShowMessage('списки отличаются по длине');
    Exit;
  end;
  curr := head;
  curr1 := head1;
  while (curr <> nil) and (curr1 <> nil) do
  begin
    if curr^.f_name <> curr1^.f_name then
    begin
      ShowMessage('списки отличаются:' + #13 + curr^.f_name + #13 + curr1^.f_name);
      Exit;
    end;
    curr := curr^.next;
    curr1 := curr1^.next;
  end;
  ShowMessage('списки одинаковы');
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 01.03.2021, 00:21   #7
kilogram4ik
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 68
По умолчанию

BDA, ну я просто такой хороший программист
kilogram4ik вне форума Ответить с цитированием
Старый 01.03.2021, 00:33   #8
kilogram4ik
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 68
По умолчанию

BDA, спасибо вам огромное что помогли
kilogram4ik вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить* *на* *равенство* *два* *списка* *L1* *и* *L2* kilogram4ik Общие вопросы Delphi 1 23.02.2021 17:56
Используя очередь, проверьте на равенство два заданных текстовых файла. Карина1987 Паскаль, Turbo Pascal, PascalABC.NET 0 17.05.2016 15:33
подскажите, как проверить равенство двух массивов на C# SERGO123 C# (си шарп) 1 08.01.2014 17:38
Как проверить два условия ??? Delphi Aero1 Помощь студентам 3 19.01.2010 18:35
Проверить равенство числа открывающих и закрывающих круглых скобок 010 Паскаль, Turbo Pascal, PascalABC.NET 6 18.05.2008 00:27