Строки в паскале

Тема в разделе "Pascal and Delphi", создана пользователем neomax38, 21 дек 2010.

Статус темы:
Закрыта.
  1. neomax38

    neomax38 Гость

    Нужно сделать проверку букв: Если строчные то вывести их заглавными в результат строки.

    Код (Text):
    PROGRAM Lab;
    CONST
    MaxLen      = 7;
    TYPE
    SetOfChar    = Set of Char;
    CONST
    Delim        : SetOfChar = [' '];
    Digit        : SetOfChar = ['0'..'9'];
    Latin        : SetOfChar = ['a'..'z', 'A'..'Z'];
    VAR
    i    : Integer;
    SStr : String;  {строка источник}
    DStr : String;  {строка-результат}
    WStr : String;  {строка с текущим выделенным словом}
    Sum  : Integer; {сумма цифр первого цифрового слова}
    IsDigitWord,
    IsSummaComplete, {признак завершения подсчёта суммы цифр}
    IsLatinWord : BOOLEAN;
    BEGIN
    write ('vvedite stroku');
    readln(SStr);
    {инициализация переменных}
    DStr:='';
    Sum:=0;

    IsSummaComplete:=FALSE;
    IsDigitWord:=TRUE;
    IsLatinWord:=TRUE;
    WStr:='';
    i:=1;
    while Length(SStr)+1>=i do begin
    {если встретился разделитель или закончилась обрабатываемая строка:
    - для латинских слов формируем результирующую строку
    - для цифровых слов устанавливаем признак завершения подсчёта суммы}
    if (SStr[i] in Delim) OR (i=Length(SStr)+1)
    then begin
    if IsLatinWord AND (Length(WStr)<=MaxLen) AND (Length(WStr)>0)
    then begin
    if Length(DStr)<>0
    then DStr:=DStr+' ';
    DStr:=DStr+WStr;
    end;

    IsSummaComplete:=IsSummaComplete OR IsDigitWord;

    IsDigitWord:=TRUE;
    IsLatinWord:=TRUE;
    WStr:='';
    {пропускаем все ограничители}
    while (Length(SStr)>=i) AND (SStr[i] in Delim) do Inc(i);
    if i>Length(SStr) then Break;
    end;

    {для латинских слов продолжаем выделять само слово}
    if SStr[i] in Latin
    then WStr:=WStr+SStr[i]
    else IsLatinWord:=FALSE;

    {для первого цифрового слова подсчитываем сумму цифр}
    if (SStr[i] in Digit) AND NOT IsSummaComplete
    then begin
    Sum:=Sum+(Byte(SStr[i]) - Byte('0'));
    end
    else begin
    IsDigitWord:=FALSE;
    if NOT IsSummaComplete
    then Sum:=0;
    end;
    Inc(i);
    end;
    WriteLn('Source string:');
    WriteLn('"', SStr, '"');
    WriteLn('Result string:');
    WriteLn('"', DStr, '"');
    WriteLn('Summa: ', Sum);
    END.
     
  2. neomax38

    neomax38 Гость

    Все решил сам через upcase
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей