Lỗi ở hàm tính cos(x) theo chuỗi Taylor

Các vị bô lão xem giùm em bài này, test quài, riết rồi nó cứ lỗi như vầy là saooo!

Đề bài là:
Tính hàm Cosx theo chuỗi Taylor :
20%20AM

Nhập x hoặc không nhập gì vào bàn phím.
Đây là bài tập Pascal của học sinh cấp 3 ạ.
Hóng các cao nhân chỉ giáo a. Thăn kiu thăn kiu :heart:

program Bt1 ;
var n,x: integer ;
cosx : real ;
procedure gthua(var x : integer ; n:integer):real;
   var tso,a ,b, i : integer;
       Tong : real ;
     begin
     tso:=1;
     a:=-1;
     b:=1;
     For i:= 1 to n do a:=a*(-1);
     for i:= 1 to (2*n) do tso :=tso*x;
     for i:= 1 to (2*n) do b:= 2*n*((2*n)-1);
       Tong:=a*(tso/b);
     end;
begin
writeln('Nhap x: ');
Readln(x);
n:=1;
while(gthua(n,x) >=0.00001) do
  begin
  cosx:= cosx + gthua(n,x) ;
  n:= n+1 ;
  end;
  writeln('Ket qua la : ');
  readln;
end.

Compiler Messages

bai1.pas(4,16) Error: overloaded identifier "gthua" isn't a function
bai1.pas(4,45) Error: Fields cannot appear after a method or property definition
bai1.pas(20,12) Fatal: Syntax error, ")" expected but "(" found
bai1.pas(0) Fatal: Compilation aborted

F1 Help   F3 Open   Alt+F9 Compile   F9 Make   Alt+F10 Local Menu

Hi Trần Tuyết.

  1. Bạn đọc lại nội quy.
  2. Bạn xem compiler mesages.
4 Likes

Lỗi chính trong chương trình của bạn thì anh @Phong_Ky_Vo đã nói ở :point_up_2: rồi. Tuy còn khá nhiều lỗi vặt khác nhưng mình sẽ không sửa, nếu muốn sửa chi tiết bạn có thể PM với mình. :slight_smile:

Đây là code của mình cho bạn tham khảo.

program Shiharoku;
var x :real;

function cos(x : real) : real;
var temp, i, s : real;
begin
    temp := 1.0;
    i := 1.0;
    s := 0.0;
    while (temp > real(10e-9)) or (temp < -real(10e-9)) do begin
        s := s + temp;
        temp := -temp * x * x / (2 * i * (2 * i - 1));
        i := i + 1.0;
    end;
    cos := s;
end;

begin
    write('Enter x: ');
    Readln(x);
    writeln('Result is : ', cos(x));
    readln;
end.
4 Likes

cám ơn b nhé.
sau khi tham khảo bài của bạn thì mềnh đã sửa được thành như vầy ;)))

program chua_bt;
var
  x: real;
  n: integer;
  Cosx: extended;
function gthua(var x :real;var n: integer ) :extended;
  var tuso,a,b :real;
      tong,mauso : extended;
      i,j : integer;
  begin
    a:=1; tuso:=1;
    for i := 1 to n do
    begin
       a:=a*(-1);
       tuso:=tuso*x*x;
       mauso:=1;
       for j:= 1 to (2*n) do mauso:=mauso*j;
    end;
               tong:=a*tuso/mauso;
               gthua:=tong;
  end;
begin
       writeln('Nhap x : ');
       readln(x);
       n:=1; Cosx:=1;
       while (gthua(x,n)>0.00001) do
               begin
                       Cosx:=Cosx+ gthua(x,n);
                       n:=n+1;
               end;
       writeln('Cosx = ', Cosx);
       readln;
end.```
1 Like

e xin lỗi e mới lần đầu đăng bài mong được tha thứ <3
cảm ơn a đã góp ý

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?