Переворот строки
Перевернуть строку, т.е. последние символы должны стать первыми, а первые последними.
Описание переменных:
n – середина строки;
c – меняемый символ.
Алгоритм решения задачи:
Найти середину строки.
Перебрать символы строки от начала до ее середины:
очередной символ сохранить в переменной c;
а на его место записать противоположный с конца;
на место противоположного записать сохраненный в c.
Программа на языке Паскаль:
n := length(s) div 2;
for i := 1 to n do begin
Замена подстроки в строке
Найти в строке определенную последовательность символов и заменить ее другой.
Описание переменных:
s, s_old, s_new – исходная строка, заменяемая подстрока, вставляемая подстрока;
i – номер символа строки, с которого начинается подстрока;
l_old – длина заменяемой подстроки.
Алгоритм решения задачи:
Ввести строку, подстроку, которую требуется заменить, и подстроку, которую требуется вставить на место прежней.
Как вывести последовательность слов, но в обратном порядке?
Дана последовательность,содержащая от 1 до 30 слов,в каждом из которых от 1 до 5 строчных латинских букв;между соседними словами -запятая,за последним словом-точка. Вывести эту же последовательность слов, но в обратном порядке.
Как вывести в обрантом порядке
![]()
Строку сами сложите?
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Подскажите где ошибка в перевороте числа (Pascal ABC)
![]()
Вам надо просто вызывать функцию, а не выводить ее возвращаемое значение, которое как видим есть 0. То есть так PowerA (a,b); вместо write (PowerA (a,b)); . Если бы ваша функция набирала строку (или число), а потом возвращала результат, то вызов write (PowerA (a,b)); был бы правильным. Но у вас функция сама выводит результат по одной цифре и ничего не возвращает (точнее ничего осмысленного — в итоге возвращается ноль).
![]()
![]()
Функции обычно используются иначе.
В Pascal функция возвращает результат. Возвращает она его через специальную переменную, имя которой совпадает с именем функции (или переменная result, в fpc). Тип возвращаемого значения определяется после двоеточия в объявлении функции. У вас он integer. В функцию передаются значения, необходимые для подсчёта результата.
В вашем случае у функции должен быть один параметр — число, которое необходимо «перевернуть». И из функции необходимо вернуть перевёрнутое число. Внутри функции вывод возможен — но в практических целях это почти бессмысленно.
Если вы хотите перевернуть число таким способом — вам лучше использовать процедуру.
0 у вас в конце — это вывод write (PowerA (a,b)), функция вернула 0, а write его вывела.
Программирование. Строки и символы Pascal-Паскаль
Строка представляет собой особую форму одномерного массива символов, которая имеет существенное отличие. Массив символов имеет фиксированную длину (количество элементов), которая определяется при описании. Строка имеет две разновидности длины:
- Общая длина строки, которая характеризует размер памяти, выделяемый строке при описании;
- Текущая длина строки (всегда меньше или равна общей длине), которая показывает количество смысловых символов строки в каждый конкретный момент времени.
Строка в Паскале – упорядоченная последовательность символов. Количество символов в строке называется ее длиной. Длина строки в Паскале может лежать в диапазоне от 0 до 255. Каждый символ строковой величины занимает 1 байт памяти и имеет числовой код в соответствии с таблицей кодов ASCII.
Код ASCII (American Code for Information Interchange – Американский стандартный код для обмена информацией) имеет основной стандарт и его расширение. Основной стандарт использует шестнадцатеричные коды 00-7F, расширение стандарта – 80-FF. Основной стандарт является международным и используется для кодирования управляющих символов, цифр и букв латинского алфавита; в расширении стандарта используются символы псевдографики и буквы национальных алфавитов.
Строковая константа Паскаля – последовательность символов, заключенная в апострофы. Например, ‘строковая константа’, ‘243’. Два следующих друг за другом апострофа (») обозначают пустую строку, т.е. строку с нулевой длиной.
Описание строковой переменной Паскаля
Для описания строковых переменных в Паскале существует предопределенный тип string.
В общем виде описание строковой переменной будет выглядеть следующим образом:
Пример описания строковой переменной в Паскале:
В приведенном выше описании строковая переменная s1 может содержать не более 10 символов, переменная s2 – не более 20 символов. Если же при описании строки ее максимальная длина не указывается, то по умолчанию принимается максимально допустимая длина, равная 255 символам (переменная smax)..
Символы в строке упорядочены, каждый из них имеет порядковый номер, начиная с первого. Имеется возможность обратиться к любому элементу строки, указав его номер, так же как это делается в одномерных массивах. Например, s1[2] позволяет обратиться ко второму символу в строке s1, при этом мы можем поменять это значение, выполнив оператор присваивания s1[2]:= ‘r’, можем вывести на экран это значение или присвоить его другой переменной.
Действия со строками в Паскале
Операция слияния (сцепления, конкатенации) применяется для соединения нескольких строк в одну, обозначается знаком «+». Операция слияния применима для любых строковых выражений, как констант, так и переменных.
Операции отношения позволяют сравнивать строки на отношение равенства (=), неравенства (<>), больше (>), меньше (<), больше или равно (>=), меньше или равно (<=). В результате сравнения двух строк получается логическое значение (true или false). Сравнение строк производится слева направо посимвольно до первого несовпадающего символа, большей считается та строка, в которой первый несовпадающий символ имеет больший код в таблице кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что короткая строка меньше. Строки равны, если они имеют равную длину и соответствующие символы совпадают.
Пример действий со строками в Паскале:
‘строка'<>’строки’ (верно, т.к. не совпадают последние символы);
‘Abc'<‘abc’ (отношение истинно, т.к. код символа ‘A’ равен 65 в десятичной системе счисления, а код символа ‘a’ – 97);
‘год’>’век’ (отношение верно, т.к. буква ‘г’ в алфавите стоит после буквы ‘в’, а, следовательно, имеет больший код).
Стандартные функции для работы со строками в Паскале
Copy (S, poz, n) выделяет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – любое строковое выражение, poz, n – целочисленные выражения.
| Значение S | Выражение | Результат |
| ‘строка символов’ | Copy(S,3,3) | рок |
Concat (s1, s2. sn) выполняет слияние строк s1, s2. sn в одну строку.
| Выражение | Результат |
| Concat(‘язык’, », ‘Pascal’) | ‘язык Pascal’ |
Length(S) определяет текущую длину строкового выражения S. Результат – значение целого типа.
| Значение S | Выражение | Результат |
| ‘(а+в)*с’ | Length(s) | 7 |
Pos(subS, S) определяет позицию первого вхождения подстроки subS в строку S. Результат – целое число, равное номеру позиции, где находится первый символ искомой подстроки. Если вхождение подстроки не обнаружено, то результат функции будет равен 0.
| Значение S | Выражение | Результат |
| ‘предложение’ | Pos(‘е’, S) | 3 |
| ‘предложение’ | Pos(‘a’, S) | 0 |
Стандартные процедуры для работы со строками в Паскале
Delete (S, poz, n) удаляет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – строковая переменная (в данном случае нельзя записать никакое другое строковое выражение, кроме имени строковой переменной, т.к. только с именем переменной связана область памяти, куда будет помещен результат выполнения процедуры); poz, n – любые целочисленные выражения.
| Исходное значение S | Оператор процедуры | Конечное зн-е S |
| ‘abcdefg’ | Delete(s, 2, 3) | ‘aefg’ |
Insert(subS, S, poz) вставляет в строку S, начиная с позиции poz, подстроку subS. Здесь subS – любое строковое выражение, S – строковая переменная (именно ей будет присвоен результат выполнения процедуры), poz – целочисленное выражение.
| Исходное значение S | Оператор процедуры | Конечное зн-е S |
| ‘рис. 2’ | Insert(‘№’, S, 6) | ‘рис. №2’ |
Процедуры преобразования типов в Паскале
Str(x, S) преобразует число x в строковый формат. Здесь x – любое числовое выражение, S – строковая переменная. В процедуре есть возможность задавать формат числа x. Например, str(x: 8: 3, S), где 8 – общее число знаков в числе x, а 3 – число знаков после запятой.
| Оператор процедуры | Значение S |
| Str (sin(1):6:4, S) | ‘0.0175’ |
| Str (3456, S) | ‘3456’ |
Val(S, x, kod) преобразует строку символов S в число x. Здесь S – строковое выражение, x – числовая переменная (именно туда будет помещен результат), kod – целочисленная переменная (типа integer), которая равна номеру позиции в строке S, начиная с которой произошла ошибка преобразования, если преобразование прошло без ошибок, то переменная kod равна 0.
| Тип X | Оператор процедуры | Значение X | Значение kod |
| Real | Val(‘12.34’, x, kod) | 12.34 | 0 |
| Integer | Val(‘12.34’, x, kod) | 12 | 3 |
Программирование
Исходники Pascal (127)
Справочник
Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту