Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program Words;
- Uses
- System.SysUtils;
- Type
- TBoolean = Array Of Boolean;
- Procedure OutputTask();
- Begin
- Writeln('Данная программа считает количество слов в заданной строке и находит самое длинное слово.');
- End;
- Procedure ChooseInput(var IsFromFile : Boolean);
- Var
- Num : Integer;
- IsCorrect : Boolean;
- Begin
- Repeat
- IsCorrect := True;
- Writeln('Выберите, откуда вводить данные: 0, если с консоли; 1, если с файла.');
- Try
- Readln(Num);
- Except
- IsCorrect := False;
- End;
- If ((Not IsCorrect) Or ((Num <> 0) And (Num <> 1))) Then
- Begin
- IsCorrect := False;
- Writeln('Ошибка ввода! Повторите попытку.');
- End;
- Until IsCorrect;
- IsFromFile := (Num = 1);
- End;
- Function ChoosePath() : String;
- Var
- Path : String;
- IsCorrect : Boolean;
- InputFile : TextFile;
- Begin
- Begin
- Repeat
- Writeln('Введите путь к файлу для ввода информации: ');
- IsCorrect := True;
- Readln(Path);
- Try
- AssignFile(InputFile, Path);
- Reset(InputFile);
- Except
- IsCorrect := False;
- End;
- If (Not IsCorrect) Or (Length(Path) < 5) Then
- Begin
- IsCorrect := False;
- Writeln('Ошибка ввода! Повторите попытку.');
- End
- Else
- Begin
- If ((Path[High(Path)] <> 't') And (Path[High(Path) - 1] <> 'x') And (Path[High(Path) - 2] <> 't') And (Path[High(Path) - 3] <> '.')) Then
- Begin
- IsCorrect := False;
- Writeln('Ошибка ввода! Повторите попытку.');
- End;
- End;
- Until IsCorrect;
- End;
- CloseFile(InputFile);
- ChoosePath := Path;
- End;
- Procedure InputFromConsole(var Str : String);
- Var
- I : Integer;
- IsCorrect : Boolean;
- Begin
- Repeat
- IsCorrect := False;
- Writeln('Введите строку: ');
- Readln(Str);
- For I := 1 To High(Str) Do
- Begin
- If (Str[I] <> ' ') Then
- IsCorrect := True;
- End;
- If (Not IsCorrect) Or (Length(Str) < 1) Then
- Begin
- IsCorrect := False;
- Writeln('Ошибка ввода! Повторите попытку.');
- End;
- Until (IsCorrect);
- End;
- Procedure InputFromFile(var Str : String);
- Var
- Path : String;
- InputFile : TextFile;
- IsCorrect : Boolean;
- I : Integer;
- Begin
- Writeln('При записи из файла учтите, что в файле нужные данные должны быть записаны на первой строке.');
- Path := ChoosePath();
- AssignFile(InputFile, Path);
- Reset(InputFile);
- Readln(InputFile, Str);
- IsCorrect := False;
- For I := 1 To High(Str) Do
- Begin
- If (Str[I] <> ' ') Then
- IsCorrect := True;
- End;
- If (Not IsCorrect) Or (Length(Str) < 1) Then
- Begin
- Writeln('Ошибка ввода! Введите нужную строку с клавиатуры.');
- InputFromConsole(Str);
- End;
- End;
- Function InputString(IsFromFile : Boolean) : String;
- Var
- Str : String;
- Begin
- If (IsFromFile) Then
- InputFromFile(Str)
- Else
- InputFromConsole(Str);
- InputString := Str;
- End;
- Function ChoosePathForOutput() : String;
- Var
- Path : String;
- IsCorrect : Boolean;
- OutputFile : TextFile;
- Begin
- Begin
- Repeat
- Writeln('Введите путь к файлу для вывода информации: ');
- IsCorrect := True;
- Readln(Path);
- Try
- AssignFile(OutputFile, Path);
- Reset(OutputFile);
- Except
- IsCorrect := False;
- End;
- If (Not IsCorrect) Or (Length(Path) < 5) Then
- Begin
- IsCorrect := False;
- Writeln('Ошибка ввода! Повторите попытку.');
- End
- Else
- Begin
- If ((Path[High(Path)] <> 't') And (Path[High(Path) - 1] <> 'x') And (Path[High(Path) - 2] <> 't') And (Path[High(Path) - 3] <> '.')) Then
- Begin
- IsCorrect := False;
- Writeln('Ошибка ввода! Повторите попытку.');
- End;
- End;
- Until IsCorrect;
- End;
- CloseFile(OutputFile);
- ChoosePathForOutput := Path;
- End;
- Procedure OutputAnswerInFile(LongestWord : String; Num : Integer);
- Var
- OutputFile : TextFile;
- Path : String;
- Begin
- Path := ChoosePathForOutput();
- AssignFile(OutputFile, Path);
- Rewrite(OutputFile);
- Writeln(OutputFile, 'Самое длинное слово среди заданной строки: ', LongestWord);
- Writeln(OutputFile, 'Количество слов в заданной строке: ', Num);
- CloseFile(OutputFile);
- Writeln('Данные успешно записаны в файл!');
- End;
- Procedure OutputAnswer(LongestWord : String; Num : Integer);
- Begin
- Writeln('Самое длинное слово среди заданной строки: ', LongestWord);
- Writeln('Количество слов в заданной строке: ', Num);
- OutputAnswerInFile(LongestWord, Num);
- End;
- Function CountWordsAmount(Str : String) : Integer;
- Var
- Num : Integer;
- I : Integer;
- Word : String;
- Begin
- Num := 0;
- Word := '';
- For I := 1 To High(Str) Do
- Begin
- If (Str[I] <> ' ') Then
- Begin
- Word := Word + Str[I];
- End
- Else
- Begin
- If (High(Word) > 0) Then
- Inc(Num);
- Word := '';
- End;
- End;
- If (Str[High(Str)] <> ' ') Then
- Inc(Num);
- CountWordsAmount := Num;
- End;
- Function FindLongestWord (Num : Integer; Str : String) : String;
- Var
- Words : Array Of String;
- I, NumOfWord : Integer;
- Word : String;
- LongestWord : String;
- Begin
- SetLength(Words, Num);
- NumOfWord := 0;
- Word := '';
- For I := 1 To High(Str) Do
- Begin
- If (Str[I] <> ' ') Then
- Begin
- Word := Word + Str[I];
- End
- Else
- Begin
- If (High(Word) > 0) Then
- Begin
- Words[NumOfWord] := Word;
- Inc(NumOfWOrd);
- End;
- Word := '';
- End;
- End;
- LongestWord := '';
- For I := 0 To High(Words) Do
- Begin
- If (Length(Words[I]) > Length(LongestWord)) Then
- LongestWord := Words[I]
- End;
- FindLongestWord := LongestWord;
- End;
- Var
- Str : String;
- IsFromFile : Boolean;
- Errors : TBoolean;
- AmountOfWords : Integer;
- LongestWord : String;
- Begin
- OutputTask();
- ChooseInput(IsFromFile);
- Str := InputString(IsFromFile);
- AmountOfWords := CountWordsAmount(Str);
- LongestWord := FindLongestWord(AmountOfWords, Str);
- OutputAnswer(LongestWord, AmountOfWords);
- Readln;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement