1 Востаннє редагувалося Меліса (10.05.2014 19:13:47)

Тема: Функція/Визначення найдовшого слова

Завдання:
Для фрагмента тексту визначити найдовше слово кожного рядка. Використати підпрограму-функцію.

Конкретне питання: Чи правильно я задаю шлях?
Вибиває помилку: 103 - файл не відкритий.

Program FUNC;
var F: text;
    j, k: byte;
function TheLongestWord (s: string): string;
const p=[' ','.',',',':',';','!','?','-','(',')','"']; {розділювачі слів}
var word, maxword: string;
    i: byte;
begin
write('-->'); readln(s);
writeln(F, s);
s:=s+' ';
word:='';
maxword:='';
for i:=1 to length(s) do
    if not (s[i] in p) then word:=word+s[i] else
       if length(word)>0 then
          begin
          if length(word)>length(maxword) then maxword:=word;
          word:='';
          end;
writeln(F,maxword,' ',length(maxword));
end;

begin
assign(F,'C:\F.txt');
rewrite(F);
write('Number of strings in text: '); readln(k);
for j:=1 to k do
close(F);
readln
END.

2

Re: Функція/Визначення найдовшого слова

Ви жодного разу не викликаєте TheLongestWord, наскільки я зрозумів ця функція мала б викликатись в циклі for j:=1 to k do, але замість цього ви в циклі закриваєте файл F. Файл закривається на першій ітерації а на наступній вилітає помилка 103

Подякували: Меліса, koala2

3

Re: Функція/Визначення найдовшого слова

Дякую.
Виправила:

for j:=1 to k do
TheLongestWord (s: string);
close(F);
readln
END.

Проте помилку все-одно вибиває.

4

Re: Функція/Визначення найдовшого слова

А ви пишіть, яку саме і в якому рядку, тоді вам буде легше допомогти.

5 Востаннє редагувалося Chemist-i (10.05.2014 20:37:30)

Re: Функція/Визначення найдовшого слова

Рядок 28-29

TheLongestWord (s: string);
->
TheLongestWord ('якийсь текст');
Подякували: Меліса1

6

Re: Функція/Визначення найдовшого слова

Koala написав:
А ви пишіть, яку саме і в якому рядку, тоді вам буде легше допомогти.

З чого висновки, що помилки в кількох рядках?
Вибиває тільки одну помилку: 103 - файл не відкритий.
Хоча судячи з Ваших слів, то мій код - суцільна помилка.

7

Re: Функція/Визначення найдовшого слова

assign(F,'C:\F.txt');
rewrite(F);

Якщо в Вас він vista+ з UAC то може не відкриватись тупо тому що вінда не дає (ну це так, просто припущення)

Подякували: Меліса1

8 Востаннє редагувалося koala (10.05.2014 21:05:23)

Re: Функція/Визначення найдовшого слова

Я писав про помилку в однині.
UPD: Прогальмумав. Так, схоже на проблеми з доступом. Яка версія Паскалю?

Подякували: Меліса1

9

Re: Функція/Визначення найдовшого слова

koala написав:

В рядку 10 ви намагаєтеся писати в невідкритий файл.

Хіба?

псевдо
FILE f;

func1
{
  writeToFile(f, something);
}

main
{
  openFile(f)
  Call(func1);
  end;
}
Подякували: koala, Меліса2

10

Re: Функція/Визначення найдовшого слова

Koala

версія - Borland Turbo Pascal 7.0

11

Re: Функція/Визначення найдовшого слова

Меліса
Спробуйте на інший диск перемістити того файла (і в коді поправити не забудьте)

Подякували: Меліса, Torbins2

12 Востаннє редагувалося koala (10.05.2014 21:42:36)

Re: Функція/Визначення найдовшого слова

У вас Windows XP чи ви його з DosBox запускаєте?

Подякували: Меліса, Torbins2

13

Re: Функція/Визначення найдовшого слова

Так, з DosBox запускаю.

14

Re: Функція/Визначення найдовшого слова

Меліса
Відкривайте файл в теці проекта

Подякували: Меліса, koala, Torbins3