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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2010, 11:28   #1
neomax38
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 72
По умолчанию строки в pascal

Сформировать новую строку из слов, состоящих только из латинских букв, и длиной не более 7 литер. Все строчные буквы в новой строке заменить на заглавные. Найти первое цифровое слово и найти сумму его цифр.
neomax38 вне форума Ответить с цитированием
Старый 22.11.2010, 14:41   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Не много грамоздко, но больше ничего не придумал
Код:
Program Stroki;
Uses CRT;
Const
  Mn_b:Set of char = ['a'..'z'];
  Mn_b1:Set of char = ['A'..'Z'];
  Mn_cifr:Set of char = ['0'..'9'];
Var
  Mas:array[1..20] of String;
  Stroka,Nov_stroka1,Nov_stroka2,Buf_Str:String;
  i,j,k,Dlina,Kol,Summa,Kol1:Byte;
  Flag1,Flag2:Boolean;
Begin
  ClrScr;
  Write('Введите строку: ');
  Readln(Stroka);
  Writeln;
  j:=1;
  Kol:=1;
  i:=1;
  While i <= Length(Stroka) do
  Begin
    If Stroka[i] <> ' ' then
    Begin
      Mas[j]:=Mas[j]+Stroka[i]
    End
    Else
    If Stroka[i] = ' ' then
    Begin
      Inc(j);
      Inc(Kol)
    End;
    Inc(i)
  End;
  Nov_Stroka1:='';
  I:=1;
  While i <= Kol do
  Begin
    Buf_Str:=Mas[i];
    Dlina:=Length(Buf_str);
    If Dlina <= 7 then
    Begin
      Flag1:=True;
      For j:=1 to Dlina do
      If Not (Buf_Str[j] in Mn_b) or (Buf_str[j] in Mn_b1) then
      Begin
        Flag1:=False;
        Break
      End;
      If Flag1=true then
                    Begin
                      Nov_stroka1:=Nov_stroka1+' '+Buf_str;
                    End;
    End;
    Inc(i);
  End;
  For k:=1 to Length(Nov_stroka1) do
  Begin
    Nov_stroka1[k]:=UpCase(Nov_stroka1[k]);
  End;
  Write('Новая строка: ',Nov_Stroka1);
  Writeln;
  Summa:=0;
  Nov_stroka2:='';
  i:=1;
  Kol1:=0;
  While i <= Kol do
  Begin
    Buf_Str:=Mas[i];
    Flag2:=True;
    For j:=1 to Length(Buf_str) do
    Begin
      If Not (Buf_str[j] In Mn_cifr) then
      Begin
        Flag2:=False;
        Break
      End;
    End;
    If Flag2=True then
    Begin
      Inc(Kol1);
      Break
    End;
    Inc(I)
  End;
  Nov_stroka2:=Buf_Str;
  If Kol1 > 0 then
  Writeln('Первое цифровое слово: ',Nov_Stroka2)
  Else
  Writeln('В строке нет цифрового слова ');
  Readln
End.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 23.11.2010, 12:40   #3
neomax38
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 72
По умолчанию

Спс Попробую уменьшить
neomax38 вне форума Ответить с цитированием
Старый 23.11.2010, 14:10   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да уж... Оптимизация просто таки просится:
Код:
type
 worda=record s:string;ok:boolean;end;
var s:string; a:array[1..100] of worda;
  e,i,count,k,sum:integer; isdig:boolean;
begin   {$o-}
 s:='Helloololo 13 my 21 world';
 count:=1;
 isdig:=true;     sum:=0;
 i:=1; while (i<=length(s)) do begin
   if s[i]=' ' then begin
    val(a[count].s,k,e);
    if isdig and (e=0) then begin
      for k:=1 to length(a[count].s) do begin
        sum:=sum+ord(a[count].s[k])-ord('0');
      end;
      isdig:=false;
    end;
    inc(count);inc(i);
   end;
   a[count].s:=a[count].s+UpperCase(s[i]);
   a[count].ok:=length(a[count].s)<=7;
   inc(i);
 end;
 for k:=1 to count do begin
  if a[k].ok then  writeln(a[k].s);
 end;
 writeln(sum);
 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal - строки Kris92 Помощь студентам 13 06.07.2010 19:31
Строки в Pascal Сristina Помощь студентам 2 03.06.2010 02:27
Pascal Строки vips Помощь студентам 2 08.05.2010 20:09
Pascal.Строки blondinochka Помощь студентам 3 04.06.2009 16:44
Pascal. Строки. Dexterello Помощь студентам 2 20.12.2008 17:42