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

0 / 0 / 0

Регистрация: 16.04.2020

Сообщений: 1

1

Как найти последний символ строки?

16.04.2020, 10:01. Показов 3133. Ответов 2


Студворк — интернет-сервис помощи студентам

Помогите пожалуйста, пишу программу, но забыл, как найти последний символ строки.



0



5056 / 2630 / 2345

Регистрация: 10.12.2014

Сообщений: 9,993

16.04.2020, 10:12

2

var последний_символ_строки := строка.Last;



0



mr-Crocodile

2878 / 1533 / 619

Регистрация: 19.03.2019

Сообщений: 5,118

16.04.2020, 10:42

3

ну или по старинке (для PascalABC.NET это, скорее всего очень неоптимально)

Pascal
1
if Length(S)>0 then LastChar := S[ Length(S) ];



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

16.04.2020, 10:42

3

Формулировка задачи:

Дана задача, где пользователь вводит строку. Нужно, чтобы строка не начиналась и не заканчивалась пробелами.
При вводе предложения я проверяю первый символ на правильность ввода обращаясь непосредственно к первому символу таким образом:

Как мне обратиться к последнему символу, если я не могу знать сколько вообще знаков введет пользователь и можно ли проверку на правильность записать более коротким кодом?

Код к задаче: «Как обратиться к последнему символу в строке (string)?»

textual

  while (st[1]=' ') or (st[length(st)]=' ') do

Полезно ли:

8   голосов , оценка 3.750 из 5

IPB

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется …
2. Все тексты программ должны помещаться в теги [code=pas][/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. «FAQ«, если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение — только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы — на PM!
6. Одна тема — один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Последний символ ?

сообщение 29.11.2003 4:22

Сообщение
#1

Гость



HI !

У меня такая проблема :

«Напишите программу, присваивающую переменной Char последний символ введенной строки. «

Я думаю , что это надо делать так, Прочитать строку , узнать количество символов…..
Но как вывести именно последний ? Первый понятно как, а вот поледний ?
Возможно ли пустить цикл

For I:=1 to Length(S) do ;

И как из этого значения взять последний символ ? С:=S[ Последний символ];

 К началу страницы 

+ Ответить 

SKVOZNJAK

сообщение 29.11.2003 6:53

Сообщение
#2


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +



Если не нравится гото, придумай сам, как от него избавиться ;D

Код

PROGRAM STROKA;
VAR A: STRING[255];
   Q: INTEGER;
LABEL  1,2;

BEGIN
FOR Q:=1 TO 255 DO A[Q]:=CHR(1);
WRITELN(»);
WRITELN(‘ЖИЗНЬ, ИЛИ КОШЕЛЕК!!! ВВОДИ СТРОКУ!’);
READ(A);
FOR Q:=1 TO 255 DO IF ORD(A[Q])=1 THEN GOTO 1;
GOTO 2;
1: DEC(Q);
2: WRITELN(»);
IF Q>0 THEN WRITELN(A[Q]);
END.

Сообщение отредактировано: volvo — 17.12.2004 20:31

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

GLuk

сообщение 29.11.2003 12:34

Сообщение
#3


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +



Зачем ты так SKVOZNJAK?? :D Это же жестоко!!

Код

Program ArrayWithoutZero;
Uses
    Crt;
Const
     S = ‘The last char is D’;
Function GetLastChar(S:String):Char;
begin
     GetLastChar:=S[Length(S)];
end;
Begin
     ClrScr;
     Write(GetLastChar(S));
End.

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

{ Guest }

сообщение 29.11.2003 12:41

Сообщение
#4

Гость



2 SKVOZNJAK

2 GLuk

Большое спасибо ! Вечером проверю )!

 К началу страницы 

+ Ответить 

APAL

сообщение 1.12.2003 14:35

Сообщение
#5


Смотрю…
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +



Мда….   smile.gif

———————

Если что-то не делает того, что вы запланировали ему делать — это еще не означает, что оно бесполезно.
———————
Прежде, чем задать вопрос — Правила :: FAQ :: Поиск

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)

Пользователей: 0

500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают

Связь с администрацией: bu_gen в домене octagram.name

Редактировать

Символы и основные операции над ними

Символы имеют тип char, занимают 2 байта и хранятся в кодировке Unicode (UTF-16).

var c1: char;
var c2 := 'z';

Для преобразования символа c в код используется функция Ord(c), для обратного преобразования кода i в символ используется функция Chr(i).

begin
  var c := 'ю';
  Print(Ord(c)); // 1102
  Print(Chr(1102)); // ю
end.

Классический способ определить символ, следующий за данным в кодовой таблице, — это преобразовать символ в код, прибавить к коду число и потом преобразовать полученный код снова в символ:

Аналогично определяется предыдущий символ

Методы типа char

Методы, встроенные в тип char, делятся на две категории:

  • проверяющие, принадлежит ли символ указанной категории: c.IsDigit, c.IsLetter, c.IsLower, c.IsUpper
  • преобразующие символ: c.ToUpper, c.ToLower, c.ToDigit.

