Примеры программ работы со строковыми переменными
Программа 1. Пусть требуется разработать программу, которая во введенном слове подсчитывает число букв "а" и заменяет их буквами "б". В реализации данной программы разработаем процедуру ChangeChar, в которой будем просматривать строку с целью поиска позиции буквы "а". Это можно организовать с помощью цикла, используя while и стандартную функцию Pos('a', S). Как только функция Pos обнаруживает первое появление в строке S подстроки "а", она возвращает результат — номер позиции буквы "а". Счетчик найденных букв "а" увеличивается на единицу, а в эту позицию вписывается буква "б" и т. д., пока в строке есть буквы "а". Текст программы может выглядеть следующим образом: program Change_Letter; {Подсчет и замена букв "а" на "б"} Var S: String; procedure ChangeChar(var S: string); {Процедура замены буквы "а" на "б"} Var N: byte; begin N:=0; {Обнуление числа букв "а"} While PoS('a', S) > 0 do {Если найдена буква "а", то} begin N:=N+1; {Увеличить счетчик букв "а" на 1} S[Pos('a', S)]:= 'б'; {Записать в позицию буквы "а" букву "б"} end; Writeln ('В слове было ',N, ' букв "а" '); end; begin {Основная программа} Write('Введите исходную строку: '); Readin (S); ChangeChar(S); {Вызов процедуры замены "а" на "б"} Writeln('Получилась строка ', S); end. Программа 2. Составить программу, которая запрашивает две строки по четыре символа, состоящие из цифр. Если в строках введены не цифры, выдать сообщение и прервать работу программы. Программа склеивает введенные строки, затем преобразует исходные строки в числа, подсчитывает их сумму, преобразует результат в строку и печатает строки, полученные в результате склеивания и преобразования суммы чисел в строку.
Действие программы можно представить в виде трех самостоятельных фрагментов: ввод первой и второй строк и преобразование их в число, вывод на экран результата склеивания строк и суммирования чисел. Вывод на экран результатов организуем с помощью стандартных процедур вывода Writeln, а для ввода строк и преобразования их в числа создадим процедуру Inp_Str. Для передачи данных между процедурой и основной программой введем формальные параметры-переменные S типа String и Х типа Integer. Для преобразования введенной строки в число применим стандартную функцию Val, а для анализа операции преобразования строки в число введем локальную переменную Cod целого типа. После преобразования строки в число проверим значение переменной Cod, если оно не равно 0, то в строке не все символы являются цифрами. Значение Cod укажет позицию первого символа в строке, не являющегося цифрой. В этом случае напечатаем на экране сообщение об ошибке и. укажем позицию неверно введенного символа в строке, после чего прервем работу программы, используя стандартную процедуру Halt. Получим следующий текст программы: program Demo_Val_Str; Var Sl, S2: String; X1, X2: Integer; (Процедура ввода строки цифр и преобразования строки в число} procedure Inp_Str (var S: string; var X:integer); Var Cod: Integer; {Результат преобразования строки в число} begin Write('Введите строку цифр'); Readln(S); Val(S, X, Cod); {Преобразование строки S в целое число X} if Cod <> 0 then {Если не все символы в строке являются цифрами} begin WriteLn('Ошибка! В позиции',Cod,'введенной строки не цифра'); Halt(1); {Прерывание программы} end; end; Begin {Начало основной программы} Inp_Str(Sl,Xl); {Вызов процедуры ввода строки с фактическими параметрами-переменными S1,X1} Inp_Str(S2,X2); {Вызов процедуры ввода строки с фактическими параметрами-переменными S2,X2} Writeln('Результат склеивания строк -> ', Concat(Sl,S2)); Writeln('Сумма введенных чисел= ',Х1+Х2); end. Программа 3. Составить программу, определяющую, является ли введенное слово перевертышем. Перевертышем называется слово, которое одинаково читается как сначала, так и с конца, например: шалаш, казак.
Как видно из определения, для выяснения, является ли слово перевертышем, необходимо сравнивать 1-й и последний символ в строке, 2-й и предпоследний, 3-й и предпредпоследний символ, и т. д. до середины слова. Если в процессе сравнения будет установлено отличие сравниваемых символов, т. е. выясняется, что слово читается слева направо иначе, чем справа налево, значит можно сделать вывод, что это слово не является перевертышем. Если в процессе сравнения не будет выявлено отличие сравниваемых символов, значит это слово — перевертыш. Введем следующие переменные: для хранения слов — Word типа String с максимальным размером слов 30 символов и переменную I целого типа, указывающую номер позиции сравниваемого символа от начала строки. Текст программы: program Perev_Word; {Является ли введенное слово перевертышем?} Var I: byte; Word: string[30]; Begin Write('Введите слово '); Readln(Word); {Проверяем символы поочередно от начала до середины слова} for I:=1 to Trunc (Length (Word)/ 2) do begin {Если соответствующие символы не одинаковы} if Word[I]<>Word[Length(Word)-I+1] then begin Writein (' Неперевертыи'); exit {Выход из цикла и завершение программы, дальше не имеет смысла сравнивать } end; end; Writeln (' Перевертыш'); end. Программа 4. Составить программу, которая обращает введенное слово, т. е. переставляет символы в слове в обратном порядке, например: Петя — ятеП, мама — амам, про-грамма — аммаргорп. Алгоритм обращения слова можно представить в виде следующей циклической процедуры обмена соответствующих символов: значение первого символа слова запоминается в некоторой переменной символьного типа Ch, затем на место первого символа записывается значение последнего символа, а на его место записывается значение первого символа, хранимое в переменной Ch, после этого аналогично выполняется обмен второго и предпоследнего символа, третьего и предпредпоследнего и т. д., пока не дойдем до середины слова. Далее обмен продолжать не нужно, иначе символы опять займут прежние места. Исходя из этих рассуждений, введем следующие переменные: для хранения слова Word типа String с максимальным размером слов 30 символов и переменную I целого типа, указывающую номер позиции сравниваемого символа от начала строки, а также символьную переменную Ch для временного хранения значения символа при обмене.
Текст программы может выглядеть так: program Obr_Word; Var I: byte; Ch: char; Word: String[30]; Begin Write(' Введите слово '); Readln(Word); {Перебирая символы поочередно от начала до середины слова} for I:=l to Trunc(Length (Word)/2) do begin {Обмениваем соответствующие символы} Ch:=Word[I]; Word[I]:=Word[Length(Word)-I+1]; Word[Length(Word)-I+1]:=Ch; end; Write('Получилось слово ',Word); end.
Читайте также: Cхема работы механизма репликации ДНК Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|