<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
Một số bài tập lập trình Pascal tin 11
<b> I. Bài tập :</b>
Nhập vào một dãy n số ngun 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.
<i><b>5. Chỉ số của số hạng dương đầu tiên của dãy.</b></i>
<i><b>6. Chỉ số của số hạng âm đầu tiên của dãy.</b></i>
7.
<i><b>Chỉ số của số hạng dương cuối cùng của dãy.</b></i>
<i><b>8. Chỉ số của số hạng âm cuối cùng của dãy.</b></i>
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ì.
<i><b>15. Số lượng các số dương liên tiếp nhiều nhất.</b></i>
<i><b>16. Số lượng các số hạng dương liên tiếp có tổng lớn nhất.</b></i>
<i><b>17. Số lượng các số hạng âm liên tiếp nhiều nhất.</b></i>
<i><b>18. Số lượng các số hạng âm liên tiếp có tổng lớn nhất.</b></i>
<i><b>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 </b></i>
<i><b>âm ).</b></i>
<i><b>20. Số lượng các phần tử không tăng nhiều nhất.</b></i>
<i><b>21. Số lượng các phần tử giảm nhiều nhất.</b></i>
<i><b>22. Số lượng các phần tử tăng nhiều nhất.</b></i>
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 đó )
24. Đoạn con gồm nhiều nhất các số hạng liên tiếp của dãy lập thành một cấp số cộ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 đó )
25. Đoạn con có các số hạng dương liên tiếp có tổng lớn 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 đó )
26. Đoạn con có các số hạng âm liên tiếp 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 đó )
27. Đoạn con có số hạng âm liên tiếp có tổng lớn 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 đó )
28. Đ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. Đoạn con có các phần tử khơng tăng 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 đó )
30. Đoạn con có các phần tử giảm 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 đó )
</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>
33. Số lượng các phần tử >= giá trị X ( nguyên ) cho trước.
34.
Chuyển các số hạng dương của mảng lên đầu mảng và in mảng ra màn hình.
35. Tìm số phần tử là dương và là số ngun tố của mảng và vị trí của nó trong 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 một số nguyên m (m nhập vào từ bàn phím ) vào cuối dãy
39. Chèn một số nguyên m (m nhập vào từ bàn phím ) vào đầu dãy
40. Chèn một số nguyên m ( m nhập vào từ bàn phím ) vào vị trí k .
41. Chèn một 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 khi sắp xếp lại là : 1 2 3 4 6
Thì dãy sau khi chèn là: 1 2 3 4 5 6
42. Tìm số phần tử là dương và là số đối xứng thập phân của mảng và vị trí của nó trong mảng.
<b> ...</b>
II . Hướng dẫn:
Câu: 5, 6, 7, 8:
Dùng toán tử :WHILE DO
i:=1;
<b>While ((i<=n)and(a[i]<=0)) Do inc(i);</b>
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á
<b>n Max:=a[1]</b>
so sánh từng phần tử của mảng với Max nếu
<b>Max < a[i]</b>
thì gán cho
<b>Max:=a[i].</b>
Câu:
10,11,12
Tương tự câu 9
Câu 13 :
Tìm lớn nhì .
</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>
(Chú ý ĐK :
<b>if (Ln<a[i]) and (a[i]<> max) then Ln:= a[i];</b>
)
* Duyệt lại mảng để lưu 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
<i><b>.</b></i>
<b>{So luong so hang duonglien tiep nhieu nhat}</b>
<b>uses crt;</b>
<b> var a:array[1..100] of longint;</b>
<b> i,n,sld,j,max:integer;</b>
<b> BEGIN</b>
<b> clrscr;</b>
<b> write('Vao n=');readln(n);</b>
<b> for i:=1 to n do</b>
<b> begin write('a[',i,']=');readln(a[i]);end;</b>
<b>i:=1; max:=0;</b>
<b>While i<=n do</b>
<b>if a[i]>0 then</b>
<b> begin</b>
<b> sld:=0; j:=i;</b>
<b> while ((j<=n)and(a[j]>0)) do</b>
<b> begin</b>
</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>
<b> end;</b>
<b> if sld>max then max :=sld;</b>
<b> inc(i,sld);</b>
<b> end</b>
<b>Else inc(i);</b>
<b>writeln('So luong duong lien tiep nhieu nhat la:',max);</b>
<b>readln;</b>
<b>END.</b>
Câu 16: Số lượng các số hạng dương liên tiếp có tổng lớn nhất.
<b>uses crt;</b>
<b> var a:array[1..100] of longint;</b>
<b> i,n,sld,j,maxtd,sldtln,d:longint;</b>
<b> BEGIN</b>
<b> clrscr;</b>
<b> write('Vao n=');readln(n);</b>
<b> for i:=1 to n do</b>
<b> begin write('a[',i,']=');readln(a[i]);end;</b>
<b>i:=1; maxtd:=-maxlongint;sldtln:=0;</b>
<b>While i<=n do</b>
<b>if a[i]>0 then</b>
<b> begin</b>
<b> sld:=0;j:=i;d:=0;</b>
</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>
<b> inc(sld);</b>
<b> inc(d,a[j]);</b>
<b> inc(j)</b>
<b> end;</b>
<b> if d>maxtd then</b>
<b> begin maxtd :=d;sldtln:=sld;end;</b>
<b> inc(i,sld);</b>
<b> end</b>
<b>Else inc(i);</b>
<b>writeln('So luong so hang duong lien tiep co tong lon nhat la:',sldtln);</b>
<b>readln;</b>
<b>END.</b>
<b>...</b>
Câu 18:
Tương tự câu 17
Câu 19:
<b>uses crt;</b>
<b> var a:array[1..100] of longint;</b>
<b> i,n,sl,j,max:longint;</b>
<b> BEGIN</b>
<b> clrscr;</b>
</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>
<b> begin write('a[',i,']=');readln(a[i]);end;</b>
<b>i:=1; max:=0;</b>
<b>While i<=n-1 do</b>
<b>if a[i]*a[i+1]<0 then</b>
<b> begin</b>
<b> sl:=1;j:=i;</b>
<b> while ((j+1<=n)and(a[j]*a[j+1]<0)) do</b>
<b> begin</b>
<b> inc(sl);</b>
<b> inc(j)</b>
<b> end;</b>
<b> if sl>max then max:=sl;</b>
<b> inc(i,sl); { quay ve de xet tiep cac doan con lai}</b>
<b> end</b>
<b>Else inc(i);</b>
<b>writeln('So luong so hang dan dau nhieu nhat la:',max);</b>
<b>readln;</b>
<b>END.</b>
...
<b>Câu 20 , 21, 22 :</b>
Cài tương tự như các câu trên .
<b>Câu 23 :</b>
Đ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 đó )
VD:
</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>
<b> uses crt;</b>
<b> var A:array[1..100]of longint;</b>
<b> D,C:array[1..100] of byte;</b>
<b> n,i,j,k,max,d1,h:longint;</b>
<b>begin</b>
<b> clrscr;</b>
<b> repeat write('Nhap so phan tu cua mang n= ');readln(n);until N>0;</b>
<b> for i:=1 to n do begin write('A[',i,']=');readln(A[i]);end;</b>
<b> i:=1;k:=0;</b>
<b> while i<=n do</b>
<b> begin</b>
<b> while (i<=n)and(A[i]<=0) do inc(i); {tim vi tri dau tien cua doan con duong}</b>
<b> j:=i; {luu lai vi tri ban dau cua day con}</b>
<b> while (i<=n)and(A[i]>0) do inc(i);</b>
<b> if i-j>max then max:= i-j;</b>
<b> if i-1-j>=1 then begin inc(k); D[k]:=j;C[k]:=i-1;end;</b>
<b> end;</b>
<b> if k=0 then writeln('Khong co doan con duong nao trong mang ! ') else</b>
<b> begin</b>
<b> writeln('Co ',k,' doan con duong ! ');</b>
<b> for i:=1 to k do</b>
<b> if c[i]-d[i]+1=max then inc(d1);</b>
</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>
<b> for i:=1 to k do</b>
<b> begin</b>
<b> if c[i]-d[i]+1=max then</b>
<b> begin</b>
<b> inc(h);</b>
<b> write('Doan con duong lon nhat thu ',h,'la :') ;</b>
<b> for j:=D[i] to C[i] do write(A[j],' ');</b>
<b> end;</b>
<b> writeln;</b>
<b> end;</b>
<b> end;</b>
<b> readln</b>
<b>end.</b>
<b>tes: n=10; 12 3 0 3 4 5 -7 8 6 4</b>
<b>Thơng báo ra màn hình như sau:</b>
<b>KQ:</b>
<b>Co 3 doan con duong</b>
<b>Co 2 doan con duong lon nhat</b>
<b>doan con duong lon nhat thu 1 la: 3 4 5</b>
<b>Doan con duong lon nhat thu 2 la: 8 6 4</b>
...
</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>
Câu :
35
Tìm số phần tử là dương và là số nguyên tố của mảng.
<b> {HAM NGUYEN TO}</b>
<b>uses crt;</b>
<b> var a:array[1..100] of longint;</b>
<b> i,n:integer;</b>
<b>{function nt(n:longint):boolean;</b>
<b> var i:longint;</b>
<b> begin</b>
<b> nt:=False;</b>
<b> for i:=2 to TRUNC(SQRT(n)) do</b>
<b> if n mod i = 0 then exit;</b>
<b> nt:=True;</b>
<b>end;}</b>
<b> function NT(n:longint):boolean;</b>
<b> var i,j:longint;</b>
</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>
<b> NT:=true;</b>
<b> if (( n=2)or(n=3))then begin nt:=true;exit;end;</b>
<b> if(( n=1)or(n mod 2=0)or(n mod 3=0))then</b>
<b> begin nt:= false; exit;end;</b>
<b> if n<25 then exit;</b>
<b> i:=5;j:=2;</b>
<b> while i<= TRUNC(SQRT(n)) do</b>
<b> begin</b>
<b> if n mod i=0 then begin nt:=false;exit;end;</b>
<b> inc(i,j);j:=6-j;</b>
<b> end;</b>
<b>end;</b>
<b> BEGIN</b>
<b> clrscr;</b>
<b> write('Vao n=');readln(n);</b>
<b> for i:=1 to n do begin write('a[',i,']=');readln(a[i]);end;</b>
<b>for i:=1 to n do if ((a[i]>0)and nt(a[i])) then write(a[i],' ');</b>
<b>readln;</b>
<b>END.</b>
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
<b>program Chen;</b>
<b>uses crt;</b>
</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>
<b>Type Day=array[1..Max] of longint;</b>
<b>Var A:Day;</b>
<b> N,i,k, m:integer;</b>
<b> </b>
<b>BEGIN</b>
<b>Clrscr;</b>
<b>Write('So phan tu cua day so la N=');readln(N);</b>
<b>Writeln('Nhap cac phan tu cua day so');</b>
<b>For i:=1 to N do</b>
<b> Begin</b>
<b> Write('A[',i,']=');readln(A[i]);</b>
<b> End;</b>
<b>Write('Nhap vao phan tu can chen vao cuoi day so da cho la:');</b>
<b>Readln(m);</b>
<b>inc(N);</b>
<b>A[N]:=m;</b>
<b>For i:=1 to N do write(A[i]:8:2);</b>
<b>Readln;</b>
<b>inc(N);</b>
<b>For i:=N downto 2 do A[i]:=A[i-1];</b>
<b>A[1]:=m;</b>
<b>For i:=1 to N do write(A[i]:8:2);</b>
<b>Readln;</b>
</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>
<b> Write('Vi tri thu k can chen la :');readln(k);</b>
<b>Until (k>=1)and(k<=N);</b>
<b>inc(N);</b>
<b>For i:=N downto k+1 do A[i]:=A[i-1]; {Keo}</b>
<b>A[k]:=m;</b>
<b>For i:=1 to N do write(A[i]:8:2);</b>
<b>Readln;</b>
<b>END.</b>
Câu 40:
Tự cài
<i>Tư tưởng của thuật toán là:</i>
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 1 ( Inc(n))
Kéo
Gán a[vt]:=m;
Thông báo ra màn hình.
...
Câu 42:
Tìm số phần tử là dương và là số đối xứng thập phân của mảng và vị trí của nó trong mảng.
<i>Tư tưởng của thuật toán là:</i>
Cách1:
Duyệt từng phần tử của mảng (số hạng của dãy)
Với mỗi số đó ta lưu từng chữ số của số đó vào một mảng B
Nếu mảng B có nhiều hơn một phần tử thì ta kiểm tra phần tử đầu tiên với phần tử cuối cùng .Tiếp tục kiểm tra
</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>
Cách2 :
Dùng hàm mũ tính ngược lại ta được một số
Nếu số này bằng phần tử mà ta đang xét thì thông báo là số đối xứng
Cách3 :
Đổi số cần kiểm tra ra xâu
Đảo xâu
</div>
<!--links-->