IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Списки, Помогите доработать...
сообщение
Сообщение #1


Фанат Delphi
**

Группа: Пользователи
Сообщений: 72
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


В слове, заканчивающемся точкой, заменить вхождение Е1 на Е2, где Е1 и Е2 - элементы одинаковой длины
(проблема в доработки процедуры ChangeElement). Помогите пожалуйста...
Код


const n=8;
Type
  point = ^MyWord;
  MyWord = record
    ch: char;
    next: point
  end;
Type massiv = array[1..n] of char;
var
   slovo:point;
   c:char;
   M,m1:massiv;
   E1,E2: string[100];
   i:integer;
{---------------------------------------------------------------------------}
Procedure VvodEl(var mas:massiv;MyStr:string);
var i:integer;
begin
     for i:=1 to length(MyStr) do mas[i]:=MyStr[i];
end;
{---------------------------------------------------------------------------}
procedure Print (first: point);
Var r: point;
begin
  R:= first;
  write('CLOBO = ');
  While r<>nil do
    begin
      Write (r^.ch);
      R:=r^.Next;
  end;
  writeln;
end;
{---------------------------------------------------------------------------}
procedure Vvod(var first: point);
var r, last: point;        
begin
    first:= nil; last := nil;

    writeln('HABEPuTE C/\OBO C "." HA KOHCE ');
  repeat  
      new( r );
      r^.next := nil;
      read(r^.ch);

      if first = nil then first := r
      else last^.next := r;

      last := r;
  until r^.ch = '.';

end;
{---------------------------------------------------------------------------}
procedure ChangeElement(first:point;C:massiv;c1:massiv);
var r,p:point;
    j:integer;
bad: boolean;
begin
    r := first;
repeat
{ while (i <= length(E2)) and (C[1] <> r^.ch) do inc(i); }
    if r <> nil then begin
    j := 1;
    p:=r;
    bad := false;
    while (p^.ch <> '.') and (not bad) do
        begin
            bad := (p^.ch) <> C[j];
            if not bad then
              begin
                  p := p^.next;
                  inc(j)
              end
        end;
        if c[j]<>#0 then r:=r^.next
        else
            begin
             r := p;
                
    {?????????????????????}
            end
    end
until r = nil
end;
{--------------------------------------------------------------------------}
begin
clrscr;
    readln(E2);
    VvodEl(m,E2);

    readln(E1);
    VvodEl(m1,E1);
    vvod(slovo);

   writeln('Start word:');
   print(slovo);
   ChangeElement(slovo,M,M1);
   writeln('Finish word:');
   print(slovo);
  readkey
end.


Сообщение отредактировано: NTL -


--------------------
ICQ (384-043-857)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Фанат Delphi
**

Группа: Пользователи
Сообщений: 72
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


up


--------------------
ICQ (384-043-857)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Процедура нуждалась не в ДОработке, а в ПЕРЕработке:

procedure ChangeElement(first:point;C:massiv; c1:massiv);
var
r, p: point;
j: integer;
bad: boolean;
begin
r := first;
repeat

if r <> nil then begin
j := 1;
p := r;

bad := false; r := nil;
while (p^.ch <> '.') and (C[j] <> #0) do begin

bad := (p^.ch) <> C[j];
if not bad then begin
if r = nil then r := p;
inc(j)
end
else r := nil;
p := p^.next;

end;

j := 1;
while (r <> nil) and (C1[j] <> #0) do begin
r^.ch := C1[j];
inc(j);
r := r^.next;
end;
end;

until r = nil
end;

 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Фанат Delphi
**

Группа: Пользователи
Сообщений: 72
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Volvo,спасибо Вам!


--------------------
ICQ (384-043-857)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.12.2020 16:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name