Отметим, что c.IsDigit эквивалентно (c >= '0') and (c <= '9') и эквивалентно c in '0'..'9'
Для c.IsLower, c.IsLower, c.IsUpper такой простой аналогии нет. Дело в том, что в этих методах проверяются все символы, являющиеся буквами в каком-то алфавите народов мира (в частности, английские и русские)

Отметим также, что c.IsLower возвращает True только если это буква в нижнем регистре — для не букв возвращается False.

Строки

Введение

Отметим, что для строк имеется много операций и методов, не все из которых мы рекомендуем для школьников.

Основная причина — многие методы строк в .NET считают, что строки индексируются с нуля, а в Паскале строки индексируются с 1.

Для устранения этой дилеммы при работе со школьниками мы не используем методы строк, которые работают с индексами, индексируемыми с нуля. Для них существуют эквивалентные замены внешними функциями, которые предполагают, что строки индексируются с 1.

Индексация строк

Строки в Паскале индексируются с 1. К символам строк можно обращаться по индексам — s[i].

Например:

begin
  var s: string;
  s := 'тор';
  Print(s[1],s[2],s[3]);
end.

Символы строк можно менять:

begin
  var s := 'пир';
  s[1] := 'м';
  Print(s); // мир
end.

Можно использовать индексацию с конца: s[^i] обозначает i-тый символ с конца

begin
  var s := 'мир';
  s[^1] := 'г';
  Print(s); // миг
end.

Циклы по строкам

begin
  var s := 'привет';
  for var i:=1 to s.Length do
    s[i] := Chr(Ord(s[i])+1);
  Print(s);
end.  
foreach var c in s do
  Print(c);  

Операции +, *n и in

Строки можно складывать и умножать на целое положительное число

Пример. Генерация строки ‘abcdefghijklmnopqrstuvwxyz’

Идея. Начать с пустой строки. Всякий раз в цикле добавлять к строке символы от ‘a’ до ‘z’

Код

begin
  var s := '';
  for var c := 'a' to 'z' do
    s += c;
end.  

Методы Count, CountOf, Where

Чтобы посчитать количество символов в строке, удовлетворяющих определённому условию, используется метод Count. Если нужно посчитать, сколько раз встречается определенный символ, используется более простой метод CountOf

begin
  var s := 'абракадабра';
  s.CountOf('а').Print;
  s := 'а123бр45а67к89адабра';
  s.Count(c -> c.IsDigit).Print;
end.  

Если в строке надо отфильтровать только определенные символы, используется метод Where. Он возвращает последовательность символов, которую можно назад преобразовать к строке, используя метод JoinToString:

begin
  var s := 'а123бр45а67к89адабра';
  s := s.Where(c -> c.IsLetter).JoinToString;
end.  

s.ToWords и разбиение строки на слова

Метод s.ToWords разбивает строку на массив слов, используя пробел в качестве разделителя. Полученный массив можно преобразовать и слить в строку, используя метод JoinToString:

begin
  var s := 'как однажды жак звонарь головой сломал фонарь';
  var a := s.ToWords;
  Sort(a);
  s := a.JoinToString
end.  

По умолчанию JoinToString разделяет слова пробелами

Функция Pos и процедуры Delete, Insert

Pos(subs,s) возвращает позицию первого вхождения подстроки subs в сторке s или 0 если подстрока не найдена

Pos(subs,s,from) начинает искать подстроку в строке с позиции from.

Следующий код выводит позиции всех вхождений s1 в s:

begin
  var s := 'абракадабра';
  var s1 := 'бра';
  var p := Pos(s1,s);
  while p>0 do
  begin
    Print(p);
    p := Pos(s1,s,p+s1.Length);
  end;
end.

tydfrew3

+30

Решено

6 лет назад

Информатика

10 — 11 классы

Дана строка. Вывести первый, последний и средний (если он есть)) символы.НАПИСАТЬ ПРОГРАММУ В ПАСКАЛЕ.ПОЖАЛУЙСТА ОЧЕНЬ НАДО

Смотреть ответ

1


Ответ проверен экспертом

4
(5 оценок)

3

petyaGavrikov

petyaGavrikov
6 лет назад

Светило науки — 5869 ответов — 21974 помощи

var s:string; l:integer;
begin
write(‘Введите строку: ‘);
readln(s);
writeln(‘Первый символ: ‘,s[1]);
l:=length(s);
writeln(‘Последний символ: ‘,s[l]);
if l mod 2 = 1
 then writeln(‘Средний символ: ‘,s[l div 2+1])
 else writeln(‘Длина строки четна’);
end.

Пример:
Введите строку: ПАСКАЛЬ
Первый символ: П
Последний символ: Ь
Средний символ: К

(5 оценок)

https://vashotvet.com/task/4177447

Понравилась статья? Поделить с друзьями:
  • Как найти предохранитель в resident evil
  • Минор матрицы м21 как найти
  • Как найти площадь поперечного сечения образца
  • Как найти потерявшегося в лесу кота
  • Как помочь человеку найти интересы