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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 26.04.2014, 16:40   #1
Тетрадь
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 37
По умолчанию Помощь в доработке программы. Паскаль. Файлы

Нужно подсчитать слова перевертыши.
Задание на текстовые файлы.Паскаль АBC
Код:
program pro2;
uses op, obrabotki;
type
f:text;
st:string;
begin
assign(f,'in.txt');
     kol(st,k);
     writeln('Перевертышей: ', k)
end.
end.
Код:
unit obrabotki;
interface
function per(p: string): integer;
procedure kol(st: string; var k:integer);

implementation
function per(p: string): integer;
var i: integer;
begin
  per := 1;
  for i := 1 to length(p) div 2 do
                  if p[i] <> p[length(p) - i + 1] then per := 0;

end;
procedure kol(st: string; var k:integer);
var
   i: integer; pp:string;
begin
assign(f,'in.txt');
reset(f);
 k := 0;
 i:=1;
 while NOT(SEEKEOF(st)) do begin
 while i<=length(st) do
 begin
       if st[i]<>' '  then begin   pp :='';
                                   while st[i]<>' ' do begin pp:=pp+st[i];i:=i+1 end;
                                   k := k + per(pp);
                           end;
       i:=i+1;
 end;

end;
close(f);
end.
Код:
unit op;
interface
var
f:text;
st:string;
implementation
end.
in.txt
Тетрадь вне форума
Старый 26.04.2014, 16:55   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

А что кодом не так? Синтаксические ошибки? Или еще что-то?

while NOT(SEEKEOF(st)) do begin
Так нельзя, st типа string
Нужно
While not eof(f) do

Последний раз редактировалось ZX Spectrum-128; 26.04.2014 в 16:58.
ZX Spectrum-128 вне форума
Старый 26.04.2014, 17:04   #3
Тетрадь
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 37
По умолчанию

Неизвестный идентификатор f
Тетрадь вне форума
Старый 26.04.2014, 18:01   #4
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

потому что вы f в type запихали, а надо в var
ZX Spectrum-128 вне форума
Старый 26.04.2014, 18:42   #5
Тетрадь
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 37
По умолчанию

Все равно не работает. Не могу разобрать ошибку
Тетрадь вне форума
Старый 26.04.2014, 19:02   #6
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Код:
while NOT EOF(f) do 
begin
 readln(f,st); // из файла кто читать будет?
 while i<=length(st) do //читаем до конца строки, которой нет

Последний раз редактировалось ZX Spectrum-128; 26.04.2014 в 19:59.
ZX Spectrum-128 вне форума
Старый 26.04.2014, 20:08   #7
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Код:
program pro2;
uses op, obrabotki;
var
  k:integer;
begin
  kol(st,k);
  writeln('Перевертышей: ', k)
end.
end.
Код:
unit op;
interface
var
  f:text;
  st:string;
implementation
end.
Код:
unit
  obrabotki;

interface

function per(p: string): integer;
procedure kol(st: string; var k:integer);

implementation
uses
  op;
function per(p: string): integer;
var
  i: integer;
begin
  per := 1;
  for i := 1 to length(p) div 2 do
    if p[i] <> p[length(p) - i + 1] then per := 0;
end;

procedure kol(st: string; var k:integer);
var
  i: integer; pp:string;
begin
  assign(f,'in.txt');
  reset(f);
  k := 0;
  i:=1;
  while NOT EOF(f) do
    begin
      readln(f,st);
      st:=st+' ';
      while i<=length(st) do
        begin
          if st[i]<>' '  then
            begin
              pp :='';
              while st[i]<>' ' do
                begin
                  pp:=pp+st[i];
                  i:=i+1
                end;
                k := k + per(pp);
            end;
          i:=i+1;
     end;
  end;
  close(f);
end;
end.

Последний раз редактировалось ZX Spectrum-128; 26.04.2014 в 20:09. Причина: Чтоб я еще раз взялся за такой код! Уфффф :)
ZX Spectrum-128 вне форума
Старый 26.04.2014, 20:49   #8
Тетрадь
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 37
По умолчанию

Спасибо большое)
Тетрадь вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен спец по доработке программы в скриптах parhomiy JavaScript, Ajax 3 06.02.2013 21:25
доработке или создания новой программы для досок объявлений pro100_ya Фриланс 2 18.04.2011 17:59
Необходима помощь в доработке программы... hen Помощь студентам 3 02.06.2009 15:37
Паскаль. Помощь в написании программы на матрицы. Aslan009 Помощь студентам 2 17.11.2007 08:25