Как перевернуть строку в паскале
Перейти к содержимому

Как перевернуть строку в паскале

  • автор:

Переворот строки

Перевернуть строку, т.е. последние символы должны стать первыми, а первые последними.

Описание переменных:

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 строчных латинских букв;между соседними словами -запятая,за последним словом-точка. Вывести эту же последовательность слов, но в обратном порядке.

Как вывести в обрантом порядке

Kromster's user avatar

Строку сами сложите?

Alekcvp's user avatar

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Подскажите где ошибка в перевороте числа (Pascal ABC)

VladD's user avatar

Вам надо просто вызывать функцию, а не выводить ее возвращаемое значение, которое как видим есть 0. То есть так PowerA (a,b); вместо write (PowerA (a,b)); . Если бы ваша функция набирала строку (или число), а потом возвращала результат, то вызов write (PowerA (a,b)); был бы правильным. Но у вас функция сама выводит результат по одной цифре и ничего не возвращает (точнее ничего осмысленного — в итоге возвращается ноль).

kot-da-vinci's user avatar

RussCoder's user avatar

Функции обычно используются иначе.

В 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)

Справочник

Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *