Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ помогите с решением

Автор: Frozen83 25.11.2004 20:26

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

Автор: volvo 25.11.2004 20:29

Frozen83
А конкретнее? Это нужно в Паскале или в Дельфи? Что за заголовки?

Автор: Frozen83 25.11.2004 20:31

Нужно в Pascale. А насчет какие заголовки...ммм...не знаю...у меня на руках голое задания...

Автор: volvo 25.11.2004 20:35

Frozen83
Латинские символы строки преобразуются в верхний регистр элементарно при помощи ф-ии UpCase(Ch) - то есть пробегаешь по всей строке и меняешь s[i] на UpCase(s[i])... А вот кириллица - будет всегда привязана к кодировке.

Автор: Frozen83 25.11.2004 20:49

Угу...тока вот я понять не могу никак...что это значит преобразовать к верхнему регистру? Какой будет результат после того как я поменяю s[i] на UpCase(s[i])... ?

Автор: volvo 25.11.2004 20:53

Frozen83
Запусти эту программу:

Код

var s: string; i: byte;
begin
 readln(s); { допустим, 'start' }
 for i := 1 to length(s) do s[i] := upcase(s[i]);
 writeln(s); {'start' поменяется на 'START'}
end.

Автор: Frozen83 25.11.2004 21:11

Пасибки :-)

Автор: Frozen83 25.11.2004 22:51

Все же , как сделать если русские буквы надо преобразовать к верхнему регистру. Так думаю можно массив создать русского алфавита. Не понимаю как нужно определять латинская буква на входе или русская. Мне бы прогу ...

Автор: volvo 25.11.2004 23:07

Frozen83
А самому подумать? Никак?

Код

Function UpperString(s: String): String;
 Var i: Byte;
 Begin
   For i := 1 To Length(s) Do
     If s[i] In ['a'..'z'] Then s[i] := UpCase(s[i])
     Else
       If s[i] In ['а'..'п', 'р'..'я'] Then
         Begin
           { Если пришли сюда, то буквы - русские. Добавляй свой код по переводу кириллицы в верхний регистр }
         End;
   UpperString := s;
 End;

Автор: Altair 26.11.2004 10:56

Вот процедура:

Код
Function UpStr(S:String):String; {перевод строки в верхний регистр}
Var I:Byte;
Begin
For I:=1 To ORD(S[0]) Do
Begin
 Case S[I] Of
  'a'..'z':S[I]:=Chr(Ord(S[I])-$20);
  'а'..'п':S[I]:=Chr(Ord(S[I])-$20);
  'р'..'я':S[I]:=Chr(Ord(S[I])-$50)
 End
End;
UpStr:=S
End;

Предпочитаю пользовыаться всегда ей, она САМАЯ быстрая.
Взято из хакерской проги для взлома PWL виндовса, 10 лет назад! так что это раритет! smile.gif rolleyes.gif