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

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

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

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

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

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

Цель задания
Сформировать новую строку из слов, состоящих только из латинских букв, и длиной не более 7 литер. Все строчные буквы в новой строке заменить на заглавные. Найти первое цифровое слово и найти сумму его цифр.

Как бы упростить

Код:
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.
neomax38 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки (Pascal) Ногин Антон Помощь студентам 9 24.09.2010 12:44
Pascal - строки Kris92 Помощь студентам 13 06.07.2010 19:31
Pascal Строки vips Помощь студентам 2 08.05.2010 20:09
Строки. Pascal Feran Помощь студентам 1 05.04.2010 11:06
Pascal.Строки blondinochka Помощь студентам 3 04.06.2009 16:44