Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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


Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2008, 16:56   #1
VANOLORD
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 22
По умолчанию Помогите исправить ошибку в задаче

Помогите, пожалуйста.
1. Дан список слов. Подсчитать кол-во верных равенств среди S1=S(n), S2=S(n-1), где Si-элемент списка.
Type TLisp=^TNode;
TNode=record
pred:TLisp;
info:string;
next:TLisp;
end;
Var p,h,q:TLisp;
s:string;
k:integer;
begin
writeln('vvedi s');
readln(s);
new(p);
p^.info:=s;
p^.pred:=nil;
p^.next:=nil;
readln(s);
while s<>'' do begin
new(q);
q^.info:=s;
q^.pred:=p;
q^.next:=nil;
p:=q;
readln(s);
end;
k:=0;
p^.pred:=p^.info;
p^.next:=q^.pred;
while p<>q do begin
if (p^.pred=q^.next) and (p^.next=q^.pred)
then k:=k+1;
end;
writeln(k);
end.
VANOLORD вне форума Ответить с цитированием
Старый 17.05.2008, 17:19   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Код:
Type
  TLisp=^TNode;
  TNode=record
    pred:TLisp;
    info:string;
    next:TLisp;
  end;

Var head, p,h,q:TLisp;
    s:string;
    k:integer;
begin
   writeln('vvedi s');
   readln(s);
   new(p);
   p^.info:=s;
   p^.pred:=nil;
   p^.next:=nil;
   head := p;    {!}
   readln(s);
   while s<>'' do begin
      new(q);
      q^.info:=s;
      q^.pred:=p;
      q^.next:=nil;
      p^.next := q;  {!}
      p:=q;
      readln(s);
   end;
   k:=0;
   {p^.pred:=p^.info; !}
   {p^.next:=q^.pred; !}
   p := head^.next;         {!}
   while p <> nil do begin {!}
      if (p^.info {S(n)} = p^.pred^.info {S(n-1)}) {!}
      then k:=k+1;
      p := p^.next;      {!}
   end;
   writeln(k);
   readln;
end.
alexBlack вне форума Ответить с цитированием
Старый 17.05.2008, 23:27   #3
VANOLORD
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 22
По умолчанию

Спасибо огромное за помощь!
VANOLORD вне форума Ответить с цитированием
Старый 19.05.2008, 19:55   #4
VANOLORD
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 22
По умолчанию

А можно ещё один вопросик, вот тут if (p^.info {S(n)} = p^.pred^.info {S(n-1)}) {!} если S(n)=S(n-1), а мне надо S1=S(n). как это написать?
VANOLORD вне форума Ответить с цитированием
Старый 19.05.2008, 20:02   #5
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

В смысле сравнить с первым элементом ?

if (p^.info {S(n)} = head^.info {S(1)})
alexBlack вне форума Ответить с цитированием
Старый 19.05.2008, 20:08   #6
VANOLORD
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 22
По умолчанию

Мне надо Подсчитать кол-во верных равенств среди S1=S(n), S2=S(n-1).
Паскаль считает, только вот это S(n)=S(n-1).
например,
1 qw
2 as
3 zx
4 as
5 qw
Должно 1=5, 2=3. И вывести должно ответ 2
VANOLORD вне форума Ответить с цитированием
Старый 19.05.2008, 20:11   #7
VANOLORD
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 22
По умолчанию

да, с первым надо ,а ещё со вторым сравнить n-1, а с третьим сравнить n-2 и т.д.
VANOLORD вне форума Ответить с цитированием
Старый 19.05.2008, 20:18   #8
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Тогда нужно два цикла:

Код:
   p := head;
   while p <> nil do begin
      q := p^.next;
      while q <> nil do begin

         if (p^.info = q^.info) then begin
             writeln(p^.info, q^.info);
         end;

         q := q^.next;
      end;
      p := p^.next;
   end;
alexBlack вне форума Ответить с цитированием
Старый 19.05.2008, 20:47   #9
VANOLORD
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 22
По умолчанию

Спасибо большое за помощь. вот ещё только он выводит именно равные слова, а кол-во их не выводит, пишет 0. а мне надо именно кол-во их.
VANOLORD вне форума Ответить с цитированием
Старый 19.05.2008, 21:16   #10
VANOLORD
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 22
По умолчанию

Спасибо ещё раз большое уже все показывает и работает
VANOLORD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 20000 рублей в месяц

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить ошибку в задаче Vladislav_87 Паскаль, Turbo Pascal, PascalABC.NET 4 04.07.2008 11:27
Помогите исправить косяк в задаче на динамические переменные списки Taisja Помощь студентам 2 31.05.2008 20:49
Помогите дописать и исправить ошибку в задаче Vladislav_87 Паскаль, Turbo Pascal, PascalABC.NET 5 29.05.2008 23:14
Пожалуйста срочно помочь мне исправить ошибку в задаче Vladislav_87 Паскаль, Turbo Pascal, PascalABC.NET 8 20.05.2008 19:46
Помогите исправить ошибку Булат Общие вопросы Delphi 3 25.04.2008 09:01


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS