Для решения указанной задачи можно воспользоваться следующим алгоритмом. Проверить каждый символ строки: является ли он малой русской буквой. Если так, то заменить его соответствующей большой русской буквой. В противном случае оставить символ без изменения. Проблема заключается в разработке алгоритма замены малой русской буквы на большую. Напомним, что каждому символу соответствует ASCII-код. Коды соответствующих латинских малых и больших букв отличаются друг от друга на 32. Например, код большой латинской буквы 'A' равен 65, а код малой латинской буквы 'a' равен 97. Таким образом для латинских букв построить алгоритм несложно.

    Для букв русского алфавита алгоритм будет сложнее. Дело в том, что такую взаимосвязь для русских букв вывести невозможно. Однако можно заметить, что для букв из промежутка 'а'..'п' соответствующие им большие буквы можно получить, отняв от их кода значение 32. Для букв из промежутка 'р'..'я' нужно отнимать число 80.

    Таким образом для каждого символа строки нужно выполнить следующие действия:

    Приведем текст программы:

Program Problem36_1; 
Var
  St:String;
  i:Byte;
Begin
  Write('Задайте строку символов, в которой имеются 
                             маленькие русские буквы: ');
  ReadLn(St);
  For i:=1 To Length(St) Do {Организуем цикл по количеству символов.}
   Case St[i] Of
    'а'..'п': St[i]:=Chr(Ord(St[i])-32);
    'р'..'я': St[i]:=Chr(Ord(St[i])-80);
   End;
  WriteLn('Преобразованная строка:');
  WriteLn(St);
End.
Текст этой программы можно взять здесь.