Ребят,помогите решить задачу по файлам(лекции не было,а задачу дали).Дан файл,содержащий текст и арифмитическое выражение вида axb,где x один из знаков +.-.*./. Выписать все арифмитические выражения и вычислить их значения
Bokul
25.02.2007 21:42
Вот тебе вместо лекции: Файлы Попробуй что-то сделать своими силами, потом и мы подключимся..
Вопрос по ограничению вычислений чисел, могут ли они быть не целыми?
Emerson
25.02.2007 21:53
спасибо за помощ,попробую поделать,если тебе не сложно попробуй тоже сделать,числа только целые
Emerson
27.02.2007 1:36
Мучал мозг ) но не смог сделать,вот до чего дошел:
implementation Var x,a,b:integer; z:char; Procedure Prosmotr; Begin reset(f1); while not EOF(f1) do begin read(f1,z); write(z); writeln; end; closefile(f1); end; Procedure Pods4et; var s:string[20]; begin reset(f1);
while not EOF(f1) do begin readln(f1,s); i:=0; st:=''; while length(s)>0 do begin
repeat
delete(s,1,1) until (s[1]>='0') and (s[1]<='9'); repeat begin i:=i+1; st:=st+s[i]; until (s[i]<'0') or (s[i]>'9'); if s[i] in p then val(st,g,code); delete (s,1,i);
volvo
27.02.2007 1:42
Цитата
type f=file of integer;
и
Цитата(Задание)
Дан файл, содержащий текст и арифмитическое выражение вида axb,где x один из знаков +.-.*./
друг другу противоречат - тебе не кажется?
Тебе все-таки надо работать с текстовым файлом, а не с типизированным... Пример файла, с которым нужно чтобы программа отработала, можешь привести?
Emerson
27.02.2007 1:49
Цитата(volvo @ 26.02.2007 21:42)
и друг другу противоречат - тебе не кажется?
Тебе все-таки надо работать с текстовым файлом, а не с типизированным... Пример файла, с которым нужно чтобы программа отработала, можешь привести?
Ой ) я забыл ,я уже исправил.Мне дан фаил например : asdasfhadf56-12 asuhfauw 62-30asdasd ,но я не знаю как это описать вот и застрял
volvo
27.02.2007 2:04
type charset = set of char;
function pos_ex(chars: charset; s: string; start: integer): integer; var i: integer; begin pos_ex := 0; for i := start + 1 to length(s) do if s[i] in chars then begin pos_ex := i; exit; end; end;
var f: text; s: string; p, start: integer;
begin assign(f, 'arit_ex.txt'); reset(f);
while not eof(f) do begin readln(f, s); writeln(s);
start := 1; repeat
p := pos_ex(['+', '-', '*', '/'], s, start);
if p <> 0 then begin start := p; writeln('p = ', p, ' s[p] = ', s[p]); end;
until p = 0; end; close(f); end.
Этот кусок читает файл построчно, и ищет все заданные символы операций... (Тестировалось на
Цитата
this is an example of file it contains 12+126 and 45*15 expressions
) Тебе осталось от позиции P пройти по строке вперед и назад, пока встречаются ЦИФРЫ (не забывая контролировать выход за пределы строки, конечно), так ты выделишь нужные выражения... Ну, а потом вырезаешь их, передаешь для вычисления в другую функцию (в поиск, по слову Интерпретатор, там есть то, что тебе нужно), и продолжаешь искать в строке следующие вхождения операций...
Пробуй, что не получится - поможем...
Emerson
27.02.2007 2:09
так спасибо,будемс пробовать
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.