Giải giúp em với ạ :<<
<PASCAL>
Số xuất hiện nhiều nhất
Số trong xâu được hiểu là tập hợp các ký tự số đứng liền nhau trong xâu. Ví dụ: S "Kỳ thi HSG lop 6,7,8 nam học 2021-2022", có 5 số xuất hiện trong xâu là: 6, 7, 8, 2021, 2022.
RENUM.PAS
Yêu cầu: Hãy nhập vào từ bàn phím xâu ký tự S bất kỳ (0 < Length(S) <256), sau đó in ra sô xuất hiện nhiều nhất trong xâu. Nếu có nhiều số có cùng số lần xuất hiện và nhiều nhất thì in ra số nhỏ nhất, nếu trong xâu không có số nào thì in ra số 0. Biết rằng, các số xuất hiện trong xâu là những số nguyên dương có không quá 6 chữ số.
Vi dụ:
Nhập vào: S='thu4ngay2thang2nam2022
In ra:
Giải thích: Có 3 số khác nhau xuất hiện trong
xâu là: 2, 4, 2022. Trong đó số 2 xuất hiện nhiều nhất với số lần là 2.
Sab12cd12bb12b9b9c9n6n3n3'
Giải thích: Có 3 số khác nhau xuất hiện trong xâu là: 3, 9, 12
9
Trong đó có 2 số xuất hiện nhiều nhất là 9 và 12, có cùng số lần xuất hiện là 3. Số 9 nhỏ Lơn 12 nên ta in ra số 9.
Bạn thử code này nhé
program RENUM;
var
S: string;
frequency: array[0..9] of integer; // Mảng đếm số lần xuất hiện của các số từ 0 đến 9
maxFreq, maxNum, i, num: integer;
begin
// Khởi tạo tất cả các phần tử trong mảng đếm về 0
for i := 0 to 9 do
frequency[i] := 0;
// Nhập xâu ký tự S từ bàn phím
writeln('Nhap vao xau ky tu S: ');
readln(S);
// Đếm số lần xuất hiện của các số từ 0 đến 9 trong xâu S
for i := 1 to length(S) do
begin
if (S[i] >= '0') and (S[i] <= '9') then
begin
num := ord(S[i]) - ord('0');
frequency[num] := frequency[num] + 1;
end;
end;
// Tìm số có số lần xuất hiện nhiều nhất và nhỏ nhất
maxFreq := 0;
maxNum := 0;
for i := 0 to 9 do
begin
if frequency[i] > maxFreq then
begin
maxFreq := frequency[i];
maxNum := i;
end;
end;
// In ra số xuất hiện nhiều nhất
if maxFreq > 0 then
writeln('So xuat hien nhieu nhat la: ', maxNum)
else
writeln('Trong xau khong co so nao.');
readln;
end.