Gián án Các bài tập hay về mảng 1 chiều - Pdf 83

Chuyên đề I
Phơng pháp cài đặt một số phép toán trên mảng một chiều.
..................................................*****.....................................................
I. Bài tập :
Nhập vào một dãy n số nguyên A[1],A[2],...,A[n] . Đọc ra màn hình các thông tin sau :
1. Tổng các phần tử của dãy.
2. Số lợng các số hạng dơng và tổng của các số hạng dơng.
3. Số lợng các số hạng âm và tổng của các số hạng âm.
4. Trung bình cộng của cả dãy. Trung bình cộng các phần tử dơng của mảng. Trung bình cộng các
phần tử âm của mảng.
5. Chỉ số của số hạng dơng đầu tiên của dãy.
6. Chỉ số của số hạng âm đầu tiên của dãy.
7. Chỉ số của số hạng dơng cuối cùng của dãy.
8. Chỉ số của số hạng âm cuối cùng của dãy.
9. Số hạng lớn nhất của dãy và chỉ số của nó.
10. Số hạng nhỏ nhất của dãy và chỉ số của nó.
11. Số hạng âm lớn nhất của dãy và chỉ số của nó.
12. Số hạng dơng nhỏ nhất của dãy và chỉ số của nó.
13. Giá trị lớn thứ nhì của dãy và các chỉ số của các số hạng đạt giá trị lớn nhì.
14. Giá trị nhỏ thứ nhì của dãy và các chỉ số của các số hạng đạt giá trị nhỏ nhì.
15. Số lợng các số dơng liên tiếp nhiều nhất.
16.Số lợng các số hạng dơng liên tiếp có tổng lớn nhất.
17. Số lợng các số hạng âm liên tiếp nhiều nhất.
18.Số lợng các số hạng âm liên tiếp có tổng lớn nhất.
19. Số lợng các số hạng liên tiếp đan dấu nhiều nhất ( dãy số hạng liên tiếp đợc gọi là đan dấu
nếu tích hai số liên tiếp âm ).
20. Số lợng các phần tử không tăng nhiều nhất.
21. Số lợng các phần tử giảm nhiều nhất.
22.Số lợng các phần tử tăng nhiều nhất.
23. Đoạn con dơng liên tiếp có nhiều các số hạng nhất (nếu có nhiều đoạn con thoả mãn thì đọc
ra màn hình : số đoạn con thoả mãn và các đoạn con đó )

II . phơng pháp:
Câu: 5, 6, 7, 8:
Dùng toán tử :WHILE DO
i:=1;
While ((i<=n)and(a[i]<=0)) Do inc(i);
Ra khỏi vòng lặp i chính là vị trí của số dơng đầu tiên .
Câu 9: Số hạng lớn nhất của dãy và chỉ số của nó.
Gán Max:=a[1] so sánh từng phần tử của mảng với Max nếu Max < a[i]
thì gán cho Max:=a[i].
Câu: 10,11,12
Tơng tự câu 9
Câu 13 :Tìm lớn nhì .
Tìm Min, Max .Gán cho Biến lớn nhì( Ln) Ln:=Min duyệt mảng
(Chú ý ĐK : if (Ln<a[i]) and (a[i]<> max) then Ln:= a[i]; )
* Duyệt lại mảng để lu lại vị trí của phần tử lớn nhì
Câu 14 :Tìm nhỏ nhì .
Tơng tự câu 13
Câu 15 :

Số lợng các số dơng liên tiếp nhiều nhất
.
{So luong so hang duonglien tiep nhieu nhat}
uses crt;
var a:array[1..100] of longint;
i,n,sld,j,max:integer;
BEGIN
clrscr;
write('Vao n=');readln(n);
for i:=1 to n do
begin write('a[',i,']=');readln(a[i]);end;

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.
.....................
C©u 18: T¬ng tù c©u 17
C©u 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;

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

i:=5;j:=2;
while i<= TRUNC(SQRT(n)) do
begin
if n mod i=0 then begin nt:=false;exit;end;
inc(i,j);j:=6-j;
end;
end;
BEGIN
clrscr;
write('Vao n=');readln(n);
for i:=1 to n do begin write('a[',i,']=');readln(a[i]);end;
for i:=1 to n do if ((a[i]>0)and nt(a[i])) then write(a[i],' ');
readln;
END.
Câu 38, 39, 40: Chèn một số nguyên m (m nhập vào từ bàn phím ) vào cuối , đầu, vị trí k và vị trí
thích hợp của dãy .
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]);


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status