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

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

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

> Однонаправленные списки
}0pa
сообщение 29.10.2006 12:54
Сообщение #1


Пионер
**

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

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


Помогите, пожалуйста, исправить функцию
Код
Poisk
...
Задача. Использовав, однонаправленные списки, подсчитать кол-во вхождений в слово, заканчивающимся точкой, подстроки, вводимой с клавиатуры...Фукнция поиска таких слов работает лишь для длины подстроки = 1
Код

uses crt;
const n=20;
Type
  point = ^MyWord;
  MyWord = record
    ch: char;
    next: point
  end;
Type massiv = array[1..n] of char;
var
   slovo:point;
   c:char;
   M:massiv;
   stroka: string[100];
   i:integer;
{---------------------------------------------------------------------------}
Procedure VvodEl;
var i:integer;
begin
for i:=1 to length(stroka) do
  begin
   M[i]:=stroka[i];
  end;
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(first:point);
var r:point;
begin
  first:= nil;
  writeln('HABEPITE C/\OBO C "." HA KOHCE ');
  while r^.ch<>'.' do
    begin
      new(r);
      r^.Next:=slovo;
      read(r^.ch);
      slovo:=r;
    end;
end;
{---------------------------------------------------------------------------}

function Poisk(first:point;C:massiv):integer;
var r:point;
   k,j,z:integer;
begin
k:=0;
r:=first;
j:=1;
while (r<>nil) do
begin
  if (r^.ch=c[j]) then
    begin
      if j=length(stroka) then
         begin
          k:=k+1;
          j:=1;
          r:=r^.next
         end
     else
        begin
         r:=r^.next;
         j:=j+1;
         if j>length(stroka) then j:=1;
        end
    end
  else
   begin
    r:=r^.next;
    j:=1;
   end;
end;
poisk:=k;
end;

begin
clrscr;
write('BBEDuTE TEKCT: ');
readln(stroka);
VvodEl;

for i:= 1 to length(stroka) do write(M[i]);

  writeln;
  vvod(slovo);
  print(slovo);
  writeln(stroka,' BCTPE4AETCYA B C/\OBE ',poisk(slovo,M),' PA3');
  readkey;
  end.


--------------------
Ну, а почему бы в свободное время не позаниматься программированием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 4.07.2025 12:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"