Поиск адреса электронной почты в тектсовом файле - Pascal ABC
Формулировка задачи:
Пожалуйста помогите написать программу
Задание такое:
Дан текстовый файл, найти в нем все адреса эл. почт и вывести найденные/создать второй файл с найденными почтами.
Решение задачи: «Поиск адреса электронной почты в тектсовом файле»
textual
Листинг программы
uses crt; const limits = [#0..#32,',',':',';','!','?','"']; MaxWords = 100; MaxLimitWords =1000000; type TWords = array[1..MaxWords] of string[80]; AllWords = array[1..MaxLimitWords] of string[80]; var text : string[80]; words : TWords; mywords:allwords; f : textfile; nwords:word; i,count:dword; ch:char; function GetWords(s : string; var w : TWords) : Word; var i,back,n : word; begin i := 1; n := 0; while(i<=length(s)) do begin while(i<=length(s)) and (s[i] in limits) do inc(i); if i<=length(s) then begin back := i; while(i<=length(s)) and not(s[i] in limits) do inc(i); inc(n); w[n] := copy(s, back, i-back); end; end; GetWords := n; end; function CheckMail(s:string):boolean; var isvalidmail:boolean; k,i:integer; begin isvalidmail:=false; k:=0; {содержит недопустимые знаки} for i:=1 to length(s) do begin if (s[i] in ['а'..'я','А'..'Я']) then begin isvalidmail:=false; break; end; if (s[i] in ['0'..'9','a'..'z','_','.','@']) then isvalidmail:=true; if s[i]='@' then inc(k); end; {количество @ не равно одному} if k<>1 then isvalidmail:=false; { начинается со знака @ } if s[1]='@' then isvalidmail:=false; CheckMail:=isvalidmail; end; begin clrscr; assign(f,'example.txt'); reset(f); count:=0; while not eof(f) do begin readln(f,text); nwords:=getwords(text,words); for i:=1 to nwords do mywords[i+count]:=words[i]; count:=count+nwords; end; close(f); for i:=1 to count do if CheckMail(mywords[i]) then write((mywords[i]),' '); readln; end.
Объяснение кода листинга программы
uses crt;
— подключает стандартные функции и библиотекиconst limits = [#0..#32,',',':',';','!','?','
'];` — определяет допустимые символы в текстеMaxWords = 100;
— задает максимальное количество слов в текстеMaxLimitWords =1000000;
— задает максимальное количество слов во всем текстовом файлеtype TWords = array[1..MaxWords] of string[80];
— определяет массив слов с заданной длинойAllWords = array[1..MaxLimitWords] of string[80];
— определяет массив всех слов во всем текстовом файлеvar text : string[80];
— объявляет переменную для хранения текста из файлаwords : TWords;
— объявляет переменную для хранения найденных словmywords:allwords;
— объявляет переменную для хранения всех слов из файлаf : textfile;
— объявляет переменную для работы с файломnwords:word;
— объявляет переменную для подсчета количества словi,count:dword;
— объявляет две переменные для счетчикаch:char;
— объявляет переменную для хранения текущего символаGetWords(s : string; var w : TWords) : Word;
— определяет функцию для извлечения слов из строкиCheckMail(s:string):boolean;
— определяет функцию для проверки корректности адреса электронной почтыfunction CheckMail(s:string):boolean;
— вызывает функциюCheckMail
с аргументомs
begin
— начинает выполнение программыclrscr;
— очищает экранassign(f,'example.txt');
— задает имя файла для чтенияreset(f);
— сбрасывает файл на началоcount:=0;
— инициализирует счетчик количества словwhile not eof(f) do
— начинает цикл чтения файла до концаbegin
— начинает внутренний цикл чтения файлаreadln(f,text);
— читает строку из файла и сохраняет ее в переменнойtext
nwords:=getwords(text,words);
— использует функциюgetwords
для извлечения слов из строки и сохраняет их в переменнойwords
for i:=1 to nwords do
— начинает цикл сохранения найденных слов в массивеmywords
mywords[i+count]:=words[i];
— сохраняет i-ый найденный слово в массивеmywords
count:=count+nwords;
— увеличивает счетчик количества словend;
— заканчивает внутренний цикл чтения файлаclose(f);
— закрывает файлfor i:=1 to count do
— начинает цикл вывода найденных слов на экранif CheckMail(mywords[i]) then
— использует функциюCheckMail
для проверки каждого словаwrite((mywords[i]),' ');
— выводит i-ое слово на экранreadln;
— ждет ввода пользователяend.
— заканчивает выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д