Đến nội dung

Hình ảnh

Có ai rành pscal không nhỉ giải thích giúp tôi/


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

#1
ngoclieu

ngoclieu

    Lính mới

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

Tạo mảng B trong đó mảng b là tổng giá trị của i phần tử đầu tiên của mảng a.

var a,b: array[1..100] of integer;

i,j,n: integer;

begin

readln(n);

for i:=1 to n do 

begin

  write('a[',i,']'); readln(a[i]);

end;

for i:=1 to n do

begin

b[i]:=0;

for j:=1 to i do b[i]:=b[i]+a[j];

end;

for i:=1 to n do write(b[i]:5);

end.

Mình không hiểu vòng lặp for j:=1 to i do gì cả? các bạn giải thích giúp mình nhé!!!



#2
Zz NTL zZ

Zz NTL zZ

    Binh nhì

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


Tạo mảng B trong đó mảng b là tổng giá trị của i phần tử đầu tiên của mảng a.

var a,b: array[1..100] of integer;

i,j,n: integer;

begin

readln(n);

for i:=1 to n do 

begin

  write('a[',i,']'); readln(a[i]);

end;

for i:=1 to n do

begin

b[i]:=0;

for j:=1 to i do b[i]:=b[i]+a[j];

end;

for i:=1 to n do write(b[i]:5);

end.

Mình không hiểu vòng lặp for j:=1 to i do gì cả? các bạn giải thích giúp mình nhé!!!

Vòng lặp for j:=1 to i có tác dụng là lặp từ vị trí thứ 1 cho đến vị trí thứ i của mảng a !

Tức là thế này ,mình sẽ giải thích luôn phần chữ đỏ:

Cho chạy từ vị trí thứ nhất đến vị trí cuối cùng của các phần tử trong mảng a

Gán cho mỗi phần tử trong mảng b có giá trị bằng 0 ( để xác định hay là cho trước giá trị của mỗi phần tử của mảng b )

Cho chạy từ 1 đến i để xác định vị trí của i phần tử dầu tiên trong mảng a, kèm theo là tính tổng giá trị của i phần tử đầu tiên đó thôi và lưu vào 1 phần tử của mảng b

P/s: Có gì không hiểu bạn cứ hỏi thoải mái :)


Bài viết đã được chỉnh sửa nội dung bởi Zz NTL zZ: 26-05-2016 - 21:03

 >> $Zz$ $NTL$ $zZ$ <<


#3
ngoclieu

ngoclieu

    Lính mới

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

thansk!

 

nếu cho n=4

for chạy i= 1 đến 4

vd a1=3, a2=4, a3=1, a4=9

khi for j:=1 thì i đến giá trị gì? khi nào vòng lặp này dừng

b[1]:=?

--------------------------------------------

bó tay?



#4
Zz NTL zZ

Zz NTL zZ

    Binh nhì

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

thansk!

 

nếu cho n=4

for chạy i= 1 đến 4

vd a1=3, a2=4, a3=1, a4=9

khi for j:=1 thì i đến giá trị gì? khi nào vòng lặp này dừng

b[1]:=?

--------------------------------------------

bó tay?

Ô vậy bạn chưa hiểu rồi, thế này:

i sẽ chạy đến 4

j sẽ chạy đến i

=> j sẽ chạy lần lượt các vị trí i.

Khi for j:=1 to i thì giá trị i sẽ thay đổi lần lượt theo giá trị i của vòng for i:=1 to 4 .

Tại sao giá trị i thay đổi ?

Vì vòng for j:=1 to i(1) nằm trong vòng for i:=1 to 4(2) cho nên khi giá trị i trong vòng (2) tăng lên kéo theo giá trị i của vòng (1) tăng .Do đó ta có thể tính tổng i  phần tử đầu tiên của mảng a.

Vòng lặp (1) dùng khi i=4,tức là khi giá trị i bằng số phần tử trong mảng a.

khi i=1, thì j:=1 chạy đến 1 

=> b[1]:=b[1]+a[j]; mà giá trị ban đầu b[1]=0 => b[1]:=a[j]=a[1]=3.

khi i=2, thì j:=1 chạy đến 2

=> b[2]:=b[2]+a[j] ( cái này lặp 2 lần) mà giá trị ban đầu b[2]=0 =>b[2]:=b[2]+a[1]+a[2] => b[2]:=7

khi i:=3, thì j:=1 chạy đến 3

=>b[3]:=b[3]+a[j] ( cái này lặp 3 lần) mà giá trị ban đầu b[3]=0 =>b[3]:=b[3]+a[1]+a[2]+a[3] => b[3]:=8

khi i:=4, thì j:=1 chạy đến i

b[4]:=b[4]+a[j] ( cái này lặp 4 lần) mà giá trị ban đầu b[4]=0 =>b[4]:=b[4]+a[1]+a[2]+a[3]+a[4] => b[4]:=17

*Nói tóm lại bạn chỉ cần hiểu thế này:

Vòng for i:=1 to n dùng để điều chỉnh vị trí của i ( i là vị trí của các giá trị phần tử trong mảng a)

Vòng for j:=1 to i dùng để  tính tổng i phần tử 


Bài viết đã được chỉnh sửa nội dung bởi Zz NTL zZ: 28-05-2016 - 09:49

 >> $Zz$ $NTL$ $zZ$ <<





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

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