Значення Str
Вираз
Результат
‘1450’
val(Str,Number,Cod)
1450 Cod=0
‘14.2Е+02’
val(Str,Number,Cod)
1420 Cod=0
‘14.5А+01’
val(Str,Number,Cod)
? Cod=5
Функції для роботи з рядками.
Lenght(St)— обчислює поточну реальну довжину в символах рядка St . Результат має цілий тип.
Copy(St,Poz,N)— копіює з Stпідрядок довжиною Nсимволів, починаючи з позиції Poz . Якщо Poz > Lenght(St) , то результатом буде пробіл; якщо Poz > 255, то виникне помилка при виконанні.
Pos(St1,St2)— виявляє першу появу в рядку St2рядка St1 . Результат має цілий тип і дорівнює номеру тієї позиції, де знаходиться перший символ рядка St1 . Якщо в St2рядок St1не знайдений, результат дорівнює 0.
UpCase(Ch)—перетворює малу літеру на велику. Параметр і результат мають літерний тип. Обробляються тільки літери латинського алфавіту.
ЗАДАЧА № 377
Умова : Нехай дано деякий текст. Обчислити, скільки разів повторюється наперед заданий символ а.
Розв ‘язання . Дня розв’язання задачі, по-перше, необхідна рядкова величина для зберігання тексту (для зберігання великого тексту можна зарезервувати масив). Для спрощення задачі будемо вважати, що текст має довжину не більше 255 символів, тобто для його зберігання достатньо одного рядка. Крім цього, нам необхідна змінна символьного типу для зберігання заданого символу а, кількість яких ми будемо обчислювати.
Оскільки рядок фактично можна вважати масивом символьних величин, для його обробки необхідно організувати цикл від першого до останнього символу рядка ( length(St)) , що буде переглядати кожен елемент рядка та порівнювати його з шуканим символом. У випадку збігу елементів, що порівнюються, лічильник збільшується на одиницю.
Програма, що реалізує описаний алгоритм, має наступний вигляд:
Program Example_377;
Uses crt;
Var і,count:word;
{і — змінна циклу, count — кількість знайдених символів}
a:char; {a — шуканий символ}
St:string; {St — даний текст}
Begin
Clrscr;
Write(‘Введіть текст: ‘);
Readln(St);
Write(‘Введіть шуканий символ: ‘);
Readln(a);
Count:=0; (Початкове значення лічильника}
For i:=1 to length(St) do
If St[i] = a Then count:=count+l;
Writeln(‘Шуканих символів в тексті ‘,count);
Readkey; {Затримка зображення на екрані}
End.
ЗАДАЧА № 381
Умова : У даному тексті замінити всі символи «:» на символи «-» і навпаки.
Розв‘язання . Для виконання заміни в тексті одного символу іншим слід знайдений символ (або групу символів) спочатку вилучити процедурою insert , а потім з тієї ж самої позиції вставити бажаний символ (або групу символів). Зверніть увагу на те, що команди розгалуження повинні бути обов’язково вкладеними, тому що якщо ми знайдемо символ «:»і виконаємо заміну, то на його місці з’явиться символ «-», який теж підлягає заміні (для символу «-» міркування будуть такими самими).
У результаті текст після закінчення роботи програми відтвориться у початковому вигляді. Програма має вигляд:
Program Example_381;
Uses crt;
Var і:word; {і - змінна циклу} St:string; {St - даний текст}
Begin
Clrscr;
Write(‘Введіть текст: ‘);
Readln(St);
For i:=1 to length(St) do
If St[i] = ‘:’ Then
Begin Delete (St, i, 1) ; Insert (‘-’St,1) ; End
Else
If St[i]=’-’ Then
begin Delete(St,i,1); Insert(‘:’,St,1); end;
Writeln(‘Результуючий рядок: ‘,St);
Readkey;
End.
ЗАДАЧА №382
Умова : У даному тексті замінити всі символи «.» на послідовність символів «...». Якщо у тексті зустрічаються підряд три крапки, то залишати їх без змін.
Розв’язання : В цій задачі після виконання замін збільшується довжина рядка, причому після шуканого символу становиться такий самий. Тому, якщо цикл організувати, як і в попередньому випадку, весь текст, починаючи з першої крапки, замшиться на крапки (подумайте чому). Тому в цій задачі доцільно скористатися циклом з передумовою, що дозволяє змінну циклу змінювати на будь-який крок (а не тільки на одиницю, як в циклі з параметром). Для того, щоб не виконувати заміну у випадку наявності трьох крапок в тексті, будемо перевіряти не тільки поточну, а й наступну за нею позицію (не забудьте при цьому про можливість виходу за межі рядка!!!). Останній символ рядка тут перевірятиметься окремо.
Читать дальше