1. Trang chủ
  2. » Công Nghệ Thông Tin

Ebook tự học lập trình pascal (tập 2) phần 2 bùi việt hà (chủ biên)

86 242 5
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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

Thông tin cơ bản

Định dạng
Số trang 86
Dung lượng 0,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Begin Writeln Tính trung bình cộng của N số nguyên:; Write‘Nhap gia tri N:'}; ReadinN;... Như vậy số 0 chính là số nguyên không âm nhỏ nhất chưa được điền trên hàng thứ n+1, và cột thứ

Trang 1

§3 KIEU DU LIEU MANG

1 a) Sai vì 5 và & không cùng kiểu

b) Sai vì 3.4 và 4.8 không phải là kiểu đếm được c) Sai vi thiếu kiểu chỉ dẫn

d) Sai vì đoạn con phải viết là 10 13

Trang 2

Phén 2 HUGNG DAN 61

Writeln(Hệ có nghiệm duy nhất:);

Wrteln(x=, x:12:2,'; y=, y:12:2);

Trang 3

62 Pascal danh cho hoc sinh

4 Var a: array(1 9, 1 9] of byte;

5 Không Vì khi tính toán ta chỉ cần một giá trị trung gian

6 Program P2306;

Var N, a, §, í: integer;

tb: real

Begin

Writeln( Tính trung bình cộng của N số nguyên:);

Write(‘Nhap gia tri N:'}; Readin(N);

Trang 4

For ch:='A’ to '2' do Wnte(ch:2), Writeln;

For ch:= ‘a’ to '2' do Write(ch:2); Writeln;

Writeln;

For ch:= '2Z' downto ‘A’ do Write(ch:2); Writetn;

For ch:= '2' downto 'a' do Write(ch:2); Writein;

End:

$:=0

Trang 5

Pascal danh cho hoc sinh

g:=100-(d+n):

I(D*5 + n*3 + g dw 3 =100) and (g mod 3 = 0) then

Writeln(Trâu đứng:, D:2, 'Trâu nằm", n,

"Trâu gia:’, g:2); End;

Trang 6

Phần 9 HƯỚNG DAN 65

For a:=1 to 9 do For b:=0 to 9 do For c:=0 to 9 do

lí (a*a*a + b*b*b + c*c*c =100”a +10°b+c) then Writeln(a:1, b:1, ¢:4);

Write(Nhập số nguyên dương n:), Readln(n);

For i:=1 ton do

If (n mod i = 0) and {i mod 2 =0) then Write(i:8); Readln;

Trang 7

66 Pascal danh cho hoc sinh

Begin

Write('Tinh gid trị đa thức:

Writeln P(x) = a,x" + + a,x"+ + a,xÌ + a;;

Writeln(Nhập bậc n của đa thức:); Readln(n); Writeln('Nhập các hệ số của đa thức:';

For i:=n downto 0 do

Begin Write(‘al’, 1:2, ]}E) Readln(a[i]);

Trang 9

68 - Pascal dành cho học sinh

Trang 10

Phần 9 HƯỚNG DẪN _ 69

j:=afi-1];

Repeat Inc(]}:

Writeln(Mảng N số nguyên tố đấu tiền: ')};

For i:=1 to n do Write(a[i):8);

Readin;

End

23 a) Ta chứng minh a[n,n]=0 (1) bằng qui nạp tiến

theo n

Với n=1 ta có a[1,1]=0 vì là phần tử góc trái dưới

Giả sử (1) đúng đến n, ta phải chứng minh (1) đúng

với n+1, nghĩa là a[n+1,n+1]=0

Thực vậy, khi điền phần tử a[n+1, n+1] ta để ý rằng các phần tử đã điền ở cột thứ n+1, tức là các phần tử dạng afk, n+1], k=1, 2, n không thể là số 0 được vì trên các hàng thứ k (k=1, 2, .n) đã có a[k,k]=0; tương tự như vậy:

các phần tử đã điền ở hàng thứ n+1 dạng a[n+1,k], (k=1,

2, n), cũng không thể bằng 0 vì trên các cột thứ k (k=1,

2, n) đã có các phần tử đường chéo a[k, k}=0 Như vậy

