Программа На паскале 5+5*5=? ,Вводится Всё в одну строковую переменную разделить и ешё сделать приоритет на умножение и деление .
типа вот переменные:
a:=s[1]
b:=s[3]
c:=s[5]
v1:=s[2]
v2:=s[4]
Помогите а то в тупике я (((
Другие языки программирования и технологии
Программа На паскале 5+5*5=?
Задачка непростая. У меня получилось так:
program Project1;
var i,l:integer;
s: string;
a:array [ 1..100] of integer;
flag:boolean;
begin
s:='5+5*5=';
l:=length(s);
for i:=1 to length(s) do
begin
case s[ i] of
'0'..'9' : val(s[ i],a[ i]);
'+' : a[ i]:=-1;
'*' : a[ i]:=-2;
'=' : l:=i-1;
end;
end;
repeat
flag:=false;
for i:=1 to l do
if a[ i]=(-2) then
begin
flag:=true;
a[ i-1]:=a[ i-1]*a[ i+1];
a[ i]:=0; a[ i+1]:=a[ i-1];
end;
until flag;
repeat
flag:=false;
for i:=1 to l do
if a[ i]=(-1) then
begin
flag:=true;
a[ i-1]:=a[ i-1]+a[ i+1];
a[ i]:=0; a[ i+1]:=a[ i-1];
end;
until flag;
writeln(a[ 1]);
end.
Это Free Pascal (Lazarus)
Возможно для каких-то случаев решение окажется неправильным.
program Project1;
var i,l:integer;
s: string;
a:array [ 1..100] of integer;
flag:boolean;
begin
s:='5+5*5=';
l:=length(s);
for i:=1 to length(s) do
begin
case s[ i] of
'0'..'9' : val(s[ i],a[ i]);
'+' : a[ i]:=-1;
'*' : a[ i]:=-2;
'=' : l:=i-1;
end;
end;
repeat
flag:=false;
for i:=1 to l do
if a[ i]=(-2) then
begin
flag:=true;
a[ i-1]:=a[ i-1]*a[ i+1];
a[ i]:=0; a[ i+1]:=a[ i-1];
end;
until flag;
repeat
flag:=false;
for i:=1 to l do
if a[ i]=(-1) then
begin
flag:=true;
a[ i-1]:=a[ i-1]+a[ i+1];
a[ i]:=0; a[ i+1]:=a[ i-1];
end;
until flag;
writeln(a[ 1]);
end.
Это Free Pascal (Lazarus)
Возможно для каких-то случаев решение окажется неправильным.
Условие непонятно. Зачем что-то вводить? Если надо посчитать 5+5*5, то ни вводить, ни считать ничего не надо, достаточно написать
begin write(30) end.
begin write(30) end.
Ну судя по вашему "коду" - задачка будет не из легких.
В общем случае, то что вам надо сделать - называется "лексический анализ"
то есть надо разбить входную строку на лексемы, определить их назначение, создать граф выражения, и вычислить его.
Задача не на 10 минут, даже для проффи.
В общем случае, то что вам надо сделать - называется "лексический анализ"
то есть надо разбить входную строку на лексемы, определить их назначение, создать граф выражения, и вычислить его.
Задача не на 10 минут, даже для проффи.
Строка - массив символов. Запускаешь цикл и перебираешь все элементы, как только обнаруживаешь нужный элемент делаешь с ним какие то действия:
for i := 1 to length(stroka) do begin
if stroka = ch then begin
// Какие-то действия с найденным элементом.
end;
end;
for i := 1 to length(stroka) do begin
if stroka = ch then begin
// Какие-то действия с найденным элементом.
end;
end;
Похожие вопросы
- Программа на паскале! Помогите(бесплатно)
- Нужно написать программы в Паскале! Массивы! Срочно! Помогите!
- Нужно написать программу на паскале
- Написать программу в Паскале для построения графика функций. К программе желательно составить алгоритм.
- Программа в Паскале
- Помогите составить программу на паскале!
- Время работы программы в Паскаль
- Объясните как работает программа в паскаль!!!
- помогите с программами в паскале
- найти все семизначные числа, которые делятся на 15 и записываются только цифрами 0 и 1. Составить программу на паскале