Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 10.05.2019, 23:24   #1
sss2208
Новичок
 
Регистрация: 10.05.2019
Сообщений: 1
Репутация: 10
По умолчанию Массивы в Pascal.

Вообщем тут такое задание: Ввести с клавиатуры строку S длиной до 80 символов из букв латинского и русского алфавита. В строку S1 перенести все буквы латинского алфавита, а в строку S2 - все буквы русского алфавита. Можете помочь с решением?
Вот мой код, к сожалению неправильный(.
Код:
program lab6v9;
uses crt;
var
s:string[80];
sl,su:string;
i,j,m:integer;
begin
clrscr;
writeln('Please enter string 80');
readln(s);
for i:= 1 to length(s) do
if (s[i] in ['a','b','c','D', 'E', 'F', 'G', 'H', 'I' ,'K','L', 'M', 'N' ,'O', 'P',
'Q', 'R', 'S', 'T', 'V', 'X', 'Y', 'Z']) then
s1[j]:=s[i];
if s[i] in (['а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я']) then
s2[m]:=s[i];
write('Latuna:=',s1);
writeln;
write('Rus:=',s2);
writeln;
end.

Последний раз редактировалось sss2208; 10.05.2019 в 23:37.
sss2208 вне форума   Ответить с цитированием
Старый 11.05.2019, 09:58   #2
ViktorR
Профессионал
 
Регистрация: 23.10.2010
Сообщений: 1,354
Репутация: 644
По умолчанию

Можно описать константное множество
Код:
const mLat = ['A' .. 'Z'];
и выполнять разделение строки по принадлежности к mLat.
Перед циклом очистим строку.
Код:
...
Lat := '';
{Начало цикла}
if (UpCase(s[i] in mLat) then {UpCase - переводим символ в верхний регистр}
   Lat := Lat + s[i];   {добавление в строку}
else
   Rus := Rus + s[i]; {сюда всё остальное}
...
PS:
Длина строки в Паскале хранится в нулевом байте.
При добавлении элементов в строку, необходимо заботиться о состоянии этого байта. Это можно сделать, но лишние хлопоты. При слиянии строк процедуры слияния сами об этом заботятся.
__________________
Как-то так, ...

Последний раз редактировалось ViktorR; 11.05.2019 в 21:33. Причина: Дополнение.
ViktorR вне форума   Ответить с цитированием
Старый 11.05.2019, 18:19   #3
taras-proger77
Форумчанин
 
Регистрация: 17.12.2018
Сообщений: 419
Репутация: -121
По умолчанию

Вот только строка – массив лишь по сути, но массивом не называется.
taras-proger77 вне форума   Ответить с цитированием
Старый 11.05.2019, 18:21   #4
taras-proger77
Форумчанин
 
Регистрация: 17.12.2018
Сообщений: 419
Репутация: -121
По умолчанию

Цитата:
Сообщение от sss2208 Посмотреть сообщение
if (s[i] in ['a','b','c','D', 'E', 'F', 'G', 'H', 'I' ,'K','L', 'M', 'N' ,'O', 'P', 'Q', 'R', 'S', 'T', 'V', 'X', 'Y', 'Z']) then
Наифга?
Код:
if ((s[i]>='a') and (s[i]<='z')) or ((s[i]>='A') and (s[i]<='Z'))
taras-proger77 вне форума   Ответить с цитированием
Старый 11.05.2019, 18:22   #5
taras-proger77
Форумчанин
 
Регистрация: 17.12.2018
Сообщений: 419
Репутация: -121
По умолчанию

Цитата:
Сообщение от sss2208 Посмотреть сообщение
s:string[80];
80 - дефолтное ограничение длины для просто
Код:
string
.
taras-proger77 вне форума   Ответить с цитированием
Старый 11.05.2019, 18:47   #6
Вадим Мошев

Заслуженный модератор
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Адрес: programmersforum
Сообщений: 8,457
Репутация: 4056
По умолчанию

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
Наифга?
Код:

Код:
if ((s[i]>='a') and (s[i]<='z')) or ((s[i]>='A') and (s[i]<='Z'))

Нафига?

Код:
if lowerCase( s[i] ) in ['a'..'z'] then // ...
Вадим Мошев вне форума   Ответить с цитированием
Старый 11.05.2019, 20:28   #7
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,986
Репутация: 6725
По умолчанию

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
80 - дефолтное ограничение длины для просто string.
255
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal. Массивы Andrew5674 Помощь студентам 0 30.05.2013 18:52
Массивы. Pascal Andrew5674 Помощь студентам 2 30.05.2013 15:45
Pascal: Массивы, подпрограммы, текст на языке Pascal WarriorCow Помощь студентам 4 22.02.2012 15:28
pascal, массивы nastya8984999 Помощь студентам 1 31.03.2009 20:12


18:12.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.