số 0 chính là số nguyên không âm nhỏ nhất chưa được điền trên hàng thứ n+1, và cột thứ n+1 Do đó a[n+1,

n+1]=0

Trang 11

70 Pascal danh cho hoc sinh Vay (1) dung vdi moi n= 1 2,

b) Dé ching minh aii, j) = aj, i] (2) ta để ý rằng trường

hdp i>j thi afi, i) = afi, i] la hién nhién, nhu vay ta chi can ching minh (2) cho i # j Knéng mat tinh téng quat ta gia

sử i>j, tức là phần tử a[j, ¡] được điển trước phần tv afi, j]

Ta chitng minh ali, j] =alj, i] (2), i>j bằng qui nạp tiến theo thứ tự điển các phần tử

Với j=1, ¡=2 rõ ràng a[2, 1] = alt, 2]

Giá sử (2) đúng đến al[ij] và i>j+1, ta phải chứng minh (2)

đúng với afi,j+1], nghia la afi,j+1] =alj+1, i]

Ta để ÿ rằng khi điển phần tử a[j+1, i] ta phải xét tập hợp A tat ca các số nguyên dạng a[K, i, k=1, ,j và a[j+1, {], I=1 i-1 là các phần tử đã điền trước a[j+1, i] nằm trên hàng thứ j+1 và cột thứ K: sau đó chọn a[j+1, ¡] là số nguyên khỏng âm nhỏ nhất không trùng với số nào trong tap A Khi điền phần tử ali, j+1] ta phải xét tập hợp B các số nguyên đã điền trên hàng thứ ¡ và cột thứ j+1, đó là các số

dang ali, K]Ị, k1 j và aÍ[, j+1}, !=1 i-1 Nhưng theo giả thiết

quí nạp ta có a[K, i]=a[i, KỊ, Vk=1 j và a[j+1, !Ị =a|l, j+1],

vlI=1 i-1 Do đó tập A trùng với tập B và vì vậy all j+1] cũng chính lã số nguyên không âm nhỏ nhất không trùng

với sð nào trong tập A vậy a[i, ¡+1] =a[j+1 i]

Vậy (2) đúng vi>j

c) Program P2323c;

Var a: array[1 100, 1 100] of byte;

n, i,j, k |, b: byte; d: boolean;

Trang 12

If afi, kKJ=b then d:=TRUE; fel dung)

If i>1 then Fork:=1 toi-1do fest jj

If a[K, j] = b then d:=TRUE; /da ding! b;=b+1, {Kiém tra số tiếp theoj Until not d

Trang 13

Gotoxy(9"j-1, 2+4), ClrEol, Write{afi j}:6) End;

hi fa)a 7 | Dir ligu dude nhap theo đường chéo

3 | 5 8 | song song với đường chéo phụ, hếu

ep or 1 đường chéo nào đến đường chéo khác,

| 6 an nhưng chỉ nhập một nửa trên của mảng

40 | i Ví dụ thứ tự nhập liệu với N=4.

Trang 14

Write(Nhập kích thước của mảng đổi xứng:): Readln(n);

Write(Nhập các phần tử của mảng:”;

For I:=† to n do For |:=1 toido Begin Write(a[ i2, ' j:2 ]E); Readln(a[, J]);

a[I j}=a[ i)

End;

End

Trang 15

74 Pascal danh cho hoc sinh

$4 LENH LAP FOR

1 Program P2401;

Var |: byte: {la chỉ số chạy)

p:=word:’ {p la tich sd)

Begin

p:=1; (gia tri dau của tích]

For (=1 to 1Ôdo = fchoichay tir 1 dén 10)

p:=p'I, flan lot nhadn i vao pÌ Write('1*2° *10='.p);

ClrS€T; /xod màn hình, đãi con trỏ uề góc trái trên)

For i:=0 to 9 do {thie hién theo tieng hang!

Begin For j:=0 to 9 do /trong hang thi i thue hién 10 lan} Write(10”1+]:4); (piế? các số ÿ ra màn hình) Writeln; (sang hàng mới)

End;

Readin:

nd,

Trang 16

Phản 2 HƯỚNG DAN 75

4 Program P2404;

Var a: array[1 100] of integer;

n, |: byte; (hich thutde mang 0à chỉ số các phan be}

S:z0; {gia tri dau ctia tong}

For i:=1 to n do/thực hiện lần lượi từng phần tửi

Begin Write(a[, I:2:, ‘J='); Readin(afi); — /nháp!

If a[i]<O then /mốu a/¡/ án thì công dồn bình) S:=S+sar(a[ll); (phương của afi} vao S}

Const a: array[1 10] of shortin = (-1, 0,5, 4, -8, 2, 4, 0, 5, 1);

Var i: Byte; (chỉ số các phần tử măng)

amax, amin: ShortinÌ; (chứa gia trị max va min cia mang}

Begin

amax:=a[1], amin:=a[1]; {cho amax=amin=a(1}}

Fort:=2to10do /lần hượi so sánh uới 9 số sau)

Begin

lf amax<a[i] then /néu amax nho hon thi thay}

Trang 17

76 Pascal danh cho hoc sinh

amay:=alÌÌ: (aax bằng phần tử lớn hơn đói

If amin>a[t] then /néi amin lin hon}

amin:=ali]; ft thay doi giá tri amin}

