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=15
Kết quả: Vi tri xuat hien X la 1
Ket qua thay the: 1 15 6 7 4 1 15 15 1 1
Hướ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í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]; 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 12
Ket qua: 20 20 62 7 40 40 12
Procedure 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;
2019-12-06T03:31:15+11:00 2019-12-06T03:31:15+11:00 Viết chương trình giải bài toán sau:
Bài 1: Tính x^y [ Với x, y là số thực].
Bài 2: Tính x^n [Với n là số nguyên không âm]. Lập trình Pascal, tính x mũ n, tính x mũ y
//baikiemtra.com/uploads/news/2019_11/bai-tap-lap-trinh-pascal.jpg
Bài 1: Tính xy [ Với x, y là số thực].
Program X_LUYTHUA_Y;
Uses crt;
Var x,y,z:real;
Begin
Writeln[‘TINH X LUY THUA Y:’];
Writeln['----------------------------------'];
Write['Nhap x = ']; readln[x];
Write['nhap y = ']; readln[y];
If x>=0 then
Begin
z:=exp[y*ln[x]];
Writeln['x ^ y = ',z:4:2];
End
Else
Writeln['Khong tinh duoc do x la so am'];
Readln;
End.
Bài 2: Tính xn [Với n là số nguyên không âm].
Program TINH_X_LUY_THUA_N;
Uses crt;
Var i,n,x:integer;
lt:real;
Begin
Writeln[' TINH X LUY THUA Y:'];
Writeln['----------------------------------'];
Write['Nhap x =']; readln[x];
Write['Nhap n =']; readln[n];
lt:=1;
For i:=1 to n do
lt:=lt*x;
Writeln[x, '^',n,' = ',lt:4:2];
Readln;
End.