uses crt;
var s,t:string; i,n,a,e,tong,vt,b,kt:longint;
begin
clrscr;
write('S=');readln(s);
n:=length(s);
for i:=1 to n do
if (s[i]<>'+') then t:=t+s[i] else
begin
val(t,a,e);
inc(tong,a);
t:=''; vt:=i;
end;
for i:=vt+2 to n do
begin
val(copy(s,vt+1,i-(vt+1)),a,e);
val(copy(s,i,(n-i)+1),b,e);
if tong+a=b then kt:=1;
end;
writeln(kt=1);
readln
end.
////////////////////
Giải thích:
Cách làm: mình sẽ trích tất cả các số liên tiếp ra để tính tổng rồi xem có bằng ký tự cuối cùng không.
B1: Trích các số
Chạy từ 1 tới n(độ dài của s):
Nếu mà s[i] là số và nó ko phải ký tự cuối cùng(chừa số cuối cùng không tính tổng) thì thêm vào xâu t
Không thì đổi t thành số rồi thêm vào tổng
B2:
Mình đã tìm được cái vt khi làm B1
Mình sẽ chạy từ vt tới n nếu i là vạch phân chia 2 vế
-vế 1 đưa vào tổng
Nếu tổng = vế 2 thì ra true
Nếu có gì không hiểu hay code sai chỗ nào thì các bạn để lại bình luận nha các bạn!!!
Đây là một số text: