Bài Tập Về Mảng 1 Chiều Trong Pascal - Tài Liệu Text - 123doc
Có thể bạn quan tâm
- Trang chủ >>
- Đề thi >>
- Đề thi lớp 8
Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (302.22 KB, 46 trang )
Bài tập về mảng 1 chiều trong Pascal. Cho 1 dãy số gồm n phần tử n<=15. Giá trị từng phần tử là số thực. Thực hiện các chương trình sau:a) Nhập từ bàn phím số phần tử và giá trị từng phần tửb) Tính tổng các phần tử âm của dãyc) Tính tổng và trung bình cộng của các phần tử chẵn của dãyd) Tìm phần tử có giá trị lớn nhất của dãye) Tìm phần tử có giá trị nhỏ nhấtf) Sắp xếp dãy theo chiều giảm dần về giá trị của từng phần tửg) In các kết quả trên ra màn hìnhprogram vd1;var i,n :Byte; ta, tb, b, c, d :real; a: array[1 15] of real ;beginwrite(' nhập số lượng phần tử n ='); readln(n);Writeln('Nhap mang a: ');for i:=1 to n do begin write('a[',i,']= '); readln(a[i]) end;ta:=0;for i:=1 to n do if a[i] <0 then ta= ta + a[i] ; { tính tổng âm}tc:= 0; t:=1;for i:=1 to n do if i mod 2 =0 then begin t= t+1 ; tc= tc + a[i] ; {tính tổng phần tư chẵn} end; ttc = tc/t ; { trung bình phần tử chẵn}max:= a[1]; for i=2 to n do if max < a[i] then max =a[i] ; { tìm phần tử lớn nhất}min:= a[1]; for i=2 to n do if min > a[i] then min =a[i] ; { tìm phần tử nhỏ nhất}for i=2 to n do for j=n down to i do if (a[j]> a[j-1])then begin b:= a[j-1] ; a[j-1]:=a[j]; a[j]:=b;end; {sắp xếp các phần tử giảm dần về giá trị} for i=1 to n then begin write( a[i]); writeln; end; {in ra theo chiều dọc mảng}end. hết nếu muốn in theo chiều ngangfor i=1 to n then begin write( a[i]); write(' '); { dấu cách giữa 2 giấu ' } end; có gì sai sót thì bạn sửa nhe như khai báo các biến ấy có thể thiếu. cái này học hồi 11 nên không nhớ rõ lắmMột số bài tập lập trình PascalCreated by NgoHungVấn đề 3: Mảng 1 chiều Bài toán số 3.1: Nhập xuất và tính tổng các phần tử trong mảng.Ví dụ: A: 1 5 6 7 4 Kết quả: Tong S = 23Hướng dẫn: Để giải quyết bài toán cần phải đảm bảo các vấn đề:- Nhập mảng, có thể xây dựng thành hàm để đóng gói và sử dụng lại. Các thao tác theo yêu cầu:(1) Nhập số N.(2) Tiến hành lặp (từ 0 đến N-1) và nhập cho các giá trị Ai trong mảng.Lưu ý: N phải được vào truyền theo dạng tham biến (tức là &N)- Xuất mảng. Công việc đơn giản là sử dụng voøng lặp từ 0 đến N-1 để in ra các giá trị Ai cho mảng. Sau đó, Writeln xuống dòng.- Hàm tính tổng các phần tử cho một mảng Ao Khai báo và khởi tạo toång S là 0.o Sử dụng một vòng lặp (từ 0 đến N-1 để duyệt qua tất cả các giá trị Ai) để tính cộng dồn giá trị của Ai vào tổng S.- Viết thân chöông trình chính với nội dung dùng để kiểm tra kết quả thực hiện của hàm.o Khai báo mảng A có tối đa 20 phần tử và biến N chỉ số lượng phần tử của A.o Gọi hàm nhập mảng để nhập mảng A, với N phần tử.o Gọi hàm xuất mảng A, với N phần tử.o In giá trị của tổng các phần tử bằng cách truyền trực tiếp giá trị trả về của việc tính tổng cho Writeln(……)o Gọi hàm Readln( ) trước khi kết thúc để dừng lại xem kết quả.Chương trình:{ 1. Cac khai bao cho chuong trinh }Program Mang1C;Uses crt;Type Mang20 = array[1 20] of Integer;Var N:Integer; A:Mang20;{ 2. Thu tuc nhap mang A voi N la so phan tu }Procedure NhapMang1C(Var A : Mang20 ;Var N:Integer);Var i: Integer;Begin Write( 'So luong phan tu:' ); Readln( N); For i:=0 to N do Begin Write( 'Nhap phan tu thu ', i,'' ); Readln( A[i] ); End;End; { 3. Thu tuc xuat mang A voi N la so phan tu }Procedure XuatMang1C( Var A : Mang20;Var N :Integer );Var i:Integer;Begin For i :=0 to N do Write( A[i]:2 ); Writeln;End; { 4. Chuong trinh con tinh tong cac phan tu trong mang }Function TongMang1C( A : Mang20; N:Integer):longint;Var i :Integer; S :longint;Begin S := 0; For i:=0 to N do S := S + A[i] ; TongMang1C:=S;End; { 5. Than chuong trinh chinh }BEGIN NhapMang1C( A, N ); XuatMang1C( A, N ); Writeln(' Tong cac phan tu trong mang ', TongMang1C(A, N) ); Readln;END. Bài toán tương tự:(1) Tính tổng các số nguyên dương chia hết cho 5.Function TongSoChiaHet5( A:Mang20, N:Integer):Integer;Var S,i :Integer;Begin S:=0; For i:=0 to N do If(A[i] mod 5=0) S := S+A[i]; TongSoChiaHet5:= S;End;(2) Tính tổng các số nguyên tố trong mảngFunction LaSoNT( Var N:Integer) :Integer;Var i:Integer;Begin For i:=2 to N-1do If(N mod i = 0) then return 0 Else return 1;End;Function TongSoNT(Var A : Mang20, Var N:Integer):Integer;Var S,i:Integer;Begin S:=0; For i:=0 to Ndo If ( LaSoNT( A[i] ) ) then S :=S+ A[i]; TongSoNT :=S;End; Bài toán số 3.2: Đếm số lần xuất hiện của giá trị X trong mảng A. Đếm số lần xuất hiện của các phần tử trong mảng.Ví dụ: A: 1 5 6 7 4 1 5 5 1 1 X: 6Kết quả: So lan xuat hien X la 1So lan xuat hien cua cac phan tu:1 ==> 4 5 ==> 36 ==> 1 7 ==> 14 ==> 1 1 ==> 4 …….Hướng dẫn:+ Viết hàm đếm số lần xuất hiện củat một giá trị X nào đó được nhập vào, và xem như X nhà là tham số cho việc đếm số lần xuất hiện của nó trong A+ Viết hàm in ra số lần xuất hiên của tất cả các phần tử trong mảng, sử dụng lại hàm đã xây dựng ở trước.+ Xây dựng chương trình giải quyết bài toán trên gồm:- Khai báo mảng A, N phần tử.- Nhập / Xuất mảng A với N phần tử (lưu ý, phải có định nghĩa hàm nhập /xuất mảng).Hai hàm này được sử dụng kết quả của bài toán 3.1- Nhập giá trị X cần đếm số là xuất hiện.- In số lần xuất hiện của X trong A. Ý tưởng:o Khởi tạo biến đếm ban đầu là 0.o Sử dụng vòng lặp i, lặp từ 1 đến N.o Đối với mỗi phần tử A[i], nếu A[i] = X thì tăng biến đếm lên 1o Kết thúc, giá trị biến đếm là số lần xuất hiện cử X trong A.- In số lần xuất hiện của các phần tử trong A. Các hàm xây dựng:{ 1. Dem so phan tu A[i] trong mang bang gia tri X }Function DemPtuX(Var A : Mang20; N, X : Integer) : Integer;Var i , Count : Integer;Begin Count := 0; For i:=0 to N do If ( A[i] = X ) then Count := Count + 1; DemPtuX := Count;End; { 2. Dem so lan xuat hien cua tat ca cac phan tu trong mang }Procedure InSoLanXHcuaPTu( A:Mang20; N: Integer);Var i :Integer;Begin For i:=0 to N do Writeln( A[i] ,' ===> ', DemPtuX( A, N, A[i] ) );End; Source code chương trình chính:BEGIN Clrscr; NhapMang1C( A, N ); XuatMang1C( A, N ); Write( 'Gia tri X:' ); Readln( X ); Writeln( 'So lan xuat hien trong A la:', DemPtuX(A, N, X) ); InSoLanXHcuaPTu ( A, N ); Readln;END . Cải tiến: Không in ra các phần tử được lặp lại.Hướng dẫn: Đối với mỗi phần tử, trước khi in, kiểm tra xem nó xuất hiện trước nó hay không.- Nếu A[i] chưa xuất hiện trước nó, thì in ra số lần xuất hiện của A[i]- Nếu A[i] có xuất hiện trước nó, thì không in ra số lần xuất hiện của A[i] nữa, vì đã in ra số lần xuất hiện của phần tử có giá trị bằng A[i] rồi.Mở rộng: In ra phần tử xuất hiện ít nhất và nhiều nhất trong mảng.Bài toán số 3.3: Tìm kiếm và thay thế. Tìm kiếm vị trí xuất hiện của x trên mảng A. Thay thế những giá trị Ai là x thành y.Ví dụ: A: 1 5 6 7 4 1 5 5 1 1 X=5 Y=15Kết quả: Vi tri xuat hien X la 1Ket qua thay the: 1 15 6 7 4 1 15 15 1 1Hướng dẫn:- Xây dựng hàm tìm kiếm giá trị X trong mảng A, N phần tử. Sử dụng vòng lặp từ 0 đến N-1 để kiểm tra tất cả các giá trị Ai, nếu bằng x thì trả về vị trí i tìm thấy. Nếu thoát vòng lặp mà không tìm thấy thì trả về là –1.- Xây dựng hàm thay thế giá trị x bằng y tại vị trí tìm thấy đầu tiên. Tương tự như tìm kiếm, nhưng khi tìm thấy thì tiến hành gán giá trị mới cho Ai là y.- Xây dựng hàm thay thế tất cả các giá trị x bằng y tại mỗi vị trí tìm thấy. Sử dụng vòng lặp duyệt qua tất cả các giá trị của Ai, nếu Ai bằng x thì tiến hành gán thành y.Các hàm xây dựng:{ 1. Ham tim kiem gia tri X trong mang A voi N phan tu }Function TimKiem ( A:Mang20; N:Integer; X:Integer ):Boolean;Var Flag : Boolean; i:Integer;Begin Flag:=False; For i:=0 to N do Begin If (A[i] = x) then Begin Flag:=True; Break; {Tim thay ==> Tra ve vi tri tim thay } End; End; TimKiem:=Flag;End;{ 2. Thay the phan tu X dau tien tim thay trong mang bang gia tri Y }Function ThayThe(Var A:Mang20;Var N, x, y:Integer):Integer;Var i:Integer;Begin For i:=0 to N do If (A[i] = x) then Begin A[i] := y; { Tim thay x ==> thay the thanh y } Break; { Cham dut qua trinh thay the} End; ThayThe := i;End; { 3. Thay the tat ca cac phan tu co gia tri X tim thay bang gia tri Y }Procedure ThayTheTatCa (Var A:Mang20; Var N, x,y:Integer);Var i:Integer;Begin For i:=0 to N do If(A[i] = x) then { Tim thay x ==> thay the thanh y } A[i] := y;End; Source code chương trình chínhBEGIN NhapMang1C(A, N); { Ham nhap xuat khong lam lai nua } XuatMang1C(A, N); { Su du let qua o truoc } Write('Gia tri x:'); Readln(x); If (TimKiem(A,N,x)) then Writeln( 'Tim thay tai vi tri trong mang A.', x, k ) Else Writeln( 'Khong tim thay trong mang A', x ); Write('gia tri y:'); Readln(y); ThayThe(A, N, x, y); Writeln('Ket qua thay the ',x, y); XuatMang1C(A, N); ThayTheTatCa(A, N, x, y); Writeln('Ket qua thay the tat ca la:',x, y); XuatMang1C(A, N); Readln;END. Mở rộng: + Tìm kiếm các cặp 2 phần tử gần nhau có tổng chia hết cho 10. Thay thế các phần tử đó bằng tổng của chúng.Ví dụ: A: 1 19 62 7 8 32 12Ket qua: 20 20 62 7 40 40 12Procedure ThayTheBangTong(Var A:Mang20; N:Integer; X, Y:Integer);Var i,k:Integer;Begin For i:=0 to N do If( (A[i-1]+A[i]) mod 10 = 0) then Begin k := (A[i-1]+A[i]); A[i-1] := k; A[i] := k; End;End;Bài toán số 3.4: Kiểm tra mảng có đối xứng hay không? Kiểm tra mảng có tăng dần hay không?Mảng đối xứng là mảng có phần tử Ai = AN-i-1Nếu mảng không phải là mảng tăng dần, hãy sắp xếp nó thành mảng tăng dần.Ví dụ: Mảng A: 1 15 6 7 4 7 6 15 1Kết quả: Mang A doi xung, Mang A khong phai la mang tang danMảng A: 2 5 6 7 14 17 26 26 31Kết quả: Mang A khong doi xung, Mang A khong phai la mang tang danHướng dẫn:+ Xây dựng hàm int KtraDoiXung( A, N ) để kiểm tra tính đối xứng của mảng. Ý tưởng: Giả sử mảng A là mảng đối xứng, sử dụng vòng lặp để tìm kiểm một cặp đối xứng bất kỳ nhưng lại có giá trị không bằng nhau, khi đó trả về là mảng không đối xứng . Ngược lại là không tìm thấy nên mảng là mảng đối xứng .+ Xây dựng hàm int KtraMangTang( A, N ) để kiểm tra xem mảng A có phải là mảng tăng hay không. Mảng tăng là mảng có các phần tử đứng sau không nhỏ hơn phần tử đứng trước nó. Ý tưởng: Giả sử mảng A là mảng tăng, sử dụng vòng lặp để kiểm tra có tồn tại phần tử nào nhỏ hơn phần tử đứng trước nó hay không, nếu có thì trả về là mảng không không phải là mảng tăng (return 0). Ngược lại là không tìm thấy nên mảng là mảng tăng (return 1).+ Xây dựng hàm Function SxepMangTang( A, N ) để sắp xếp mảng A thành mảng tăng dần. Ý tưởng: Sử dụng 2 vòng lặp lồng nhau để kiểm tra hai phần tử tại vị trí i, j nếu i < j mà A[i] > A[j] thì hoán đổi giá trị của chúng. + Xây dựng chương trình để thể hiện kết quả đánh giá trên. Các hàm xây dựng:{ 1. Ham kiem tra mang doi xung }Function KtraDoiXung (A:Mang20; N:Integer ) : Boolean;Var Flag:Boolean; i :Integer;Begin Flag:=True; For i :=1 to N do If(A[i] <> A[N-i +1]) Then Flag :=False; { Cham dut kiem tra, ket qua qua trinh : khong doi xung } KtraDoiXung :=Flag;End;{ 2. Ham kiem tra mang tang }Function KtraMangTang ( A:Mang20; N :Integer) : Boolean;Var Flag : Boolean; i :Integer;Begin Flag := True; For i :=1 to N do If(A[i] < A[i-1]) Then Flag :=False; { Cham dut kiem tra, ket qua qua trinh : khong tang } KtraMangTang :=Flag;End;{ 3. Thu tuc sap xep mang tang }Function SxepMangTang (A:Mang20; N:Integer ):Integer;Var i ,j,k :Integer;Begin For i :=1 to N do For j :=1 to N do If ( (i<j) and (A[i] > A[j]) ) then Begin k := A[i]; { Tien hanh hoan doi gia tri A[i], A[j] } A[i] := A[j]; { cho nhau thong qua bien tam k } A[j] := k; End;End;Source code chương trình chính:BEGIN Clrscr; NhapMang1C(A, N); { Ham nhap xuat khong nhac lai nua } XuatMang1C(A, N); { Su dung ket qua o truoc } If ( KtraDoiXung (A, N ) ) then Writeln( ' Mang A doi xung.') Else Writeln(' Mang A khong doi xung.'); If ( KtraMangTang (A, N ) ) then Writeln( 'Mang A la mang tang ') Else Begin Writeln( 'Mang A khong phai la mang tang. '); SxepMangTang( A, N ); Writeln( 'Ket qua sap sep:'); XuatMang1C(A, N); End; Readln;END . Mở rộng:+ Kiểm tra mảng A chỉ chứa toàn những số nguyên tố?+ Kiểm tra mảng giảm dần, Sắp xếp mảng giảm dần.+ Sắp xếp mảng A có các số dương tăng dần, các số âm giảm dần.Function SxepDuongTangAmGiam ( A[]:Mang20, N:Integer );Var i ,j ,k:Integer;Begin For i:=1 to N do For j:=1 to N do If ( ( (i<j)and (A[i] > A[j]) and (A[i]>0) and (A[j]>0)) or ((i<j) and ( A[i] < A[j] ) and ( A[i]<0) and ( A[j]<0))) then Begin k := A[i]; { Tien hanh hoan doi gia tri A[i], A[j]} A[i] := A[j]; { thong qua bien tam k } A[j] := k; End;End;+ Kiểm tra mảng A là một chuỗi cấp số cộng có công sai k = 5?Ví dụ: 1 6 11 16 21 26 31Function KtraMangCapSoCong (A:Mang20; N:Integer; k:Integer):Boolean;Var flag :boolean; i :Integer;Begin for i:=1 to N do if(A[i] < > A[i-1] + k) then flag:=false; { Cham dut, ket qua: khong phai} KtraMangCapSoCong:=flag; {Ket qua kiem tra la mang cap so cong}End; Bài toán số 3.5: Viết thủ tục và chương trình chèn phần tử X vào vị trí k trong mảng A, N phần tử. Xoá phần tử ở vị trí h trong mảng A. Ví dụ: A : 12 2 3 6 5 17 X = 20 , k = 3 h = 2Kết quả chèn: 12 2 3 20 6 5 17Kết quả xoá: 12 2 20 6 5 17Hướng dẫn:- Viết thủ tục chèn một phần tử X vào vị trí k nào đó cho mảng A (có N phần tử). Ý tưởng thuật toán:+ Dịch chuyển các phần tử từ vị trí k đến N-1 lùi một vị trí, trở thành các phần tử từ vị trí k+1 đến N. Lưu ý, để tránh trường hợp các phần tử đè lên nhau, giải thuật phải tiến hành di dời các phần tử sau trước….đến các phần tử k sau.+ Gán giá trị cho A[k] là x.+ Tăng số lượng phần tử của A lên 1, như thế N phải được truyền theo dạng tham biến- Viết thủ tục xoá một phần tử ở vị trí k trên mảng A (có N phần tử). Ý tưởng thuật toán:+ Dịch chuyển các phần tử từ vị trí k đến N-1 tiến về trước một vị trí, trở thành các phần tử từ vị trí k-1 đến N-2.+ Giảm số lượng phần tử của A xuống 1, như thế N phải được truyền theo dạng tham biến . Nội dung các thủ tục chính xây dựng:{ 1. Thu tuc chen phan tu }Procedure ChenPhanTu( A:Mang20;Var N : Integer; k, X:Integer);Var i :Integer;BeginFor i:=N downto k+ 1 do A[i] := A[i-1]; A[k] := X; N:=N+1;End;{ 2. Thu tuc xoa phantu }Procedure XoaPhanTu( A:Mang20; Var N ,k:Integer);Var i :Integer;Begin For i:=k to N-1 do A[i] := A[i+1]; N:=N-1;End; Source code chương trình chính:BEGIN NhapMang1C(A, N); { Ham nhap xuat khong lam lai nua } XuatMang1C(A, N); { Su du let qua o truoc } Write('Gia tri x:'); Readln(x); Write('Vi tri k,h:'); Readln(k,h); Writeln('Ket qua chen vao la:'); ChenPhanTu(A, N, k, x); XuatMang1C(A, N); Writeln('Ket qua xoa phan tu o vi tri la:', h); XoaPhanTu(A, N, h); XuatMang1C(A, N); Readln;ENDMột số bài tập lập trình PascalCreated by NgoHungVấn đề 2: Chương trình con: Thủ tục và Hàm Bài toán số 2.1: Viết chương trình chuyển đổi số tự nhiên N cho trước sang hệ cơ số 2 bằng việc xây dựng hàm chuyển đổi.Hướng dẫn:- Xây dựng hàm Dec2Bin( ) chuyển đổi từ số tự nhiên sang số nhị phân.o Sử dụng biến S để lưu giá trị số nhị phân của N. Khởi gán bằng 0.o Tiến hành lặp chuyển đổi cơ số: Lặp trong khi mà N > 0 SoDu = số dư của N chia cho 2. N = N chia cho 2. Bổ sung chữ số SoDu vào số S thành một chữ sốo Trả về kết quả cuối cùng của S.- Viết thân chöông trình chính với nội dung dùng để kiểm tra kết quả thực hiện của hàm.o Khai báo biến N, Mo Thông báo nhập, nhập giá trị cho biến No Gán giá trị M bằng kết quả trả về của hàm Dec2Bin( N )o In thông báo về kết quả số nhị phân chuyển đổi được (giá trị của M)o Gọi hàm readln trước khi kết thúc chöông trìnhChương trình:Program Doi_Co_So;Uses crt;Var N:integer;{ 1. Thu tuc chuyen so tu nhien n cho truoc sang ket qua tra ve he co so 2 }Function Dec2Bin ( n:integer ):integer;Var S,So,Du:integer;Begin S := 0; So := n ; While ( So > 0) do Begin Du := So mod 2 ; So := So div 2 ; S := S * 10 + Du; End; Dec2Bin:= S ;End; { 2. Than chuong trinh chinh dap ung yeu cau bai toan }BEGIN clrscr; write( 'Nhap so N =' ); readln(N ); writeln(' Dang nhi phan cua N la ', Dec2Bin(N) ); readln;END. Bài toán số 2.2: Viết các hàm USCLN(a, b) và BSCNN(a, b).Hướng dẫn: Khai báo hàm USCLN có:Tên hàm: USCLNKiểu dữ liệu trả về: integerTham số: 2 tham trị là int a, int bGiá trị trả về: chính là giá trị ước số chung lớn nhất của a và b.Xử lý tìm USCLN, BSCNN: Dựa trên ví dụ đã có ở phần trước.Nội dung hàm:Function USCLN( a, b : Integer) : Integer;Var Sodu:integer;Begin While (b <> 0) do Begin Sodu:= a mod b; a := b; b := Sodu; End; USCLN := a;End;{Tuong tu ham BSCNN(a, b : Integer)}Function BSCNN( a, b : Integer) : Integer;Var k :integer;Begin For k := a to a*b do { Lap voi moi i co gia tri tu a den 1} If ((k mod a = 0) and ( k mod b = 0)) then { Kiem tra a, b cung chia het cho k? } Break; { break de thoat, luu giu lai gia tri cua k.} BSCNN:= k;End; Bài toán số 2.3: Viết hàm kiểm tra số N có phải là số nguyên tố hay không?Hướng dẫn: Khai báo hàm kiểm tra số nguyên tố có:Tên hàm: KiemtraSNTDữ liệu trả về: int, ( 0 nếu không phải là số nguyên tố, là 1 nếu là số nguyên tố )Tham số: tham trị là int N, số cần kiểm tra.Xử lý kiểm tra: Dựa trên ví dụ đã có ở phần trước.Nội dung hàm:Function KiemtraSNT( N : Integer ) : Boolean;Var flag : Boolean; i : Integer;Begin flag := True; { Khoi gan gia tri dung cho ktrSNT} For i := 2 to N-1 do { Lap voi moi i co gia tri tu 2 den N-1} If ( N mod i = 0 ) then { Kiem tra xem N co’ chia het cho i hay khong} flag:=false; { Neu dung thi khong con la so nguyen to nua} KiemtraSNT:=flag;End; Cải tiến, không sử dụng biến phụ:Function KiemtraSN( N : Integer ) : Integer;Var i :integer;Begin For i := 2 to N-1 do { Lap voi moi i co gia tri tu 2 den N-1} If ( N mod i = 0 ) then { Kiem tra xem N co’ chia het cho i hay khong} Writeln('N khongla SNT') { Neu dung thi khong con la so nguyen to nua} Else Writeln('N la SNT'); { N la SNT}End; Bài toán số 2.4: Viết chương trình thực hiện lần lượt các công việc sau:- Lập thủ tục nhập ba số thực dương a , b , c từ bàn phím .- Lập thủ tục kiểm tra xem ba số trên có lập thành ba cạnh của tam giác hay không ?- Viết hàm tính diện tích của tam giác .- Viết hoàn thiện chương trình chính.Chương trìnhProgram Tam_Giac;Uses crt;Var a,b,c : Integer; { 1. Thu tuc nhap}Procedure NhapABC (Var a, b, c : Integer);Begin Write( 'Nhap a:' ); Readln( a ); Write( 'Nhap b:' ); Readln( b ); Write( 'Nhap c:' ); Readln( c );End; { 2. Ham tinh dien tich}Function Dientich( a, b, c:Integer ) : Real;Var dt,p : Real;Begin p := (a+b+c)/2; dt := sqrt(p* (p-a)*(p-b)*(p-c)); Dientich := dt;End; { 3. Thu tuc kiem tra va In kqua tinh dien tich (neu la tam giac) }Procedure KiemTra_InDienTich ( a,b,c:Integer);Begin If ((a+b>c) and (b+c>a) and (a+c>b)) then Writeln(' Ba canh tren tao thanh tam giac.dien tich', Dientich(a,b,c) ) Else Writeln('Ba canh tren khongtao thanh tam giac');End; { 3. Than chuong trinh chinh }BEGIN NhapABC(a,b,c); KiemTra_InDienTich (a,b,c);END. Bài toán số 2.5: Viết chương trình hoàn chỉnh thực hiện phân tích ra N ra thành các thừa số nguyên tố. Ví dụ: N = 1260 = 2 . 2 . 3 . 3 . 5 . 7Hướng dẫn:- Viết hàm nhập số N. Lưu ý, hàm nhập cần truyền tham số N theo dạng tham biến để lưu lại giá trị đã nhập vào.- Viết hàm phân tích số N ra các thừa số nguyên tố và in các thừa số đó ra màn hình với ý tưởng thuật toán:o Chia N cho số nguyên tố u (nhỏ nhất là 2).o Trong khi N còn chia hết cho u thì tiến hành phân tích N với u là thừa số. Giảm N đi u lần.o Nếu N không chia hết cho u, thi tăng u lên 1.o Quá trình lặp lại với u từng bước tăng lên 1 nếu N không chia hết cho u. N từng bước giảm xuống u lần nếu N chia hết cho u.o Quá trình lặp lại đến một mức u tăng lên và N giảm xuống để N = u, khi đó giá trị mới của N sẽ là 1.Chương trình:Program Phan_Tich_Thua_So;Uses crt;Var N : integer;{ 1. Thu tuc nhap so N. } Procedure NhapSoN( var NN : Integer ); Begin NN := 0; {Gan khoi dau bang 0 de vao vong lap, vong lap dung khi nhap khac 0} While ( N = 0 ) do Begin Write( 'Nhap N=' ); Readln(NN ); End; End; { 2. Thu tuc phan tich N ra thanh cac thua so nguyen to } Procedure PhantichSoN ( Var N1 : Integer ); Var u,dem:Integer; Begin If ( N1 > 1 ) Then Begin u := 2; dem := 0; While ( N1 > 1 ) do If ( N1 mod u = 0 ) Then Begin dem:=dem+1; Writeln( u); N1 := N1 div u; End Else u:=u+1; End Else Writeln(' Khong the phan tich duoc' ); End;
Tài liệu liên quan
- thuat toan ve mang 1 chieu
- 39
- 1
- 16
- Bài tập về mạng máy tính_Tin 9
- 36
- 1
- 7
- BÀI TẬP VỀ MẢNG MỘT CHIỀU
- 7
- 21
- 529
- BÀI TẬP VỀ MẢNG 1 CHIỀU(TT)
- 17
- 4
- 54
- Gián án Các bài tập hay về mảng 1 chiều
- 9
- 6
- 239
- BÀI 11: KIỂU MẢNG 1 CHIỀU
- 17
- 743
- 1
- 110 bai tap ve phep to do trong mat phang tSy
- 44
- 659
- 4
- bài tập dòng điện xoay chiều trong đề thi đại học
- 15
- 1
- 0
- VẬT LÝ - CÁC DẠNG BÀI TẬP VỀ ĐIỆN XOAY CHIỀU
- 4
- 493
- 3
- Bài tập về mảng 1 chiều trong pascal
- 46
- 4
- 13
Tài liệu bạn tìm kiếm đã sẵn sàng tải về
(215.5 KB - 46 trang) - Bài tập về mảng 1 chiều trong pascal Tải bản đầy đủ ngay ×Từ khóa » Bài Tập Mảng Một Chiều Pascal
-
Pascal : Bài Tập Mảng 1 Chiều Hot Nhất Nên Xem - Express Magazine
-
Seri 100 Bài Tập Pascal Nâng Cao – Chương V : Dữ Liệu Kiểu Mảng ...
-
Bài Tập Về Mảng 1 Chiều Trong Pascal (1)
-
KIỂU MẢNG - NHỮNG BÀI TẬP PASCAL LỚP 11 HAY
-
Bài Tập Cơ Bản-nâng Cao Mảng - Slideshare
-
Bài Tập Pascal Lớp 11 Kiểu Mảng
-
Bài Tập Pascal Lớp 11 Mảng 1 Chiều
-
Bài Tập Về Mảng 1 Chiều Pascal
-
Hướng Dẫn Giải Các Bài Tập Về Mảng 1 Chiều Trong Pascal - YouTube
-
Hướng Dẫn Giải Các Bài Tập Về Mảng 1 Chiều Trong Pascal - YouTube
-
Bài 13: Bài Tập Mảng Một Chiều.ppt (bài Giảng Tin Học 11) | Tải Miễn Phí
-
Bài Tập Mảng 1 Chiều Pascal Có Lời Giải - Thả Rông