2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Помогите найти ошибку в программе(Pascal)
Сообщение13.01.2010, 00:12 
Аватара пользователя


14/12/09
10
Задание:
Вводится текст и программа должна выводить на экран все слова, которые состоят с 5-ти букв.
Вот моя программа:

Program Text;
uses crt;
Var St,st1 : string;
k,n,p : byte;
begin
clrscr;
Writeln('Vvedite text');
Readln(St);
n:=length(St);
k:=0;
St1:=Copy(St,1,6);p:=0;
repeat
If St1[5]<>' 'then
If St1[6]=' ' then writeln('Slovo:',st1);
Delete(St,1,p);
p:= pos(' ',st);
St1:=copy(st,p+1,p+6);
until keypressed;
readln;
end.


Но программа просто выводит на экран все веденные слова и я не могу понять в чем состоит моя ошибка...Помогите, очень прошу.

 Профиль  
                  
 
 Re: Помогите найти ошибку в программе(Pascal)
Сообщение13.01.2010, 00:51 
Заслуженный участник


09/08/09
3438
С.Петербург
Понять, что Вы пытаетесь сделать достаточно сложно, поэтому:
1. Воспользуйтесь тегом code или подсветкой синтаксиса для форматирования исходного текста.
2. Приведите полное условие задачи.
3. Попробуйте словами объяснить как Вы пытаетесь эту задачу решить.
4. Объясните назначение всех переменных
5. Попробуйте вручную пройти по своей программе при условии, что введённая строка равна, например, '123 34567 89'.

 Профиль  
                  
 
 Re: Помогите найти ошибку в программе(Pascal)
Сообщение13.01.2010, 08:29 
Заслуженный участник


11/05/08
32166
Igor в сообщении #279963 писал(а):
If St1[5]<>' 'then
If St1[6]=' ' then writeln('Slovo:',st1);

Вообще ничего непонятно. Почему опрашиваются ровно 5-й и ровно 6-й символы? И при чём тут keypressed?...

Стандартный алгоритм:
Код:
Очищаем буферное слово;
Устанавливаем индексную переменную на начало текста;
Пока не конец текста:
    - пока не конец текста и текущий символ пробел,
      сдвигаем индекс в тексте на 1 вправо;
    - пока не конец текста и текущий символ не пробел,
      дозаписываем этот символ  в буферное слово и
      сдвигаем индекс в тексте на 1 вправо;
    - если в буферном слове ровно 5 символов, выводим его;
    - очищаем буферное слово.

 Профиль  
                  
 
 Re: Помогите найти ошибку в программе(Pascal)
Сообщение14.01.2010, 14:11 


13/09/09
72
Вот человек уже вторую или третью тему в этом разделе создает и каждый раз ему говорят оформить текст кода в тэг [CODE]. Но естественно новая тема, и опять :?

 Профиль  
                  
 
 Re: Помогите найти ошибку в программе(Pascal)
Сообщение12.03.2010, 22:35 


04/03/09
91
Код:
If St1[5]<>' 'then
If St1[6]=' ' then writeln('Slovo:',st1);

Igor
самое удивительное, если будете продолжать пользоваться атким способом определения длины, то можете сильно ошибиться ;). Не факт, что в обращаемой ячейке массива не будет мусора :)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group