PDA

View Full Version : Giúp em phần dữ liệu mảng



hoangldp
21-11-2009, 00:09
Em không hiểu phần này mong mọi người giải thích dùm em.
Ví dụ như cho phần đã viết như sau:
Uses CRT;
Var i,n : Integer;
s : Real;
a : Array[1.. 100] of Real;
Begin
ClrScr;
Write( ‘ Ban muon nhap bao nhieu PT cho mang : ‘ );
Readln(n);
For i := 1 to n do
Begin
Write( ‘ PT A[ ‘ , i , ‘ ]= ’ );
Readln(a[i]);
End;
s := 0;
For i := 1 to n do
s := s + a[i];
Write( ‘ Trung binh cong cua day so = ‘ , s / n : 0 : 4 );
Readln;
End.
Thì em không hiểu là arry[1..100] để làm gì và sao lại là 100 mà không phải là số khác vì n mình nhập sau thì cần gì 100 vì em thử thay 100 bằng 2 nó cũng chạy được thì phải. Em đang cần mong mọi người giúp cho chứ em không thể hiểu được chỗ đó bản chất của nó ra sao vậy thì học hành khó lám.

technolt
21-11-2009, 15:12
Đơn giản 100 là giới hạn của mảng đó :-??
Bạn cần dùng bao nhiêu số thì khai báo bấy nhiêu

Bạn thử đề trình dẫn biên dịch {$R+,Q+} rồi cho giới hạn =2 và nhập n=3 xem nó bị sao :@)

hoangldp
22-11-2009, 14:36
Vậy bác cho em hỏi nếu như trên thì người dùng oái om họ cho n:=101 thì có phải là bài này trở thành sai không (nếu như bác nói).
và như vậy thì em không hiểu là n để làm gì khi mảng đẫ bị giới hạn như vậy.
Trời ơi sao mà pascal khó quá vậy.
Mong mọi người giúp em với.

[=========> Bổ sung bài viết <=========]

À lại chó chuyện phát sinh nè bác ơi.
khi em khai a:array[1..2] of integer; trước khi khi biến khác thì nó không hoạt động nếu n>2.Nhưng nếu em khai sau thì nó vẫn hoạt động bình thường khi em cho n>2 ví dụ như: 3.không tin bác thử mà coi.(bài này là bài tính tổng thui vì em thử tính tổng em chưa thử như hôm gì tính trung bình cộng).

than_nu
24-11-2009, 11:17
Vậy bác cho em hỏi nếu như trên thì người dùng oái om họ cho n:=101 thì có phải là bài này trở thành sai không (nếu như bác nói).
và như vậy thì em không hiểu là n để làm gì khi mảng đẫ bị giới hạn như vậy.
Trời ơi sao mà pascal khó quá vậy.
Mong mọi người giúp em với.

[=========> Bổ sung bài viết <=========]

À lại chó chuyện phát sinh nè bác ơi.
khi em khai a:array[1..2] of integer; trước khi khi biến khác thì nó không hoạt động nếu n>2.Nhưng nếu em khai sau thì nó vẫn hoạt động bình thường khi em cho n>2 ví dụ như: 3.không tin bác thử mà coi.(bài này là bài tính tổng thui vì em thử tính tổng em chưa thử như hôm gì tính trung bình cộng).

Nếu mảng là giới hạn 100 thì nhập 101 phần tử dĩ nhiên sai. Giới hạn mảng là để ngôn ngữ lập trình cấp phát bộ nhớ cho mảng. Bộ nhớ lun có giới hạn mà ^^, do đó trong các bài tập lun có giới hạn (ví dụ N<100, N<1000 chẳng hạn) tùy đề mà bạn khai báo thui
Trong trường hợp khai báo trên của bạn, vì Pascal đã biên dịch sẵn rùi nên nó không báo lỗi, bạn thử nhấn F2 xem, nó sẽ báo lỗi trở lại thôi (p/s: mình ko hiểu ý bạn nói vụ 2, 3 gì lắm ^^)