Đoạn con có các số hạng liên tiếp đan dấu nhiều nhất 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 đó ).. 29.[r]
(1)Một số tập lập trình Pascal tin 11
I Bài tập :
Nhập vào dãy n số nguyên A[1],A[2], ,A[n] Đọc hình thơng tin sau : 1 Tổng phần tử dãy.
2 Số lượng số hạng dương tổng số hạng dương. 3 Số lượng số hạng âm tổng số hạng âm.
4 Trung bình cộng dãy Trung bình cộng phần tử dương mảng Trung bình cộng phần tử âm mảng. 5 Chỉ số số hạng dương dãy.
6 Chỉ số số hạng âm dãy.
7. Chỉ số số hạng dương cuối dãy. 8 Chỉ số số hạng âm cuối dãy. 9 Số hạng lớn dãy số nó. 10 Số hạng nhỏ dãy số nó. 11 Số hạng âm lớn dãy số nó. 12 Số hạng dương nhỏ dãy số nó.
13 Giá trị lớn thứ nhì dãy số số hạng đạt giá trị lớn nhì. 14 Giá trị nhỏ thứ nhì dãy số số hạng đạt giá trị nhỏ nhì. 15 Số lượng số dương liên tiếp nhiều nhất.
16 Số lượng số hạng dương liên tiếp có tổng lớn nhất. 17 Số lượng số hạng âm liên tiếp nhiều nhất.
18 Số lượng số hạng âm liên tiếp có tổng lớn nhất.
19 Số lượng số hạng liên tiếp đan dấu nhiều ( dãy số hạng liên tiếp gọi đan dấu tích hai số liên tiếp âm ).
20 Số lượng phần tử không tăng nhiều nhất. 21 Số lượng phần tử giảm nhiều nhất. 22 Số lượng phần tử tăng nhiều nhất.
23 Đoạn dương liên tiếp có nhiều số hạng (nếu có nhiều đoạn thoả mãn đọc hình : số đoạn thoả mãn đoạn )
24 Đoạn gồm nhiều số hạng liên tiếp dãy lập thành cấp số cộng (nếu có nhiều đoạn thoả mãn thì đọc hình : số đoạn thoả mãn đoạn )
25 Đoạn có số hạng dương liên tiếp có tổng lớn nhất (nếu có nhiều đoạn thoả mãn đọc hình : số đoạn thoả mãn đoạn )
26 Đoạn có số hạng âm liên tiếp nhiều nhất (nếu có nhiều đoạn thoả mãn đọc hình : số đoạn thoả mãn đoạn )
27 Đoạn có số hạng âm liên tiếp có tổng lớn nhất (nếu có nhiều đoạn thoả mãn đọc hình : số đoạn con thoả mãn đoạn )
28 Đoạn có số hạng liên tiếp đan dấu nhiều nhất (nếu có nhiều đoạn thoả mãn đọc hình : số đoạn con thoả mãn đoạn )
29 Đoạn có phần tử khơng tăng nhiều nhất (nếu có nhiều đoạn thoả mãn đọc hình : số đoạn thoả mãn đoạn )
30 Đoạn có phần tử giảm nhiều nhất (nếu có nhiều đoạn thoả mãn đọc hình : số đoạn thoả mãn đoạn )
(2)33 Số lượng phần tử >= giá trị X ( nguyên ) cho trước.
34.Chuyển số hạng dương mảng lên đầu mảng in mảng hình. 35 Tìm số phần tử dương số nguyên tố mảng vị trí mảng 36 Sắp xếp tăng dần mảng cho (a[i]<=a[i+1] )
37 Sắp xếp giảm dần mảng cho (a[i]>=a[i+1] )
38 Chèn số nguyên m (m nhập vào từ bàn phím ) vào cuối dãy 39 Chèn số nguyên m (m nhập vào từ bàn phím ) vào đầu dãy 40 Chèn số nguyên m ( m nhập vào từ bàn phím ) vào vị trí k
41 Chèn số nguyên m ( m nhập vào từ bàn phím ) vào vị trí thích hợp VD: m =5 dãy cho sau xếp lại : 6
Thì dãy sau chèn là: 6
42 Tìm số phần tử dương số đối xứng thập phân mảng vị trí mảng.
II Hướng dẫn:
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 vị trí số dương
Câu 9: Số hạng lớn dãy số nó.
Gán Max:=a[1] so sánh phần tử mảng với Max Max < a[i]
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ì
(3)(Chú ý ĐK : if (Ln<a[i]) and (a[i]<> max) then Ln:= a[i]; ) * Duyệt lại mảng để lưu lại vị trí 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 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; i:=1; max:=0;
While i<=n do if a[i]>0 then begin sld:=0; j:=i;
while ((j<=n)and(a[j]>0)) do begin
(4)end;
if sld>max then max :=sld; inc(i,sld);
end Else inc(i);
writeln('So luong duong lien tiep nhieu nhat la:',max); readln;
END.
Câu 16: Số lượng số hạng dương liên tiếp có tổng lớn nhất.
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;
(5)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;
(6)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 lai} end
Else inc(i);
writeln('So luong so hang dan dau nhieu nhat la:',max); readln;
END.
Câu 20 , 21, 22 :Cài tương tự câu
Câu 23 :Đoạn dương liên tiếp có nhiều số hạng (nếu có nhiều đoạn thoả mãn đọc hình : số đoạn con thoả mãn đoạn )
VD:
(7)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 begin write('A[',i,']=');readln(A[i]);end;
i:=1;k:=0; while i<=n do begin
while (i<=n)and(A[i]<=0) inc(i); {tim vi tri dau tien cua doan duong} j:=i; {luu lai vi tri ban dau cua day con}
while (i<=n)and(A[i]>0) 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 duong nao mang ! ') else begin
writeln('Co ',k,' doan duong ! ');
for i:=1 to k do
if c[i]-d[i]+1=max then inc(d1);
(8)for i:=1 to k do begin
if c[i]-d[i]+1=max then begin
inc(h);
write('Doan duong lon nhat thu ',h,'la :') ; for j:=D[i] to C[i] write(A[j],' ');
end; writeln; end; end; readln end.
tes: n=10; 12 3 -7 4 Thông báo sau: KQ:
Co doan duong
Co doan duong lon nhat
doan duong lon nhat thu la: 5
Doan duong lon nhat thu la: 4
(9)Câu : 35 Tìm số phần tử dương số nguyên tố mảng.
{HAM NGUYEN TO} uses crt;
var a:array[1 100] of longint; i,n:integer;
{function nt(n:longint):boolean; var i:longint;
begin nt:=False;
for i:=2 to TRUNC(SQRT(n)) do if n mod i = then exit;
nt:=True; end;}
function NT(n:longint):boolean; var i,j:longint;
(10)NT:=true;
if (( n=2)or(n=3))then begin nt:=true;exit;end; if(( n=1)or(n mod 2=0)or(n mod 3=0))then begin nt:= false; exit;end; if n<25 then exit;
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 begin write('a[',i,']=');readln(a[i]);end; for i:=1 to n if ((a[i]>0)and nt(a[i])) then write(a[i],' '); readln;
END.
Câu 38, 39, 40: Chèn số nguyên m (m nhập vào từ bàn phím ) vào cuối , đầu, vị trí k vị trí thích hợp
program Chen; uses crt;
(11)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 write(A[i]:8:2); Readln;
inc(N);
For i:=N downto A[i]:=A[i-1]; A[1]:=m;
For i:=1 to N write(A[i]:8:2); Readln;
(12)Write('Vi tri thu k can chen la :');readln(k); Until (k>=1)and(k<=N);
inc(N);
For i:=N downto k+1 A[i]:=A[i-1]; {Keo} A[k]:=m;
For i:=1 to N write(A[i]:8:2); Readln;
END.
Câu 40: Tự cài
Tư tưởng thuật toán là:
Sắp xếp tăng dần
Tìm vị trí thích hợp lưu vào biến (vt) Tăng n lên ( Inc(n))
Kéo
Gán a[vt]:=m;
Thơng báo hình.
Câu 42:Tìm số phần tử dương số đối xứng thập phân mảng vị trí mảng.
Tư tưởng thuật tốn là:
Cách1:
Duyệt phần tử mảng (số hạng dãy)
Với số ta lưu chữ số số vào mảng B
Nếu mảng B có nhiều phần tử ta kiểm tra phần tử với phần tử cuối Tiếp tục kiểm tra
(13)Cách2 :
Dùng hàm mũ tính ngược lại ta số
Nếu số phần tử mà ta xét thơng báo số đối xứng
Cách3 :
Đổi số cần kiểm tra xâu Đảo xâu