Professional Documents
Culture Documents
Bài tập mảng C
Bài tập mảng C
readln;
END.
Cu 16: S lng cc s hng dng lin tip c tng ln nht.
uses crt;
var a:array[1..100] of longint;
i,n,sld,j,maxtd,sldtln,d:longint;
BEGIN
clrscr;
write('Vao n=');readln(n);
for i:=1 to n do
begin write('a[',i,']=');readln(a[i]);end;
i:=1; maxtd:=-maxlongint;sldtln:=0;
While i<=n do
if a[i]>0 then
begin
sld:=0;j:=i;d:=0;
while ((j<=n)and(a[j]>0)) do
begin
inc(sld);
inc(d,a[j]);
inc(j)
end;
if d>maxtd then
begin maxtd :=d;sldtln:=sld;end;
inc(i,sld);
end
Else inc(i);
writeln('So luong so hang duong lien tiep co tong lon nhat la:',sldtln);
readln;
END.
.....................
Cu 18: Tng t cu 17
Cu 19:
uses crt;
var a:array[1..100] of longint;
i,n,sl,j,max:longint;
BEGIN
clrscr;
write('Vao n=');readln(n);
for i:=1 to n do
begin write('a[',i,']=');readln(a[i]);end;
i:=1; max:=0;
While i<=n-1 do
if a[i]*a[i+1]<0 then
begin
sl:=1;j:=i;
while ((j+1<=n)and(a[j]*a[j+1]<0)) do
begin
inc(sl);
inc(j)
end;
if sl>max then max:=sl;
inc(i,sl); { quay ve de xet tiep cac doan con lai}
end
Else inc(i);
writeln('So luong so hang dan dau nhieu nhat la:',max);
readln;
END.
.........................................................................................
Cu 20 , 21, 22 : Ci tng t nh cc cu trn .
Cu 23 : on con dng lin tip c nhiu cc s hng nht (nu c nhiu on con tho mn th c ra
mn hnh : s on con tho mn v cc on con )
VD:
program Doan_Con_Duong;
uses crt;
var A:array[1..100]of longint;
D,C:array[1..100] of byte;
n,i,j,k,max,d1,h:longint;
begin
clrscr;
repeat write('Nhap so phan tu cua mang n= ');readln(n);until N>0;
for i:=1 to n do begin write('A[',i,']=');readln(A[i]);end;
i:=1;k:=0;
while i<=n do
begin
while (i<=n)and(A[i]<=0) do inc(i); {tim vi tri dau tien cua doan con duong}
j:=i; {luu lai vi tri ban dau cua day con}
while (i<=n)and(A[i]>0) do inc(i);
if i-j>max then max:= i-j;
if i-1-j>=1 then begin inc(k); D[k]:=j;C[k]:=i-1;end;
end;
if k=0 then writeln('Khong co doan con duong nao trong mang ! ') else
begin
writeln('Co ',k,' doan con duong ! ');
for i:=1 to k do
if c[i]-d[i]+1=max then inc(d1);
writeln('Co ',d1,' doan con duong lon nhat do la:');
for i:=1 to k do
begin
if c[i]-d[i]+1=max then
begin
inc(h);
write('Doan con duong lon nhat thu ',h,'la :') ;
for j:=D[i] to C[i] do write(A[j],' ');
end;
writeln;
end;
end;
readln
end.
tes: n=10; 12 3 0 3 4 5 -7 8 6 4
Thng bo ra mn hnh nh sau:
KQ:
Co 3 doan con duong
Co 2 doan con duong lon nhat
doan con duong lon nhat thu 1 la: 3 4 5
Doan con duong lon nhat thu 2 la: 8 6 4
.............................................................................
Cu : 25 n cu 30 ci tng t cu 23.
readln;
END.
Cu 38, 39, 40: Chn mt s nguyn m (m nhp vo t bn phm ) vo cui , u, v tr k v v tr thch
hp ca dy .
program Chen;
uses crt;
Const Max=1000;
Type Day=array[1..Max] of longint;
Var A:Day;
N,i,k, m:integer;
BEGIN
Clrscr;
Write('So phan tu cua day so la N=');readln(N);
Writeln('Nhap cac phan tu cua day so');
For i:=1 to N do
Begin
Write('A[',i,']=');readln(A[i]);
End;
Write('Nhap vao phan tu can chen vao cuoi day so da cho la:');
Readln(m);
inc(N);
A[N]:=m;
For i:=1 to N do write(A[i]:8:2);
Readln;
inc(N);
For i:=N downto 2 do A[i]:=A[i-1];
A[1]:=m;
For i:=1 to N do write(A[i]:8:2);
Readln;
Repeat {}
Write('Vi tri thu k can chen la :');readln(k);
Until (k>=1)and(k<=N);
inc(N);
For i:=N downto k+1 do A[i]:=A[i-1]; {Keo}
A[k]:=m;
For i:=1 to N do write(A[i]:8:2);
Readln;
END.
Cu 40: T ci
T tng ca thut ton l:
Sp xp tng dn
Tng n ln 1 ( Inc(n))
Ko
Gn a[vt]:=m;
Thng bo ra mn hnh.
...................................................................................................................
Vi mi s ta lu tng ch s ca s vo mt mng B
Nu mng B c nhiu hn mt phn t th ta kim tra phn t u tin vi phn t cui cng .Tip
tc kim tra phn t th 2 vi gn cui ..( tng qut a[j]=a[k-j+1]).Qu trnh lp li n im gia ca dy
( iu kin ca vng lp :j<=k div 2) .
Cch2 :
i s cn kim tra ra xu
o xu