Страница 1 из 2
Как ввести выражение?
Добавлено: 06.02.2012 21:12:22
Leontev
Вопрос может несколько примитивный, но как ввести в программу какое-либо выражение?
Мне нужно, чтобы после ввода с клавиатуры произвольного выражения производился его подсчет и вывод на экран.
Для примера такое
x+x*x
При этом известно значение x
Re: Как ввести выражение?
Добавлено: 06.02.2012 22:19:36
Paster Fob
Шутка что ли?Любой учебник открой и прочитай.
Re: Как ввести выражение?
Добавлено: 06.02.2012 22:35:12
Leontev
Знаете, я понимаю, конечно, что это просто.
это понятно. А вот как далее ввести с клавиатуры выражение, в котором бы использовалось бы это x, я не понимаю.
Re: Как ввести выражение?
Добавлено: 06.02.2012 23:01:34
alex208210
var x:real;
begin
readln(x);
writeln(floattostr(x*x+x));
readln;
end.
Re: Как ввести выражение?
Добавлено: 06.02.2012 23:10:15
Paster Fob
вот так можно:
Код: Выделить всё
program chisla;
var
x: integer;
begin
readln (x);
writeln(x,'+',x,'*',x,'=',x+x*x);
readln
end.
Re: Как ввести выражение?
Добавлено: 06.02.2012 23:13:36
Little_Roo
alex208210 писал(а):writeln(floattostr(x*x+x))
Программа консольная? Тогда просто
writeln(x*x+x);
Или нужно строку разбирать на составляющие ее мат.операции?
Вот, опередили

Re: Как ввести выражение?
Добавлено: 06.02.2012 23:14:51
Leontev
Мне кажется, вы меня немного не так поняли. Надо вычислить не конкретно выражение x*x+x.
Сначало вводится какое-то х. После этого вводится с клавиатуры же выражение.
x+2
x*x
x+<неважно_что>
И что бы потом оно вычислялось.
Re: Как ввести выражение?
Добавлено: 06.02.2012 23:18:01
Little_Roo
Leontev писал(а):Сначало вводится какое-то х. После этого вводится с клавиатуры же выражение.
x+2
x*x
x+<неважно_что>
А это выражение, или несколько выражений, статические, или произвольно вводимые?
И какие возможные функции будут задействованы?
И, провокационный вопрос,- о на фига ЭТО нужно?
Re: Как ввести выражение?
Добавлено: 06.02.2012 23:22:20
Leontev
Вводится одно выражение, состоящее из произвольно вводимых символов. И в нем нужно использовать переменную х.
Добавлено спустя 2 минуты 12 секунд:
Вообще, мне это нужно как часть программы, вычисляющей интеграл функции. Сначало вводится функция и интервал. И, соответственно, нужно, что бы потом эта введенная с клавиатуры функция вычислялась в цикле при различных Х.
Re: Как ввести выражение?
Добавлено: 06.02.2012 23:37:54
Little_Roo
Leontev писал(а):водится одно выражение, состоящее из произвольно вводимых символов. И в нем нужно использовать переменную х.
Математику я уже подзабыл, сорри, но....вводить выражение из ПРОИЗВОЛЬНЫХ символов - это вроде
%4№;;(7апGfe#%$3__} или я что-то не понял?
Leontev писал(а):Сначало вводится функция и интервал.
А почему функцию и интервал не разбить в разные переменные и потом их уже насиловать?

И снова вопрос - программа консольная?
Re: Как ввести выражение?
Добавлено: 06.02.2012 23:43:12
Leontev
Да, программа консольная.
Добавлено спустя 2 минуты 51 секунду:Little_Roo писал(а):Математику я уже подзабыл, сорри, но....вводить выражение из ПРОИЗВОЛЬНЫХ символов - это вроде %4№;;(7апGfe#%$3__} или я что-то не понял?
)) Естественно из математических знаков, цифр и того самого Х.
Little_Roo писал(а):А почему функцию и интервал не разбить в разные переменные и потом их уже насиловать?
Честно говоря не очень понял, что вы имеете в виду

Re: Как ввести выражение?
Добавлено: 07.02.2012 00:08:19
Little_Roo
Leontev писал(а): Little_Roo писал(а):А почему функцию и интервал не разбить в разные переменные и потом их уже насиловать?
Честно говоря не очень понял, что вы имеете в виду
А имелось в виду, что если Вы, может быть, попытаетесь в
одну строку паскалевого синтаксиса ввести ну НЕ очень большую математическую запись тройного интеграла по контуру....
Так что, ИМХО,
1.вычисление введенной функции -> в функцию с посимвольным разбором строки на наличие матем. или тригонометрических и т.п. операций (не возьмусь, хоть стреляйте - ну, может, гуру подскажут)
2.Потом ввод интервала
3.Цикл
И долгий геморррррр по п.1
Re: Как ввести выражение?
Добавлено: 07.02.2012 00:09:44
zub
Leontevнадо почитать чтонибудь наподобии
http://delphikingdom.com/asp/viewitem.asp?catalogid=10потом погуглить готовое решение, их мого всяких разных
ну и для закрепления написать свой круче всех остальных вместевзятых
Re: Как ввести выражение?
Добавлено: 07.02.2012 00:11:22
alex208210
Код: Выделить всё
uses sysutils;
var
i:integer;
ch,otv:integer;
s,zn:string;
chisla: array[1..100] of integer;
begin
zn:='';
writeln('Vvedite chislo');
readln(ch);
Writeln('vvedite virajenie gde x eto ranee vvodimoe chislo');
Readln(s);
if pos('x',s)<>0 then
begin
for i:=1 to length(s) do
begin
if strtointdef(s[i],-1)<>-1 then chisla[i]:=strtoint(s[i]) else if s[i]='x' then chisla[i]:=ch else chisla[i]:=0;
end;
otv:=chisla[1];
for i:=1 to length(s) do
begin
if chisla[i]<>0 then
begin
if zn='+' then otv:=otv+chisla[i];
if zn='-' then otv:=otv-chisla[i];
if zn='*' then otv:=otv*chisla[i];
if zn='/' then otv:=otv div chisla[i];
end else
begin
if s[i]='+' then zn:='+';
if s[i]='-' then zn:='-';
if s[i]='*' then zn:='*';
if s[i]='/' then zn:='/';
end;
end;
end else writeln('vi ne vveli x');
writeln(otv);
readln;
end.
бугага.. давно я так не извращался))
Работу с цифрами больше одного знака а так же вещественные сам допиливай)
Re: Как ввести выражение?
Добавлено: 07.02.2012 00:16:43
Little_Roo
alex208210 писал(а):бугага.. давно я так не извращался))
Хи...и тригонометрия, логарифмы, степени-корни-модули ???
Изврату в программировании - ЖИТЬ !!!!
