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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 15:18   #1
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
Вопрос [Pascal] сумма чисел входящих в строку

подсскажите как сделать что бы он суммировал не только однозначные числа?

Код:
program pr_1_v1;
uses crt;
var st:string;
    sum,i,n:integer;
    kod:integer;
begin
clrscr;
writeln('vvedite stroku:');
readln(st);
sum:=0;
for i:=1 to length(st) do begin
        val(st[i],n,kod);
        if kod=0 then
        sum:=sum+n;
        end;
writeln('summa vseh chisel=',sum);
end.
Рамик вне форума Ответить с цитированием
Старый 03.06.2009, 15:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так подойдет?
Код:
   var e,s:string;sum,k,i,w:integer;
begin
 s:='15 hfhf 59fl3';
 i:=1;while (i<=length(s)) do begin
  e:='';while s[i] in ['0'..'9'] do begin e:=e+s[i];inc(i);end;
  k:=0;
  if e<>'' then val(e,k,w);
  sum:=sum+k;
  inc(i);
 end;
 writeln(sum);readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2009, 15:24   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Здесь цикл сканирует посимвольно. Тебе нужно изменить условие поиска. Для этого можно использовать функцию Pos - она ищет подстроку в указанной строке. То есть допустим если числа разделены пробелами, то нужно задать Pos(' ', st). Тогда она вернет тебе позицию первого пробела, ну и так далее.

Сорри, Я начал писать до поста Стилета
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 03.06.2009, 15:44   #4
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Так подойдет?
Код:
   var e,s:string;sum,k,i,w:integer;
begin
 s:='15 hfhf 59fl3';
 i:=1;while (i<=length(s)) do begin
  e:='';while s[i] in ['0'..'9'] do begin e:=e+s[i];inc(i);end;
  k:=0;
  if e<>'' then val(e,k,w);
  sum:=sum+k;
  inc(i);
 end;
 writeln(sum);readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.

можно коментарии к действиям?
Рамик вне форума Ответить с цитированием
Старый 03.06.2009, 16:02   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Utkin
Лишнее мнение идти в правильный туннель со светом в конце не помеха страждушему

Цитата:
можно коментарии к действиям?
А чего тут коментировать?
Я в цикле проходу посимвольно.
Как только встречаю символ-цифру запускаю внутренний цикл который собирает все идущие после цифры до первой буквы, после чего собранное превращаю в число и суммирую.
И так далее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2009, 16:28   #6
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

.
спасибо!
Рамик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма 2 чисел на форме prikolist Общие вопросы C/C++ 9 18.03.2009 18:56
сумма чисел по номеру anatolin Microsoft Office Excel 10 29.01.2009 19:02
Сумма чисел gamer123 Помощь студентам 2 19.01.2008 20:42