Write(‘a[',i:2,',°:2,'F'); Readin(afij];

End sa:=0; sd:=0; sk:=0;

Fori:=1to10do fkiém tra theo hông hàng)

For j:=1 to 10 do Begin

If ali, j]<O then sa:=sati

if afi, j]>0 then sd:=sd+ 1

If afi, j]=0 then sk:=sk+1,

Trang 18

Phần 2 HUGNG DAN 77

End;

Writeln('S6 cac $6 duong |a:’ sd):

Writeln('S6 cac s6 am {a:’, sa);

Var a: aray[A’ 'Z' (mang bộ đếm)

ch: char; thiên nhap ki te]

i: byte: chỉ số của lan gé phím)

Begin

Clrscr For ch:='A' to 'Z do a[ch]:=0, lxóa bộ đệm)

Writeln('Gõ phím 100 lắn!);

Trang 19

78 Pascal danh cho hoc sinh

For i:=1 to 100 do; fthuc hién 100 lan} Begin

ch:=Readkey; /nháp kí tự uào ch khéng can gé Enter) ch:= Upcase(ch); /déi chữ thường thành chit hoa}

a[ch]:=a[ch]+1; ¿đếm số lần gõ phím ch)

Writeln( Trong 100 lấn gð kí tự vừa rồi, số lần xuất'

+hiện của các kí tự là:;

For ch:=A' to '2' do (kiểm tra bộ đếm tir ‘A’ dén Z7)

lf a[chJ]>0 then_ (Nếu ch có xuᆠhiện) Writeln(ch, a[ch]:4, lần.; (uiê! ra màn hình

ki tu oà số lần xuất hiện) Readin;

Trang 20

S:=S+1ip;

Writeln(S=, S:10:7), Readln;

Trang 21

80 Pascal danh cho hoc sinh

Trang 22

Delay(500):

Trang 23

82 Pascal danh cho hoe sinh

End;

§S:=s+Í;

End;

y0:=y-1, y:=y0;

For x:=x0 to x0+2*i-1 do /tiv trai sang phai} Begin

lƒ s>0 then Begin Gotoxy(5*x,y); Write(s);

Trang 25

84 Pascal danh cho hoc sinh

Trang 27

86 Pascal danh cho hoc sinh

20 a) N div 2

b) N div 3

d) N div 3 +N div 5 -N div 15

§5 THUAT TOAN TIM MIN, MAX

amin:= a[1]; {cho amin bằng phần từ đầu tiên)

For Ì:=2 †o 10 do /so œmản uới các phần tử khác của dãy)

líamin>a[i] /nấ: còn phần tử nào nhé hon amin}

Then amin:=ali]; {thi thay amin bang plan tt do}

Writeln(‘amin=', amin);

Readin;

End

2 Tương tự bài trên

3 Hướng dẫn: Tìm phần tử nhỏ nhất của dãy, đổi nó

về vị trí đầu tiên Sau đó tìm phần tử nhỏ nhất của dãy con

còn lại

Program P2503;

Const a:array[1 10] of shortint=(0, 1, 2, 3, 4, -1, -2, -3, -4, 5);

Var t: byte; {chứu chỉ số các phẩm! tử của dã yJ

Trang 28

Phản 2 HUONG DAN 87

imin: byte; = /danh déu vi tri amin}

atg: shortint; /chiza gia tri trung gian khỉ đổi chỗ

cdc phan tu}

