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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2013, 21:52   #1
sven4ik
 
Регистрация: 07.02.2013
Сообщений: 8
Восклицание найти зн.выражения(строки)

дан текст имеющий вид d1+d2-d3+...-dn,где di - цифры (n>0).Найти значение выражения.
sven4ik вне форума Ответить с цитированием
Старый 14.06.2013, 00:02   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

т.к. у вас допускаются только одиночные цифры (Вы ведь понимаете разницу между цифрой и числом и ничего в задании не перепутали, да? ) и операции одного приоритета, то я бы поступил в лоб:
Код:
читаем строчку S. 
Удаляем из неё все пробелы, в т.ч. внутри строки (на всякий случай).
Обнуляем сумматор R, где мы будем накапливать результат
Присваем Operation изначально '+' (считаем, что первое число - положительное)
в цикле по i от 1-го символа до ДлиныСтроки делать
   если i нечётное тогда
       begin
          if s[i] не цифра - выдать ошибку и прекратить программу, 
          иначе Преобразовать S[i] в число D
          if Operation = '+' then R := R + D; 
          if Operation = '-' then R := R - D; 
       end
   else  {значит i-чётное - читаем из строки знак операции}
       begin
          if S[i]='+' then Operation := '+'
          else  if S[i]='-' then Operation := '-'
                 else ВыдатьОШибку и прервать программу
       end
Напечатать результат R
примерно так...

p.s. если первый операнд может иметь знак - это надо учесть в программе.
Проще всего, проверить первый символ, если он равен '+' или '-' присвоить его переменной Operation и удалить из строки (чтобы не изменять проверку на нечётность/чётность индекса строки...)

p.p.s. если что-то неясно - спрашивайте..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.06.2013, 14:36   #3
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Сумма всех членов арифметической прогрессии. S=(2*a1 + (d-1)/2)*n
n-число членов a1-первый член d-коэффицент(d=a2-a1).
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 14.06.2013, 14:57   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сумма всех членов арифметической прогрессии.
O-o-o. Арифметическая прогрессия откуда образовалась?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения в php: найти число и вывести его Стингуля PHP 5 11.03.2013 22:59
Регулярные выражения - поиск пустой строки furstenberg Общие вопросы Delphi 15 27.08.2012 18:10
Вычисление выражения (найти сумму ряда) (Ассемблер) RikkiTan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 25.03.2012 12:53
Регулярные выражения. найти заменить по условию bdfy Microsoft Office Excel 7 14.09.2011 02:08
Найти значение выражения при х=[1..10] EThread Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 22.12.2008 07:25