Chắc suất Đại học top - Giữ chỗ ngay!! ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.
Đoạn mã bạn cung cấp là một chương trình máy tính đơn giản viết bằng Pascal. Nó có các tính năng sau:
• Có thể thực hiện các phép tính số học cơ bản (+, -, *, /) trên các số thực.
• Có thể xử lý tối đa 50 biểu thức.
Lưu trữ các số và toán tử trong hai mảng, a và b tương ứng.
• Sử dụng ngăn xếp để theo dõi thứ tự ưu tiên của các phép toán.
• In kết quả của phép tính ra màn hình.
Đoạn code
program calculator_v2;
uses
crt;
var
// mảng lưu trữ các số
a: array [1..100] of real;
// mảng lưu trữ các phép toán
b, c: array [1..100] of string;
dem, ad, w2, a1: integer;
e: string;
begin
clrscr;
// Vòng lại chính
while true do
begin
// Xử lý đầu vào
dem := dem + 1;
if dem = 1 then
begin
writeln('Calculator');
readln(a[1]);
end ;
if dem > 1 then
begin
ad := ad + 1;
readln(a[dem + ad]);
end ;
if dem < 50 then
readln(b[dem * 2]) ;
// Xử lý phép tính
if (b[dem * 2] = '=') or (dem = 50) then
begin
dem := dem * 2 - 2;
// Xử lý các phép toán nhân và chia
for w2 := 1 to dem do
begin
a1 := 0;
if b[w2] = '×' then
begin
if c[w2 - 1] = '*' then
a1 := w2 - 3
else
a1 := w2 - 1;
while true do
begin
if c[a1] = '*' then
a1 := a1 - 2
else
break ;
end;
a[a1] := a[a1] * a[w2 + 1];
c[w2 + 1] := '*';
end ;
if b[w2] = '÷' then
begin
if c[w2 - 1] = '*' then
a1 := w2 - 3
else
a1 := w2 - 1;
while true do
begin
if c[a1] = '*' then
a1 := a1 - 2
else
break ;
end;
a[a1] := a[a1] / a[w2 + 1];
c[w2 + 1] := '*';
end ;
end;
// Xử lý các phép toán cộng và trừ
for w2 := 1 to dem do
begin
a1 := 0;
if b[w2] = '+' then
begin
if c[w2 - 1] = '*' then
a1 := w2 - 3
else
a1 := w2 - 1;
while true do
begin
if c[a1] = '*' then
a1 := a1 - 2
else
break ;
end;
a[a1] := a[a1] + a[w2 + 1];
c[w2 + 1] := '*';
end ;
if b[w2] = '-' then
begin
if c[w2 - 1] = '*' then
a1 := w2 - 3
else
a1 := w2 - 1;
while true do
begin
if c[a1] = '*' then
a1 := a1 - 2
else
break ;
end;
a[a1] := a[a1] - a[w2 + 1];
c[w2 + 1] := '*';
end ;
end;
// Xuất kết quả
writeln(a[1]);
readln(e);
dem := 0;
ad := 0;
for w2 := 1 to 100 do
c[w2] := '';
if e = 'off' then
break ;
clrscr;
end ;
end;
end.
• Có thể thực hiện các phép tính số học cơ bản (+, -, *, /) trên các số thực.
• Có thể xử lý tối đa 50 biểu thức.
Lưu trữ các số và toán tử trong hai mảng, a và b tương ứng.
• Sử dụng ngăn xếp để theo dõi thứ tự ưu tiên của các phép toán.
• In kết quả của phép tính ra màn hình.
Đoạn code
program calculator_v2;
uses
crt;
var
// mảng lưu trữ các số
a: array [1..100] of real;
// mảng lưu trữ các phép toán
b, c: array [1..100] of string;
dem, ad, w2, a1: integer;
e: string;
begin
clrscr;
// Vòng lại chính
while true do
begin
// Xử lý đầu vào
dem := dem + 1;
if dem = 1 then
begin
writeln('Calculator');
readln(a[1]);
end ;
if dem > 1 then
begin
ad := ad + 1;
readln(a[dem + ad]);
end ;
if dem < 50 then
readln(b[dem * 2]) ;
// Xử lý phép tính
if (b[dem * 2] = '=') or (dem = 50) then
begin
dem := dem * 2 - 2;
// Xử lý các phép toán nhân và chia
for w2 := 1 to dem do
begin
a1 := 0;
if b[w2] = '×' then
begin
if c[w2 - 1] = '*' then
a1 := w2 - 3
else
a1 := w2 - 1;
while true do
begin
if c[a1] = '*' then
a1 := a1 - 2
else
break ;
end;
a[a1] := a[a1] * a[w2 + 1];
c[w2 + 1] := '*';
end ;
if b[w2] = '÷' then
begin
if c[w2 - 1] = '*' then
a1 := w2 - 3
else
a1 := w2 - 1;
while true do
begin
if c[a1] = '*' then
a1 := a1 - 2
else
break ;
end;
a[a1] := a[a1] / a[w2 + 1];
c[w2 + 1] := '*';
end ;
end;
// Xử lý các phép toán cộng và trừ
for w2 := 1 to dem do
begin
a1 := 0;
if b[w2] = '+' then
begin
if c[w2 - 1] = '*' then
a1 := w2 - 3
else
a1 := w2 - 1;
while true do
begin
if c[a1] = '*' then
a1 := a1 - 2
else
break ;
end;
a[a1] := a[a1] + a[w2 + 1];
c[w2 + 1] := '*';
end ;
if b[w2] = '-' then
begin
if c[w2 - 1] = '*' then
a1 := w2 - 3
else
a1 := w2 - 1;
while true do
begin
if c[a1] = '*' then
a1 := a1 - 2
else
break ;
end;
a[a1] := a[a1] - a[w2 + 1];
c[w2 + 1] := '*';
end ;
end;
// Xuất kết quả
writeln(a[1]);
readln(e);
dem := 0;
ad := 0;
for w2 := 1 to 100 do
c[w2] := '';
if e = 'off' then
break ;
clrscr;
end ;
end;
end.
Attachments
Last edited: