Показать сообщение отдельно
Старый 28.03.2013, 14:32   #1 (permalink)
blazelott
Member
 
Регистрация: 03.02.2013
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль, строки

Вводится строка из букв и знаков латинского алфавита. Например: abc1;+;56;+9
А в ответе должно выдать сумму этих чисел 1+56+9=66.
Если записано так 1abc2def3, то выдаст ответ 123.
А если нету в строке чисел, то паскаль должен вывести 'Чисел нет'
Программа есть. Только я не могу сделать чтобы Паскаль выводил 'Чисел нет' У меня всегда выводит 'Чисел нет', либо уходит в бесконечный цикл.
Помогите пожалуйста.
Код:
uses crt;
const
   number = ['0' .. '9'];
   plus = ['+'];

var
   value : real;
   rezult : real;
   i, err : integer;
   sign : char;

   s, a : string;
begin
   writeln('Введите строку: ');
   readln(s);

   i := 1;
   a := '';
   sign := '+';
   while i <= length(s) do
   begin
      while (i <= length(s)) and (not (s[i] in plus)) do
      begin
         if s[i] in number then a := a + s[i];
         i:=i+1;
      end;
      val(a, value, err);
      a := '';
      if err <> 0 then value := 0;

      if (i > length(s)) or (s[i] in plus) then
      begin
         case sign of
            '+' : rezult := rezult + value;
         end;
         sign := s[i];
         i:=i+1;
      end;
   end;
   writeln('result = ', rezult);
end.
blazelott вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070