Đề 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.

