Bài tập pascal phần nâng cao

155 622 1
Bài tập pascal phần nâng cao

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 PHÉP ĐỆ QUI Thuật ngữ ĐỆ QUI (recursion ) tình hàm tự gọi cách trực tiếp gián tiếp Phép đệ qui gián tiếp (indirect recursion ) xảy hàm a() gọi hàm b() , sau hàm b() lại gọi hàm a() Pascal cho phép hàm đệ qui số trường hợp tỏ có ích Ví dụ phép đệ quy để tính giai thừa x!=x*(x-1)! program bt; uses crt; var n:integer; result:longint; function gt(n:integer):longint; begin if n=0 then gt:=1 else gt:=n*gt(n-1); end; begin write('Nhap n : ');readln(n); result:=gt(n); write(n,' !=',result); readln; end B1 : lập chương trình tính giá trò biểu thức A=SQRT(X+SQRT(X+ SQRT(X)) (n dấu ) với x giá trò cho từ bàn phím //chuong trinh de qui de tinh can so program bt; var n,number:longint; x,result:real; {dinh nghia de qui giai thua} function f(n:longint) :real; begin if(n=1) then f:=sqrt(x) else f:= sqrt(x+f(n-1)); end; begin write('Nhap mot so nguyen '); readln(number); write('Nhap x : ');readln(x); result:=f(number); write('A= ',result:12:2); readln; end ví dụ giá trò nhập vào x==3 tức ta cần tính factoria(3) ,hàm tính sau : f = factoria(3) a =a*factoria(3-1) =a*factoria(2); factoria(2) =2*factoria(2-1) =2*factoria ví dụ : Dãy Fibonacci : 0,1,1,2,3,5,8,13,21,… bắt đầu số : và có tính chất số Fibonaci tổng số Fibonacci trước dãy xuất tự nhiên đặc biệt hình thành dạng xoắn ốc Tỷ số số Fibonacci liên tiếp hội tụ số 1.618 số lại xuất nhiều lần tự nhiên gọi tỷ số vàng (golden ratio hay goden mean ) dãy fibonacci(0)=0 fibonacci(1)=1 fibonacci(n)=fibonacci(n-1)+fibonacci(n-2) //chuong trinh tinh so Fibonacci thu i program bt; uses crt; var n:integer; result:longint; function fibonarci(n:integer):longint; begin if (n=1) or (n=2) then fibonarci:=1 else fibonarci:=fibonarci(n-1)+fibonarci(n-2); end; begin write('Nhap n : ');readln(n); result:=fibonarci(n); write('Fibornaci(',n,') =',result); readln; end Bt1)lập trình đưa dãy số nguyên a1, an vào máy từ bàn phím Xếp số vừa chia hết cho vừa lẻ lên đầu dãy , số vừa chia hết cho vừa chẵn xuống cuối dãy đưa hình dãy đầu dãy xếp Bt1)program vidu; uses crt; var a:array[1 100] of integer; b:array[1 100] of integer; j,i,n,dem,tam,dem1,dem2:integer; begin clrscr;dem:=0; write('Nhap n : ');readln(n); for i:=1 to n begin write('Nhap a[',i,']= ');readln(a[i]); end; for i:=1 to n if (a[i] mod 3=0) and (a[i] mod 20) then begin inc(dem); b[dem]:=a[i]; end; for i:=1 to dem-1 for j:=i+1 to dem if(b[i]>b[j]) then begin tam:=b[i]; b[i]:=b[j]; b[j]:=tam; end; for i:=1 to dem write(b[i]:4); dem1:=n+1; for i:=1 to n if (a[i] mod 3=0) and (a[i] mod 2=0) then begin dem1:=dem1-1; b[dem1]:=a[i]; end; for i:=dem1 to n-1 for j:=i+1 to n if(b[i]>b[j]) then begin tam:=b[i]; b[i]:=b[j]; b[j]:=tam; end; for i:=dem1 to n write(b[i]:4); dem2:=dem; for i:=1 to n if(a[i] mod 30 ) then begin inc(dem2); b[dem2]:=a[i]; end; for i:=dem+1 to dem2-1 for j:=i+1 to dem2 if(b[i]>b[j]) then begin tam:=b[i]; b[i]:=b[j]; b[j]:=tam; end; for i:=dem+1 to dem2 write(b[i]:4); writeln('Xuat day chua sap xep : '); for i:=1 to n write(a[i]:3); for i:=1 to n a[i]:=b[i]; writeln('Xuat day sau sap xep : '); for i:=1 to n write(a[i]:4); readln; end Bài : lập chương trình nhập số nguyên N in hình theo thứ tụ ngược lại chữ số Ví dụ : 12345 in thành 54321 Bt2)program innguoc; uses crt; var a:array[1 10] of longint; j,i,n:integer; begin clrscr;i:=0; write('Nhap n : ');readln(n); while (n0) begin inc(i); a[i]:=n mod 10; n:=n div 10; end; writeln('so nguoc cua n la : '); for j:=1 to i write(a[j]); readln; end Bài 3: nhập vào dãy số nguyên in hình số khác dãy số Bt3)program vidu; uses crt; type taptrung=set of byte; var a:array[1 10] of byte; trung:taptrung; j,i,n:integer; begin clrscr;i:=0; write('Nhap n : ');readln(n); for i:=1 to n begin write('Nhap phan tu a[',i,']= ');readln(a[i]); end; trung:=[]; for i:=1 to n if not (a[i] in trung) then begin write(a[i]:3); trung:=trung +[a[i]]; end; readln; end Bt4 : Nhap vao sô xuất thừa số khác Bt4)program bt; uses crt; var n,i,so,J,t,dem:integer; a:array[1 10] of byte; begin clrscr; write('Nhap so : ');readln(so); dem:=0;t:=2;i:=0; while (so1 ) begin while (so mod t)=0 begin inc(i); so :=so div t; a[i]:=t; end; inc(t); end; FOR J:=1 TO I DO BEGIN WRITE(A[J]); if (ji) then write('x'); end; readln; end Bài ) viết chương trình nhập vào ma trận vuông k hàng k cột Sau xếp lại cho phần tử có trò tuyệt đối lớn hàng nằm đường chéo Bt5)program vidu; uses crt; var a:array[1 10,1 10] of integer; max:array[1 10] of integer; dau:array[1 10] of boolean; j,i,n,m,tam:integer; begin clrscr;i:=0; write('Nhap n : ');readln(n); for i:=1 to n for j:=1 to n begin write('Nhap phan tu a[',i,',',j,']= ');readln(a[i,j]); end; for i:=1 to n begin writeln; for j:=1 to n write(a[i,j]:4); end; for i:=1 to n max[i]:=0; for i:=1 to n begin max[i]:=abs(a[i,1]); for j:=1 to n if max[i]0) then begin max[i]:=max[i]; tam:=a[i,i]; a[i,i]:=max[i]; a[i,j]:=tam; end; if (abs(a[i,j])=max[i]) and (a[i,j][...]... s:=s+a[k]; if s=j then begin writeln; write(j,'='); for i:=1 to dem do begin write(a[i]:3); if i dem then write('+'); end; end; end; readln; end Bt 13 Nhập vào 2 mãng 1 chiều a gồm m phần tử , b gồm n phần tử xuất ra mãng c gồm các phần tử của a, b và đã được sắp xếp Bt130program bt84_5; uses crt; var tam,n,m,i,j:integer; a,b,c:array[1 100] of integer; begin clrscr; 15 write('Nhap n :');readln(n); write('Nhap... writeln(f2,st); end; close(f1);close(f2); 20 reset(f2); while not eof(f2) do begin readln(f2,st); writeln(st); end; readln; end Bt20 :Đệ qui quay lui và phương pháp nhánh cận Bài tóan tháp hà nội là một bài tóan cơ bản của thuật tóan đệ qui Bài tóan phát biểu đơn giản như sau : Cho 3 cọc A,B,C Coc A chứa N đóa với quy tắc trên nhỏ dưới to , mỗi lần chuyển chỉ được chuyển một đóa từ cọc này sang một trong... ',i,']'); writeln('Doan thu hai : a[',i+1,' ',n,']'); end; write('tiep tuc ');readln(ok) until upcase(ok)='K'; end; begin test; 35 end Bài 1.6 (Chia mảng tỷ lệ 1:k) Tìm cách chia mảng nguyên dương a[1 n] cho trước thành hai đoạn có tổng các phần tử trong đoạn này gấp k lần các phần tử trong đoạn kia , k nguyên dương program bh; const MN=100; var tk,n,i,m,k:integer; a:array[1 MN] of integer; procedure ran(m:integer);... các lập phương Có bao nhiêu phương pháp viết số tư nhiên N cho trước thành tổng lập phương của 2 số tự nhiên : N=i3+j3 Sự hóan vò của các số hạng không được tính, không được sử dụng phép nâng lũy thừa lên 1/3.mở rộng bài tóan nhập vào n xuất ra tất cả các số có thể viết dưới dạng tổng của 2 số lập phương Giải bt14 program bt87_3; uses crt; var k,n,m,i,j,z:integer; begin clrscr; write('z=');readln(z);... khỏi Turbo Pascal trở về Dos , Trong thư mục Tp bạn đánh vào Tpc myunit.pas nếu chương trình không có lỗi cú pháp , thì ta sẽ nhận được một tệp Myunit tpu là tệp thư viện tự tạo cho riêng bạn ( ở trong thư mục Tp ) thư viện bây giờ chứa một thủ tục bạn vừa tạo thành đó là procedure bac2(Nhà kinh doanh,b,c :integer); Một cách khác để tạo Myunit.tpu từ Myunit.pas mà không phải tháot ra khỏi turbopascal là... ',n,'=',i,'^3+',j,'^3');end; if k=n then dec(j); until i>j; 16 if m>0 then writeln('neu la ',n,'co the viet bang ',m,'cach'); end; readln; end Bt15 cho dãy số xuất ra số phần tử lặp nhiều nhất và số lần xuất hiện của mỗi phần tử PROGRAM BT85_5; uses crt; type taptrung=set of byte; var n,i,j,max:integer; trung:taptrung; a,b:array[1 100] of integer; begin clrscr; write('Nhap n :');readln(n); for... a[',1,' ',i,']'); writeln('Doan thu hai tu a[',i+1,' ',n,']'); end; write('Co tiep tuc ');readln(ok); until upcase(ok)='K'; end; begin TEST; end Chương 2 DỮ LIỆU VÀO RA Bài 2.1 (Sinh ngẫu nhiên theo khoảng ) sinh ngẫu nhiên cho mảng nguyên a n phần tử nằm trong khoảng –M M ;M>0 {b2.1Sinh ngau nhien cho mang a n phan tu nam trong khoang -M M;M>0} Program bt; var n,i:integer; a:array[1 100] of integer; procedure... and (p ... ngẫu nhiên cho mảng nguyên a n phần tử tạo thành k đoạn liên tiếp có tổng phần tử đoạn Bài 2.4 đặc tả : (1) chọn số lượng phần tử đoạn random(n div k)+1 , tổng số phần tử phát sinh ngẫu nhiên không... : ');readln(m); xem; end; 41 begin test; end Bài 2.9 (số độ cao h) độ cao số tự nhiên tổng chữ số số sinh toàn số tự nhiên có tối đa chữ số có độ cao h cho trước Ghi kết vào tệp văn có tên cho... then write('+'); end; end; end; readln; end Bt 13 Nhập vào mãng chiều a gồm m phần tử , b gồm n phần tử xuất mãng c gồm phần tử a, b xếp Bt130program bt84_5; uses crt; var tam,n,m,i,j:integer; a,b,c:array[1

Ngày đăng: 20/04/2016, 14:58

Từ khóa liên quan

Mục lục

  • Cách sử dụng các unit

    • Chương III BÀN PHÍM VÀ MÀN HÌNH

      • CHƯƠNG 4 : TỔ CHỨC DỮ LIỆU

      • Chương 5 : PHƯƠNG PHÁP THAM LAM

      • yêu cầu :

      • Bài toán che mắt mèo :

      • Chương FILES

      • CHƯƠNG SỐ HỌC DỒNG DƯ

      • CHƯƠNG MA TRẬN

        • Chương TRÒ CHƠI

        • THUẬT TOÁN HOÁN VỊ

Tài liệu cùng người dùng

Tài liệu liên quan