Ребят,помогите решить задачу по файлам(лекции не было,а задачу дали).Дан файл,содержащий текст и арифмитическое выражение вида axb,где x один из знаков +.-.*./. Выписать все арифмитические выражения и вычислить их значения
Вот тебе вместо лекции: http://forum.pascal.net.ru/index.php?s=&showtopic=3584&view=findpost&p=32082
Попробуй что-то сделать своими силами, потом и мы подключимся..
Вопрос по ограничению вычислений чисел, могут ли они быть не целыми?
спасибо за помощ,попробую поделать,если тебе не сложно попробуй тоже сделать,числа только целые
Мучал мозг ) но не смог сделать,вот до чего дошел:
unit unit1;
interface
type
f=file of integer;
Procedure Prosmotr(var f1:f);
Procedure Pods4et(var f1:f);
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);
type
f=file of integer;
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.
так спасибо,будемс пробовать