Đến nội dung

Hình ảnh

a[1] ? a[2] ? a[3] ? ... ? a[n] = x


  • Please log in to reply
Chủ đề này có 2 trả lời

#1
mjko2000

mjko2000

    Lính mới

  • Thành viên mới
  • 2 Bài viết

Cho n số tự nhiên a[1]..a[n], và x được nhập từ bàn phím, tìm và đặt các dấu + - * / vào ? sao cho:

a[1] ? a[2] ? a[3] ? ... ? a[n] = x

Tính lần lượt từ trái qua phải.

 

Em làm viết được code sau nhưng không biết sai chỗ nào, nhờ mn xem giúp.

 


USES crt;
VAR
a,o:ARRAY[1..100] OF INTEGER;
i,j,k,so,n,h:INTEGER;
p:REAL;
kq:ARRAY[1..100] OF REAL;
kt:BOOLEAN;                
PROCEDURE indau(d:INTEGER);
BEGIN
    IF d=1 THEN write('+');
    IF d=2 THEN write('-');
    IF d=3 THEN write('*');
    IF d=4 THEN write('/');
END;
FUNCTION tinh(i,k:INTEGER):REAL;
BEGIN
IF k=1 THEN BEGIN
IF i=1 THEN kq[1]:=a[1]+a[k+1];
IF i=2 THEN kq[1]:=a[1]-a[k+1];
IF i=3 THEN kq[1]:=a[1]*a[k+1];
IF i=4 THEN kq[1]:=a[1]/a[k+1];
END ELSE
BEGIN
IF i=1 THEN kq[k]:=kq[k-1]+a[k+1];
IF i=2 THEN kq[k]:=kq[k-1]-a[k+1];
IF i=3 THEN kq[k]:=kq[k-1]*a[k+1];
IF i=4 THEN kq[k]:=kq[k-1]/a[k+1];
END;
tinh:=kq[k];
END;
PROCEDURE thu;
BEGIN
FOR i:=1 TO 4 DO BEGIN
    o[h]:=i;
    IF h=n-1 THEN IF tinh(i,h)=so THEN BEGIN FOR j:=1 TO n-1 DO indau(o[j]);
                                           kt:=TRUE;
                                            END;
    IF h<n-1 THEN
    BEGIN
       tinh(i,h);
       h:=h+1;
       thu;
       END;
    END;
h:=h-1;
END;
BEGIN
clrscr;
write('Nhap N:');readln(n);
FOR i:=1 TO n DO readln(a[i]);
write('Nhap so:');readln(so);
kt:=FALSE;
h:=1;
thu;
IF kt=FALSE THEN write('Khong co kqua.');
readln;
END.

 



#2
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

 

Cho n số tự nhiên a[1]..a[n], và x được nhập từ bàn phím, tìm và đặt các dấu + - * / vào ? sao cho:

a[1] ? a[2] ? a[3] ? ... ? a[n] = x

Tính lần lượt từ trái qua phải.

 

Em làm viết được code sau nhưng không biết sai chỗ nào, nhờ mn xem giúp.

 


USES crt;
VAR
a,o:ARRAY[1..100] OF INTEGER;
i,j,k,so,n,h:INTEGER;
p:REAL;
kq:ARRAY[1..100] OF REAL;
kt:BOOLEAN;                
PROCEDURE indau(d:INTEGER);
BEGIN
    IF d=1 THEN write('+');
    IF d=2 THEN write('-');
    IF d=3 THEN write('*');
    IF d=4 THEN write('/');
END;
FUNCTION tinh(i,k:INTEGER):REAL;
BEGIN
IF k=1 THEN BEGIN
IF i=1 THEN kq[1]:=a[1]+a[k+1];
IF i=2 THEN kq[1]:=a[1]-a[k+1];
IF i=3 THEN kq[1]:=a[1]*a[k+1];
IF i=4 THEN kq[1]:=a[1]/a[k+1];
END ELSE
BEGIN
IF i=1 THEN kq[k]:=kq[k-1]+a[k+1];
IF i=2 THEN kq[k]:=kq[k-1]-a[k+1];
IF i=3 THEN kq[k]:=kq[k-1]*a[k+1];
IF i=4 THEN kq[k]:=kq[k-1]/a[k+1];
END;
tinh:=kq[k];
END;
PROCEDURE thu;
BEGIN
FOR i:=1 TO 4 DO BEGIN
    o[h]:=i;
    IF h=n-1 THEN IF tinh(i,h)=so THEN BEGIN FOR j:=1 TO n-1 DO indau(o[j]);
                                           kt:=TRUE;
                                            END;
    IF h<n-1 THEN
    BEGIN
       tinh(i,h);
       h:=h+1;
       thu;
       END;
    END;
h:=h-1;
END;
BEGIN
clrscr;
write('Nhap N:');readln(n);
FOR i:=1 TO n DO readln(a[i]);
write('Nhap so:');readln(so);
kt:=FALSE;
h:=1;
thu;
IF kt=FALSE THEN write('Khong co kqua.');
readln;
END.

 

Vậy bạn thử nói ý tưởng ra cho mình xem ?

Có ý tưởng thì mới có thuật toán ,có thuật toán thì mới có chương trình .


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#3
hoicmvsao

hoicmvsao

    Thượng sĩ

  • Thành viên
  • 299 Bài viết

đề có cho giới hạn n không bạn






1 người đang xem chủ đề

0 thành viên, 1 khách, 0 thành viên ẩn danh