Begin

imin:=1; /œƒ17 coi !à nhỏ nhất)

For i:=2 to 10 do {so oớt các phần tử còn lại)

if afimin]> a{i] then /»ếu còn phân tử nhỏ hơn) imin:=i; {thi đánh dấu phần tử đó) atg:=a[f];

a[1]:=a[imin); (d6i gid trị nhỏ nhất oê đầu dã y) a[imin]:=atg;

imin:=2;

For i:=3 to 10 do

If afimin]>ali] then imin:zi;

Writeln(Phần tử nhỏ thứ 2 của dãy là:, a[imìn]);

Readln;

End

4 Tương tự bài 3

5 Hướng dẫn: Tìm phàn tử nhỏ nhất của dãy, đổi nó

về vị trí thứ nhất Sau đó tìm phần tử lớn nhất của dãy con còn lại, đổi nó về vị trí thứ hai Sau đó tìm phần tử lớn nhất của dãy con còn lại

Trang 29

88 Pascal danh cho hoc sinh

if a[imin]>a{i] then imin:=i;

Writeln(Phần tử nhỏ thứ ba của dấy là:, a[imin]);

End

6, Tương tự bài 5

7 Program P2507;

Var a: array[1 100] of shortint;

n, i,j, imin: byte;

Trang 30

f afimin}>a[i} then imin:=i;

atg:=aÏÏ] a[i|Ea[imin]; a[imin]=atg:

Const a:array[1 10] of shortint=(-8, -5, 7, -4, 0, 2, §, 9, -1,3);

Var i,j, imin, ig: byte;

atg: shortint;

Begin

For j:=1 to 9 do (sắp xép lai}

Trang 31

90 Pascal danh cho hoc sinh

Write(Nhập độ dài của dãy : );Readln(n);

For i:=1 ton do Begin Write(' af’,i,'] = ');Readin(ali]);

End;

kmax:=0;

For i:=1 ton do Begin jth

Trang 32

End;

End; -

Writeln(Dãy con liền nhau cực đại các phần tử

- +'bằng nhau của dãy”),

For ï=id to id+kmax-1 do Wrle(alï]4); -

Writeln(' Ước số thực sự lớn nhất cúa n là: ', us)

Else Writeln(Không có ước số thực sự);

Trang 33

92 Pascal danh cho hoc sinh

For i:= n downto 2 do lÝn mod i = 0 then us:=i;

If us<>0 then Writeln(‘udc s6 nhé nhất của n'

+’khéng phai don vi [a:’ us)

Else Writeln(Không có ước số thực sy’);

End;

For j:=fton-1do {sap xép lai day 1}

Begin Imin:=j;

For i:= j+1 ton do

If a[imin]> afi) then imin:=i;

Trang 34

Phần 9 HƯỚNG DẪN 93

(=; {chi véo phan tt cusi day 2}

Fort:=2 tondo f{xet cac phan ur con lai cua day 1}

If afi]>bfj] then /néue con phan tử lớn hơn) Begin

blj+]:=ali); /thi ghi tid vao day 2)

j= Jt (chi vao phan tu cudi day 2}

Var a, b: array [1 100] oÝ integer;

k, n, i,j, imin: byte; atg: integer;

End;

b{1]:=a{1]:

jet ichép ol qua day b}

Far i:=2 ton do Begin

T:false: (xét cúc phan tử cua déy a} For k:=1 to j do

lí a[ï] = b{k] then T:= True;

Trang 35

94 Pascal danh cho hoc sinh

