Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2010, 00:34   #1
J78
 
Регистрация: 13.12.2010
Сообщений: 5
Восклицание Работа со строками (2 задачи, Pascal)

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

Последний раз редактировалось J78; 13.12.2010 в 00:42. Причина: 2-ая задача из сообщения решена
J78 вне форума Ответить с цитированием
Старый 13.12.2010, 11:02   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
Const
  Mn:Set of Char = ['а'..'я'];
  Mn2:Set of Char = ['А'..'П'];
  Mn3:Set of Char = ['Р'..'Я'];
Var
  St:String;
  I:Byte;
begin
   Readln(St);
   For i:=1 to Length(St) do
   Begin
     If (St[i] in Mn) then St[i]:=UpCase(St[i])
     Else
     If (St[i] in Mn2) then St[i]:=Chr(Ord(St[i]) + 32)
     Else
     If (St[i] in Mn3) then St[i]:=Chr(Ord(St[i]) + 80)
   End;
   Writeln(St);
   Readln
End.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 13.12.2010, 13:08   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а как же моя любимая буква Ё ?...


вот решение с буковкой Ё
к тому же простое и платформонезависимое
(т.е. не зависит от кодовой таблицы... - хотя последнее для Turbo Pascal не очень актуально,
как-то 866 стала стадартом русской кодовой таблицы...)
Код:
Const 
  sUpper : string = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
  sLower : string = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
Var
  St:String;
  i:integer;
begin
   Readln(St);
   For i:=1 to Length(St) do
   Begin
     if Pos(St[i],SUpper)>0 then St[i] := sLower[Pos(St[i],SUpper)]
     else
       if Pos(St[i],SLower)>0 then St[i] := sUpper[Pos(St[i],SLower)];
   end;

   writeln('Полученная строка: ',St);
   readln; 
end.

Последний раз редактировалось Serge_Bliznykov; 13.12.2010 в 13:17.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.12.2010, 13:44   #4
J78
 
Регистрация: 13.12.2010
Сообщений: 5
По умолчанию

GetMax и Serge_Bliznykov, огромное спасибо за помощь!
P.S. Serge_Bliznykov, ваш код - то, что надо, поэтому, я думаю, тему можно закрывать.
J78 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками. Pascal zevs116 Помощь студентам 1 19.11.2010 20:54
Работа со строками (Pascal) SmileGirl Помощь студентам 4 22.10.2010 01:17
Работа со строками (pascal) ДиM@ Помощь студентам 3 18.04.2010 09:39
Работа со строками (Pascal) RoMaNyIL Помощь студентам 2 21.05.2009 20:39
Pascal. Задачи со строками blondinochka Помощь студентам 1 19.05.2009 15:58