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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2011, 16:52   #1
snusmumr
 
Регистрация: 03.06.2011
Сообщений: 7
Вопрос Работа со строками. Вывод слов только с заглавными буквами.

И снова здравствуйте. Нужен еще волшебный пинок

вот задача

Дана последовательность символов (строка S). Словом текста считается любая последовательность букв русского алфавита. Найти и вывести все слова текста, которые содержат только БОЛЬШИЕ буквы алфавита.

ну и ее
Код:
uses crt;
var pr, sl: string;
  s1,j,  i, k: integer;
begin
clrscr;
writeln( 'vvedite tekst ');
readln(pr);
i:=1;
k:=length(pr);
 While i<=k do
   begin
    sl:=copy(pr,1,pos(' ',pr)-1);
    writeln(i, ' slovo: ',sl); 
              {это для наглядности выводит каждое слово}
      s1:=1;
      j:=1;
      while j <= length(sl) do
        begin
          if ((ord(sl[j])) >= 128) and ((ord(sl[j])) <= 159) then
             begin
             s1:=s1+1;
             j:=j+1;
             end;
         if s1= length(sl) then writeln(sl);
         delete(pr,1,length(sl)+1);
          writeln('ostatok: ',pr); 
              {то что остается после обнаружения 1 слова}
        end;
       k:=length(pr);
        i:=i+1;
       end;
readln;
end.
Но проблема в том, что цикл выполняется коряво, для примера, если написать ООО пп АА, то он выведет только ООО, а остальное запишет в остаток.
snusmumr вне форума Ответить с цитированием
Старый 07.06.2011, 18:02   #2
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

function UpperCase(const S: string): string;
var
Ch: Char;
L: Integer;
Source, Dest: PChar;
begin
L := Length(S);
SetLength(Result, L);
Source := Pointer(S);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
if (Ch >= 'a') and (Ch <= 'z') then Dec(Ch, 32);
if (Ch >= 'а') and (Ch <= 'я') then Dec(Ch, 32);
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end;
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 07.06.2011, 19:06   #3
snusmumr
 
Регистрация: 03.06.2011
Сообщений: 7
По умолчанию

Так-то конечно легче, но мне нужно делать это все с простейшими строковыми операциями, язык Турбо Паскаль
Цитата:
if (Ch >= 'a') and (Ch <= 'z') then Dec(Ch, 32);
а здесь зачем английские? там ведь только заглавные русские.

Цитата:
Ch := Source^
а зачем здесь знак ^?
я ж только начинающий, такие штуки мне не известны
snusmumr вне форума Ответить с цитированием
Старый 07.06.2011, 20:35   #4
FieStik
студентка
Пользователь
 
Аватар для FieStik
 
Регистрация: 21.06.2010
Сообщений: 36
По умолчанию

что это за uses crt?
FieStik вне форума Ответить с цитированием
Старый 07.06.2011, 20:38   #5
snusmumr
 
Регистрация: 03.06.2011
Сообщений: 7
По умолчанию

это открытие библиотеки, которая будет очищать экран при каждом запуске программы
uses crt;
...
begin
clrscr;
...
snusmumr вне форума Ответить с цитированием
Старый 08.06.2011, 16:57   #6
snusmumr
 
Регистрация: 03.06.2011
Сообщений: 7
По умолчанию

ну ответьте хоть кто-нибудь
snusmumr вне форума Ответить с цитированием
Старый 14.02.2012, 14:16   #7
Валлидол
Новичок
Джуниор
 
Аватар для Валлидол
 
Регистрация: 14.02.2012
Сообщений: 9
По умолчанию

Попробуйте примерно вот так
Код:
Код:
uses crt;
var s,st:string;
    i,k,j:integer;
begin ClrScr;
writeln('Введите текст ');
readln(s);
s:=s+' ';
st:='';
writeln;
Writeln('Слова содержащие только заглавные буквы');
for i:=1 to length(s) do
   if s[i] in ['А'..'я'] then 
                             st:=st+s[i]
                          else begin
                         k:=0; 
                         for j:=1 to length(st) do
                             if st[j] in ['А'..'Я'] then k:=k+1;
                         if (k=length(st)) and ((st<>'')) then writeln(st);
                         st:='';
                               end;
readln;
end.
Валлидол вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск слова с заглавными буквами Unknown Lady Общие вопросы C/C++ 4 24.05.2011 13:27
Как выдать текст только заглавными буквами IVR Microsoft Office Excel 2 25.11.2009 17:13
Строки в с++.(вывод слов с согласными буквами)) Луцк Помощь студентам 0 15.10.2009 23:00
Получить в другом файле тот же текст, записанный заглавными буквами. Nightt Помощь студентам 5 21.06.2009 00:01