Đề bài: Cho 3 số a, b, c thực. Kiểm tra xem mỗi 3 số đó giữ nguyên thứ tự của chúng có tạo thành cấp số nhân hay không. Nếu 3 số đó tạo thành cấp số nhân tính trung bình cộng của chúng, nếu không thì gấp đôi mỗi số. Biết a, b, c được lấy từ file csn.inp. Kết quả ghi vào file csn.out.
Cấp số nhân
Program CapSoNhan; Uses Crt; Var f,g:Text; a,b,c:Real; s:String; {ham kiem tra xem so a,b,c co phai la cap so nhan hay khong} Function kiemtra(o,p,q:real):Boolean; Begin If p/o=q/p then kiemtra:=True else kiemtra:=False; End; Procedure XuLyChuoi(st:String); Var sa,sb,sc:String; code:integer; Begin sa:=copy(st,0,pos(' ',st)-1);{Lay ra chu so thu nhat} Delete(st,1,pos(' ',st)); {Xoa so thu nhat khoi chuoi} sb:=copy(st,1,pos(' ',st)-1); Delete (st,1,pos(' ',st)); sc:=copy(st,1,length(st)); Val(sa,a,code); {Doi chuoi thanh so} Val(sb,b,code); Val(sc,c,code); End; {Chuong trinh chinh} Begin Clrscr; assign(f,'\Pas\csn.inp'); Reset(f); {Mo file ra doc du lieu trong do} Readln(f,s); {Doc chuoi so gan vao bien S} Close(f); {Dong file lai} Writeln(s); Writeln(a,b,c); XuLyChuoi(s); {Xu ly chuoi so trong file tach ra thanh so} assign(g,'\Pas\csn.out'); Rewrite(g); If Kiemtra(a,b,c) then {Kiem tra so va ghi vao file} Writeln(g,'ba so ',a:5:1,', ',b:5:1,', ',c:5:1,' tao thanh cap so nhan, trung binh cong:',(a+b+c)/3:5:2) Else Writeln(g,'ba so ',a:5:1,', ',b:5:1,', ',c:5:1,' khong tao thanh cap so nhan, gia tri moi la:',a*2,' ',b*2,' ',c*2); Close(g); End.