lf not T then (nếu không trùng uới các phán Begin / sử của b thì điện tiếp uào bị b[j+1]:= a[Ï; j:= j+1; End:

End;

End:

Fori:=1toj-1do {sap xếp lại dãy bị

Begin Imin: = i;

Var a, b: array[1 100] of integer;

c: array [1 100] of byte; /madng dém}

7, Lj kK, cmax: byte;

T: Boolean;

Begin

Write (' Nhap dé dai clia day n="); Readin(n):

For i:=1 ton do Begin Write (‘af i:2, ‘='); Readin(ali]);

Trang 36

For k:=1 to j do

If afi] = b[k] then Begin _ T:=True;

c[k} = c[k}+1;

End;

lf not T then Begin

If c{i]> cmax then cmax:= c[i);

For i:=1 toj do /sodt gi số lần lặp của từng số)

if c[] = cmax then (nếu số lần lặp là lớn nhất) Writeln (bli); {thi liét ké sé d6 ra} Readln;

End

Trang 37

96 Pascal danh cho hoe sinh

15 a) Program P2515a:

Const a: array [1 3, 1 4] of integer = ((1,2,3,4),

(5,6,7,8), (9,10, 11, 12)); Var h: array[1 3] of integer;

For J:=1 to 4 do {tin phan nữ nho nhat cua hang if

if afi,j] < amin then amin:= ali,j}:

h{i}:= amin; (ghi vao hfi}}

amin: integer;

i, |: byte:

Begin

Trang 38

Phân 2 HƯỚNG DẪN ˆ 97

For j:=1 to 4 do

Begin amin:= af1 jj;

Trang 39

98 Pascal danh cho hoc sinh

Trang 40

Ke, Kemin: real:

Begin

Kemin:= abs(a[1] - round(a[1})); imin:=1;

For i:=2 to 10 do Begin

Ke:= abs(alt] - round(ali]));

lf (Kemin > Ke) then

Begin Kermin:= Ke; imin:= i;

Ke, Kemax: real;

Begin

Trang 41

100 Pascal danh cho hoc sinh

Kcmax:= abs(a{[1] - round(a{1]));

Write(‘a[’, i:2, ‘,’, j:2, ‘] =‘); ReadIn (a{,j])

End;

Trang 42

Phén 2 HUGNG DAN 104

For i:=1 to 10 do Begin

bfi}:= a[1.i]0;

c[Ï= a[i 1]:

For j:= 2 lo 10 do Begin

If bi] < afj,i] then b[ï]:= a[j.Ì]

tf cfil > afi, j) then c(i}:= afi, j}: End;

End;

u:= b[1] v:= e{[1]:

For i:=2 to 10 do Begin

If u > bi) then u:= bfi);

If v< c[i] then v:= ci];

Var a: array [1 10, 1 10] of shortint;

i, j, min, io, jo, k: byte;

Trang 43

lfcthen /théng bao két qua}

Writeln(‘Co phần tử yên ngựa là a[,io:2,'", jo,

I0) Else Writeln (không có phần tử yên ngựa";

Readin;

Trang 44

If a(iJ=O then Write(‘al’, i:2, J=', afi]:3); Writeln;

Writeln (‘Cac sé duong:’);

For i:=1 to 10 do

If a(i] >O then Write (afi]:3); Writeln;

Writeln (‘Cac sé am: ');

For t:=1 to 10 do

If afi] < 0 then Write (a[i:3);

Readin;

End;

2.a) Program P2602a;

Const a: array{1 10] of Shortint = (-1, 0, 2, 5, 0, -4, 0, 0, 7, 4): Var i, j: byte;

¢: boolean;

Begin

c:= False:

For i:=1 to 9 do For j= i+4 to 10 do

lf (abs(a[i] -afj])=1) and (afi] > 0) and {a[j] > 0) then c:= True;

If c then Writeln (Dã y chứa hai số dương kề nhau.)

Trang 45

104 Pascal danh cho hoc sinh

If afi]*a[i+1]<0 then c:= True;

If c then Writeln (‘Day chứa hai số khác dấu kề nhau.) Else Writeln (Dãy không chứa hai số khác dấu kề nhau.);

Readin;

End

d) Tương tự phần c)

3.a) Program 2603a;

Const a: array[1 10] of char = (a,a,'b,'ơ, d,=,~, 0,1, +); Var i: byte:

c: boolean;

Begin

c:= False;

For i:=1 to 9 do

If (ali] = a4) and ((a[i+1] = 'a) then c:= True;

lf c then Writeln (Có hai ký tự a, a đứng liền nhau.); Else Writeln (Không có hai ký tự a,a đứng liền nhau.); Readln;

End

Ngày đăng: 04/12/2015, 02:28

TỪ KHÓA LIÊN QUAN