Основы программирования на C++, PASCAL
Пример 2. Ввести символьную строку. Перевернуть (обратить) эту строку. Например, если ввели строку «abcdef», то в результате в ней должны получить «fedcba».
Идея алгоритма состоит в перестановке символов, расположенных на одинаковом расстоянии от начала и конца строки. Перебор элементов строки доходит до ее середины. Составляя подобные программы, не надо забывать, что индекс первого символа строки — 0, а индекс последнего на единицу меньше длины строки.
Строка как параметр функции. Использование строк в качестве параметра функции аналогично рассмотренному выше использованию массивов других типов. Необходимо помнить, что имя массива есть указатель на его начало. Однако для строк имеется одно существенное отличие от массивов других типов: имя строки является указателем-переменной, и, следовательно, его значение может подвергаться изменению. Стандарт Си рекомендует в заголовках функций, работающих со строками, явно использовать обозначение символьного указателя.
Пример 1. Запишем определение функции вычисления длины строки (аналог стандартной функции strlen ()).
int length(char *s)
{ int k;
for(k=0; *s++!='\0'; k++);
return k;
}
Здесь функция использует явный механизм работы с указателем. Изменение значения указателя s допустимо благодаря тому, что он является переменной. Еще раз напомним, что для числовых массивов этого делать нельзя! Если соблюдать данное ограничение и для строк, то условное выражение в операторе for следовало бы писать так: *(s+k)!='\0' или s[k]!='\0'.
Обдумайте это обстоятельство!
Пример 2. Оформим программу обращения строки в виде функции и напишем основную программу, использующую ее. Алгоритм обращения реализуем иначе, чем в рассмотренной выше программе. Для определения длины строки не будем пользоваться стандартной функцией. Для вывода строки на экран применим функцию printf() со спецификатором %s (работает аналогично функции puts()).
В результате выполнения этой программы на экране получим строку:
9 8 7 6 5 4 3 2 1 0
И снова обратим внимание на то, что здесь функция invers() работает аналогично паскалевской процедуре. Обмен параметрами через указатели имитирует обмен по имени.
Пример 3. Описать функцию вставки символа в строку