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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2010, 07:41   #1
savraska
Пользователь
 
Регистрация: 18.04.2010
Сообщений: 37
По умолчанию Решение мат. выражений, из файла. Delphi7

Из файла считываются математические выражения, записанные через точку с запятой. Программа должна выводить результат, записанный через точку с запятой соотвественно.Проблемы с считыванием.
Вложения
Тип файла: rar прога.rar (167.8 Кб, 16 просмотров)
Тип файла: txt 1.txt (10 байт, 142 просмотров)
savraska вне форума Ответить с цитированием
Старый 27.06.2010, 09:02   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Ваш код не смотрел, но можно считывать так(если могут быть только знаки +,-, *,/)
Код:
readln(f,s);
ch:='';i:=0;
while (copy(s,i,1)<>'+') or (copy(s,i,1)<>'-')
     or(copy(s,i,1)<>'*') or (copy(s,i,1)<>'/') do
begin
       i:=i+1;
      ch:=ch+copy(s,i,1);
end;
Вот можно считывать первое число. Далее просто: к i прибавляете единицу, считываете из строки s следующий символ(это и будет знак выражения), а далее наподобии моему циклу(только пока символ не равен точке с запятой) считываете следующий символ.
Ах, да. Не забудьте потом преобразовать получившиеся строковые числа в числа.
_-Re@l-_ вне форума Ответить с цитированием
Старый 27.06.2010, 10:14   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

savraska, совет хотите?
Вот здесь я выкладывал пример Unit'а, который считает математические выражения на Pascal. Поддерживаются все математические выражения + приоритет операций + скобки. фактически там парсер математических выражений. Возьмите его. Вашу входную строчку разбивайте по if Pos(';',s) > 0 then sMath := Copy(s,1,Pos(';',s)) и вызывайте функцию расчёта. (кстати, она и ошибки возвращает, если строка с ошибками.) результат записывайте в файл. всё. делов на 15 минут!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.06.2010, 10:21   #4
260526052605
Пользователь
 
Регистрация: 31.07.2008
Сообщений: 12
По умолчанию

э... _-Re@l-_ , а зачем так парится? разве так не проще:

Код:
readln(f,s);
ch:=''; i:=0;
while not (s[i] in ['+','-','*','/']) do
begin
      Inc(i);
      ch:=ch+s[i];
end;
зачем использовать Copy для одного символа?
260526052605 вне форума Ответить с цитированием
Старый 12.05.2011, 23:41   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

В rxLib есть компонент TrxMathParser
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить имя файла Delphi7 AlexandЯ Помощь студентам 7 29.04.2009 12:58
Проблема такова: язык:Delphi7; сохранения файла; загрузка файла в String Grid lightdevil Общие вопросы Delphi 3 06.03.2009 23:10
решение Матрицы Delphi7 Naposaram Помощь студентам 4 23.11.2008 16:42
Решение мат. примера Kashp Помощь студентам 2 21.09.2008 11:19
Решение простых выражений MStorm Помощь студентам 5 10.03.2008 14:34