Тип STRING
Категория реферата: Рефераты по информатике, программированию
Теги реферата: информация реферат, курсовая работа по дисциплине
Добавил(а) на сайт: Лукерья.
Предыдущая страница реферата | 1 2 3 4 5 | Следующая страница реферата
END;
END.
На первый взгляд наша программа работает правильно (мы ввели фразу на русском языке и получили все слова из нее), но тестирование программы обязательно должно включать все предельные, или особенные, случаи. Введем, например, строку, не содержащую никаких слов, и программа зациклится! Это результат ошибки в первом цикле: если в тексте нет букв, все символы из него будут удалены, длина строки станет равной нулю, и в дальнейшем станет проверяться символ с номером 0, который равен #0 и, естественно, не является буквой. Еще одна ошибка подобного рода может произойти при выделении последнего слова: мы увеличиваем индекс i, пока i-й символ - буква, и в конце концов дойдем до конца строки. Но переменная s всегда содержит 255 символов, символы с номерами Length(s)+1, Length(s)+2 и т.д. существуют, и нет никаких гарантий, что они не являются русскими буквами. В этом случае мы можем получить последнее слово с "хвостом". Исправим нашу программу:
VAR s : STRING; i : Byte;
CONST Letters : SET OF Char = ['а'..'п','р'..'я','А'..'Я']; {это алфавит}
BEGIN WRITE('Введите текст '); READLN(s);
{ удалим завершающие пробелы }
WHILE NOT(s[Length(s)] IN Letters)AND(s<>'') DO Delete(s,Length(s),1);
IF s='' THEN BEGIN WRITELN('текст пуст'); Halt; END;
WRITELN('Слова текста :');
{ организуем цикл ПО СЛОВАМ }
WHILE s<>'' DO BEGIN
{ удалим лидирующие пробелы }
WHILE NOT(s[1] IN Letters) DO Delete(s,1,1);
{ найдем границу первого слова }
i:=1; WHILE (s[i] IN Letters)AND(i<=Length(s)) DO INC(i);
{ i - номер первого пробела }
Dec(i);
{ выведем слово }
WRITELN(Copy(s,1,i));
{ удалим слово из текста }
Delete(s,1,i);
END;
END.
Теперь запишем то же самое, используя функции и процедуры :
Рекомендуем скачать другие рефераты по теме: сочинение рассказ, преступление реферат.
Предыдущая страница реферата | 1 2 3 4 5 | Следующая страница реферата