Cho sâu S có độ dài không qúa 255 kí tự chỉ gồm các kí tự chữ cái thường và chữ số( đoạn các ký tự số liên tiếp tạo thành một số nguyên, ở mỗi đoạn ký tự số liên tiếp phải trích ra số lớn nhất có thể, mỗi số lấy ra không có các số 0 không có nghĩa. Ví dụ, với sâu là aab04dhf23vf789 các số được trích ra là 4,234,789) hãy viết chương trình tìm số bé nhất và số lớn nhất trong các số được trích ra?
Dữ liệu vào cho trong tệp văn bản timso.inp gồm một sâu S chỉ chứa các ký tự chữ cái thường và chữ số.
Kết quả: đưa ra tệp văn bản timso.out:
-Dòng 1 đưa ra số bé nhất tìm được.
-Dòng 2 đưa ra số lớn nhất tìm được.
Bài này làm theo dạng nhập, xuất file nhé.
Các bạn đừng làm theo dạng nhập từ bàn phím.
Rất cám ơn ạ!
uses crt;
var s,t:string; d:text; i,n,min,max,a,e:longint;
begin
clrscr;
assign(d,’input.pas’);reset(d);
readln(d,s);
close(d);
assign(d,’output.pas’);rewrite(d);
for i:=1 to length(s) do if s[i]=’0′ then delete(s,i,1);
n:=length(s); min:=high(longint);
for i:=1 to n do
begin
if s[i]<=’9′ then t:=t+s[i];
if ((i-1>0)and(s[i-1]<=’9′)and(s[i]>’9′))or((i=n)and(s[i]<=’9′))then
begin
val(t,a,e);
If a>max then max:=a;
if a<min then min:=a;
t:=”;
end;
end;
writeln(d,min);
writeln(d,max);
close(d);
end.
//////
Giải thích
B1: Loại bỏ các số 0
B2: Trích số từ xâu
-Nếu s[i] là số thì đưa vào biến t
-nếu
(s[i] là chữ và trước đó là số) để biết đây là kết thúc của một số ngyên
hoặc(i đang ở cuối xâu vài s[i] là số)Không thỏa mản điều kiện trên thì chỉ có ở cuối xâu
nó là kết thúc của một số nguyên nhưng không có dấu hiệu cho biết như trên
thì tìm max,min.
Nếu có gì không hiểu hay code không hợp lí thì các bạn để lạ bình luận nha!!! 😀
Đây là một số text: