Dữ liệu nhập:
- Nhập vào một xâu S duy nhất
Kết quả:
- in giá trị của xâu S ra màn hình. Dữ liệu đảm bảo S không vượt quá giới hạn số nguyên 64 bit.
Ví dụ- input 123+45-67+89 output 190
Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.
program xau_so_hoc;
uses crt;
procedure xu_li;
var s, x, xau : string; i, tinh, j, f1, f2 : integer;
begin
write('nhap xau: '); readln(xau);
i:=1;
repeat
x:=''; s:='';
while (xau[i] in ['0'..'9']) and (i<=length(xau)) do
begin
x:=x+xau[i];
inc(i); {tim dau '+' hoac tru '-'/tim so truoc dau do}
end;
for j:=i+1 to length(xau) do
if xau[j] in ['0'..'9'] then s:=s+xau[j] else
break;
val(x,f1); val(s,f2); {chuyen doi xau thanh so};
if xau[i]='-' then
tinh:=tinh +(f1-f2) else
if xau[i] = '+' then
tinh:=tinh + (f1+f2);
{tinh toan voi xau va dau da tim duoc}
i:=j;
until i>=length(xau);
write('xau da tinh toan: ', tinh);
end;
{chuong trinh chinh}
begin
clrscr;
xu_li;
end.
có một số chỗ mình chú thích hơi sai
đại khái ý tưởng của mình là như này nè:
đầu tiên mình tìm dấu - hoặc + và tìm số đầu tiên trước dấu cộng hoặc trừ (vòng while đầu tiên), rồi tìm số sau dấu đó (vòng for sau đó).
rồi chuyển thành xâu, nếu - thì cộng biến với hiệu 2 số, nếu + thì mình cộng với hiệu hai số
lưu ý: vòng while chỉ dùng cho lần lập đầu tiên thôi, để tránh sai số những vòng repeat tiếp theo thì dùng vòng for để tìm số tiếp theo dấu vừa tìm được (số sau dấu vừa tìm được đã tìm ở vòng for lần lặp trước);
ví dụ để dễ mường tượng nè
1+1
i sẽ bằng 1 để tránh trường s[0] sẽ bị exit code
vòng repeat 1:
tìm được vị trí dấu + và số trước dấu + (vòng while);
tìm được số 1 (vòng for);
vòng for: sẽ được chạy từ giá trị của biến i+1 (do i đang ở vị trí của dấu vừa tìm được, không phải số nên nếu chạy từ i lúc cộng dồn sẽ là +1 chứ không phải là 1);
+ nếu như s[j] mà không phải số thì mình dừng vòng for lại (break)
đổi 2 số '1' thành kiểu số
biến 'tính' =0
tính:=tính + (1+1) ( vì đây là dấu +); => tính=2;
biến i sẽ bằng giá trị cuối của biến j nhận được
tức là bằng 3
mà 3 = độ dài của xâu nên vòng repeat dừng lại
vòng lặp của repeat chỉ có 1 vòng
uses crt;
var s:string;
i,d,dem:integer;
begin
clrscr;
write('Nhap xau S:'); readln(s);
d:=length(s);
writeln('Cac ki tu so co trong xau S:');
dem:=0;
for i:=1 to d do
if s[i] in ['0'..'9'] then
begin
write(s[i]:4);
inc(dem);
end;
writeln;
writeln('So ki tu chu so co trong xau S: ',dem);
for i:=1 to d do
if s[i] in ['0'..'9'] then s[i]:='A';
writeln('Xau sau khi doi la: ',s);
readln;
end.
uses crt;
var s,s1,s2:string;
i,d:integer;
begin
clrscr;
readln(s);
s1:='';
s2:='';
d:=length(s);
for i:=1 to d do
begin
if s[i] in ['0'..'9'] then s1:=s1+s[i];
if (s[i] in ['a'..'z']) or (s[i] in ['A'..'Z']) then s2:=s2+s[i];
end;
writeln('Xau chua cac ki tu so la: ',s1);
writeln('Xau chua cac ki tu chu la: ',s2);
readln;
end.
Bài 1:
uses crt;
var S:String;
vt:integer;
begin
clrscr;
Write(‘Nhap 1 xau:’); Readln(S);
While pos(‘nang’,s)>0 do
Begin
Vt:= pos(‘nang’,s);
Delete(s,vt,4);
Insert(‘mua’,s ,vt);
End;
Writeln(‘Xau sau khi thay the ’,s);
Readln;
End.
Bài 2:
uses crt;
var st:string;
d,i,kt:integer;
begin
clrscr;
write('Nhap xau:'); readln(st);
d:=length(st);
kt:=0;
for i:=1 to d do
if st[i]<>st[d-i+1] then kt:=1;
if kt=0 then writeln(st,' la xau doi xung')
else writeln(st,' khong la xau doi xung');
readln;
end.
program bai1;
uses crt;
var i:integer;
s,s1:string;
begin
clrscr;
write('nhap S:');readln(s);
while pos('C',s)<>0 do
begin
insert('LOP11A',s,pos('C',s));
delete(s,pos('C',s),1);
end;
writeln('xau sau khi bien doi la: ',s);
writeln('do dai cua xau tren la: ',length(s));
write('nhap s1:');readln(s1);
if s1[1]=s[1] then writeln('ki tu dau cua hai xau trung nhau')
else writeln('ki tu dau cua hai xau khong trung nhau');
readln;
end.
s = input("Nhập xâu S: ")
k = input("Nhập kí tự k: ")
count = 0
for c in s:
if c == k:
count += 1
print("Số lần xuất hiện của kí tự k trong xâu S là:", count)
uses crt;
var st:string;
i,d,dem:integer;
begin
clrscr;
write('Nhap xau:'); readln(st);
d:=length(st);
dem:=0;
for i:=1 to d do
if st[i]=#32 then inc(dem);
writeln(dem);
readln;
end.
amazing, Mr An
@Nguyễn Quốc An