IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Обработка текстовой на языке Паскаль, Ваши критические коментарии, советы.
IKh
сообщение 27.05.2009 16:21
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Здравствуйте.

Поставлена учебная задача обработки текстовой информации на языке Паскаль со следующими условиями.

Удалить из заданного в программе текста все символы, не являющиеся буквами латинского алфавита, подсчитать число вхождений каждой буквы латинского алфавита в введенном тексте.

Ниже приведен текст моей программы для этой решения задачи. Так как я начинающий и это моя первая программа, то для меня важно и хотелось бы знать ваши критические замечания и советы.

Текст программы



program Task5;
uses
crt;
var
indata:string; {Вводимая строка символов}
outdata:string; {Строка символов латинского алфавита определенных из введеных}
exit:boolean; {Условие завершения работы}

{Описание процедуры определения символов латинского алфавита}
procedure filter (X:string; var Y:string);
var
i:integer; {Параметр цикла определяемый длиной строки}
stringlength:integer; {Длина строки введенных симолов}
begin
stringlength:=length(X); {Определяем число введенных символов}
Y:=''; {Удаляем данные из переменной, т.к. переменная переменной передается в процедуру но не изменяется}
for i:=1 to stringlength do {Определяем цикл с параметром т.к. известо число шагов цикла}
if (ord(X[i])>=65)and(ord(X[i])<=90) {Если порядковое значение кода ASCII введенного символа принадлежит}
or {к множеству порядковых значений кода ASCII символов латинского алфавита}
(ord(X[i])>=97)and(ord(X[i])<=122) {(от 65 до 90 - заглавные буквы; от 97 до 122 - прописные буквы), то символ}
then Y:=Y+X[i]; {записывается в выходную переменную Y строкового типа.}
end;

{Описание процедуры подсчета числа раз введения символа латинского алфавита}
procedure counter (X:string);
var
i:integer; {Параметр цикла определяемый длиной строки}
stringlength:integer; {Длина строки введенных симолов}
number:integer; {Число раз ввода символа}
symbol:char; {Символ определяемого числа раз ввода}
A:char; {Служебная переменная используется для перезаписи элемента в конец строки}
begin
stringlength:=length(X); {Определяем общее число символов}
while stringlength>0 do {Определяем цикл числа раз подсчета ввода символов}
begin
number:=0; {Устанавливаем счетчик ввода символа в 0}
symbol:=X[1]; {Получаем значение первого символа в строке}
for i:=1 to stringlength do {Определяем цикл числа раз ввода символа}
begin
if symbol=X[1] then {Проверяем равенство символа с первым элементом строки}
begin {Условие проверки истинно для всех символов при первой проверке}
number:=number+1; {Увеличиваем счетчик числа раз ввода символа}
delete(X,1,1); {Удаляем первый символов из строки символов}
stringlength:=length(X); {Определяем число оставшихся символов в строке}
end
else {Если подсчитываемый символ не равен следующему "первому" символу строки}
begin
A:=X[1]; {Присваеваем переменной значение следующего "первого" символа строки}
delete(X,1,1); {Удаляем следующий "первый" символ из строки символов}
X:=X+A; {Записсываем значение переменной в конец строки}
end;
end;
writeln('Символ ',symbol,' введен ',number,' раз/раза');{Выводим колличество раз ввода символа и символ}
end;
end;
begin
clrscr;
writeln('Для продолжения нажмите любую кнопку. Для выхода Esc');
if ord(readkey)=27 then halt; {Условие продолжения или выхода из программы}
repeat {Определяем цикл повторного выполнения программы}
clrscr;
writeln('Введите текст');
readln(indata);
writeln(#10#13,'Общее число введенных симолов ',length(indata));
filter(indata,outdata); {Вызываем процедуру выбора символов латинского алфавита}
if length(outdata)>0 then {Определяем наличие символов латинского алфавита}
begin
writeln(#10#13,'Латинские символы введены следующее число раз:',#10#13);
counter(outdata) {Вызываем процедуру подсчета числа раз ввода символа}
end
else
writeln('В введеной строке латинских символов символов нет');
{clrscr; {Очищаем экран}
writeln(#10#13,'Для продолжения нажмите любую кнопку. Для выхода Esc');
exit:=ord(readkey)=27; {Определяем условие повторного выполнения программы или окончание работы}
until exit;
end.




 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.06.2025 0:10
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"