# GÓC SÁNG TẠO > Khu vực lập trình > Pascal/Delphi/Kylix >  Kí tự xuất hiện nhiều nhất

## giangitnguyen

Viết một chương trình nhập vào một xâu bất kì gồm các kí tự từ 'A' đến 'Z', in ra màn hình kí tự xuất hiện nhiều nhất trong xâu.

----------


## nhunhamnho

Var kt:array['A'..'Z']of integer;
i,max:integer;j,vt:char;
begin
{nhập xâu S}
fillchar(kt,sizeof(kt),0);
for i:=1 to length(S) do kt[s_]:=kt[s]+1;
max:=0;
for j:='A' to 'Z' do if kt[j]>max then 
begin
max:=kt[j];
vt:=j;
end;
write('Tu nhieu nhat:',vt);
readln;
end._

----------


## thaonguyen0494

> Var kt:array['A'..'Z']of integer;
> i,max:integer;j,vt:char;
> begin
> {nhập xâu S}
> fillchar(kt,sizeof(kt),0);
> for i:=1 to length(S) do kt[s_]:=kt[s]+1;
> max:=0;
> for j:='A' to 'Z' do if kt[j]>max then 
> begin
> ...


[I]_
Nhưng bài này của bạn chỉ đưa ra được 1 kí tự xuất hiện nhiều nhất. Nếu có nhiều kí tự xuất hiện nhiều thì cần đưa tất cả các ksi tự
Thêm vòng lặp :
For j:='A' to 'Z' do if kt[j]=max then write(j:4);
---------------------------------Bài viết đã được trộn ---------------------------------

Cách này của mình cũng được nhưng chỉ đưa ra kí tự xuất hiện nhiều nhất đầu tiên. Muốn đưa tất cả các kí tự thỏa mãn yêu cầu bài toán thì cần dùng mảng như bạn tieulong


```
[/FONT]
Var S:string;
ch,ch1:char;
i,max,d:byte;
Begin
  Write('Nhap vao xau:'); Readln(S);
  max:=0;

 For ch:='A' to 'Z' do
 begin
 d:=0;
  For i:=1 to length(S) do
   if S=ch then inc(d);
     if d>=max then
  Begin
    max:=d;
    ch1:=ch;
  end;
end;
 Write(' ki tu xuat hien nhieu nhat la:',ch1);
 Readln
 End.

```

_

----------


## batbai

> Var kt:array['A'..'Z']of integer;
> i,max:integer;j,vt:char;
> begin
> {nhập xâu S}
> fillchar(kt,sizeof(kt),0);
> for i:=1 to length(S) do kt[s_]:=kt[s]+1;
> max:=0;
> for j:='A' to 'Z' do if kt[j]>max then 
> begin
> ...


_


cách này cũng chỉ in ra 1 vt thôi mà . Nếu a xh 4 lần , b xh 4 lần , c xh 4 lần , thì sao ?_

----------


## sangdv291

_Thì thêm vòng FOr - do vào hang_vt ah!_
_
_

```
[I]Var kt:array['A'..'Z']of integer;
i,max:integer;j,vt:char;
begin
{nhập xâu S}
fillchar(kt,sizeof(kt),0);
for i:=1 to length(S) do kt[s[i]]:=kt[s]+1;
max:=0;
for j:='A' to 'Z' do if kt[j]>max then 
begin
max:=kt[j];
vt:=j;
end;
write('Cac tu  xuat hien nhieu nhat:');
For j:='A' to 'Z' do if kt[j]=max then write(j:4);
readln;
end.
```

----------


## lamtuenhi

uhm , thêm for do , nhưng code của tieulong đâu đúng , tại bạn nói đúng , mình thấy lạ thôi =))

----------


## minhle107

Bạn đọc chưa kí, mình đã nói bài của Tieulong chưa đưa được các phần tử và mình nói rằng vẫn phải dùng mảng như tieulong và thêm lệnh lặp nữa thì đúng.

----------


## chothuevanphonggiare

Ê, đề bài có yêu cầu đưa hết các phần tử đâu? Chỉ là đưa ra phần tử xuất hiện nhiều nhất thôi mà! Nếu đưa ra các phần tử thì cách của mình chỉ cần thêm 1 vòng for nữa là ok.

----------


## toihoitoi

> Ê, đề bài có yêu cầu đưa hết các phần tử đâu? Chỉ là đưa ra phần tử xuất hiện nhiều nhất thôi mà! Nếu đưa ra các phần tử thì cách của mình chỉ cần thêm 1 vòng for nữa là ok.


Nhất ? chỉ có 1 cái nhất àh ? 
Cũng chẳng cần lưu mảng làm j` cho tốn bộ nhớ , cứ lưu vào max và cũng 1 vòng for là đc

----------


## komoro92

```
[/FONT]
Var S:string;
ch,ch1:char;
i,max,d:byte;
Begin
  Write('Nhap vao xau:'); Readln(S);
  max:=0;

 For ch:='A' to 'Z' do
 begin
 d:=0;
  For i:=1 to length(S) do
   if S[i]=ch then inc(d);
     if d>=max then
  Begin
    max:=d;
    ch1:=ch;
  end;
end;
 Write(' ki tu xuat hien nhieu nhat la:',ch1);
 Readln
 End.
[FONT=Courier New]
```

----------


## haicauhoan

Ý mình không bảo nhất là chỉ có một. Đề bài chỉ ghi là in ra ptu xh nhiều nhất nhưng không nói là các ptu xh nhiều nhất. Việc ra đề cũng quan trọng lắm đó.

----------


## crawlers1214

> Ý mình không bảo nhất là chỉ có một. Đề bài chỉ ghi là in ra ptu xh nhiều nhất nhưng không nói là các ptu xh nhiều nhất. Việc ra đề cũng quan trọng lắm đó.


 Nhưng cứ làm không bỏ các trường hợp cho chắc ăn bạn à [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]. Mình từng bị vướng mấy cái này rồi, đề thế mà yêu cầu ra đúng các bộ test phải có các kí tự nhiều nhất nếu hơn 2.

----------


## tungbkhd

Nếu yêu cầu in hết thì đề phải thông báo, mập mờ vậy chết thí sinh

----------

