Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 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 вне форума   Ответить с цитированием

Старый 28.03.2013, 14:32
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Схожие по содержанию с вашим топики могут помочь

Паскаль, строки
Паскаль, строки
Строки в Паскаль

Старый 28.03.2013, 15:44   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от blazelott Посмотреть сообщение
Помогите пожалуйста.
Пожалуйста, вроде отладил, и вычитание добавил. Одно пожелание: в программировании бездумные операции противопоказаны. Вот, например: не используете Вы CRT-команды - так и незачем этот модуль цеплять.

Код:
const
 number = ['0' .. '9'];
 plus = ['+','-'];

var
 value, rezult, i, err : integer;
 s, a : string;
 sign:Char;
 b:boolean;
begin
 writeln('Enter the string: ');
 readln(s);
 b:= true;
 i:=1;
 a:='';
 sign:='0';
 while i<=length(s) do
  begin
   while (i<=length(s)) and not(s[i] in plus) do
    begin
     if s[i] in number then
      begin
       b:=false;
       a:=a+s[i];
      end;
     i:=i+1;
    end;
   val(a,value,err);
   Case sign of
    '0': rezult:=value;
    '+': rezult:=rezult+value;
    '-': rezult:=rezult-value;
   end;
   a:='';
   if s[i] in plus then sign:=s[i];
   i:=i+1;
  end;
 if b then writeln('String contains no figures') else writeln('result = ', rezult);
 readln
end.
Vladimir_S вне форума   Ответить с цитированием
Старый 28.03.2013, 15:47   #3 (permalink)
blazelott
Member
 
Регистрация: 03.02.2013
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо огромное.
blazelott вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 08:59.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.