PDA

View Full Version : Xem hộ e với !!!!



cavalli501
19-12-2009, 20:27
Bài tập : tính tổng các số có ước là 3 và các số có ước là 7 trong mảng 1 chiều.
Bài làm :
begin
clrscr;
for i:= 1 to N do
S:=0
if A[i] mod 3 = 0 and A[i] mod 7 = 0 then S:= S+ A[i];
writeln (' tong S la : ', S );
readln (S);
end.

Bài e làm nt đúng hay sai :D các bro xem hộ :D

ndvd1992
20-12-2009, 14:44
S:=0 phải đặt trên For vì nếu đặt như bạn thì khi thực hiện i:=1 to n thì thực hiện câu lệnh S:=0 ;
Readln (S); bạn sai rồi , chứ Readln cuối cùng trên end. chỉ để dừng màn hình thôi

nhokdragon94
21-12-2009, 17:58
Hi
Thứ nhất bạn chưa nhập xâu :) (cái này chắc bạn tự hiểu)
thứ hai :
for i:=1 to n do
S:=0
Ngoài cái thiếu dấu ";" thì chỗ đó sai hoàn toàn bởi vì S:=0 để trong vòng lặp(tức là khi i chạy từ 1 đến n thì S cứ gán bằng 1)(bạn hỉu hem)
Thứ 3 là:Bạn làm sai đề: Bài toán bảo có ước là 3 và các ước là 7 tức là "hoặc" chia hết cho 3 "hoặc chia hết cho 7 nên bạn để If...and...then.. là sai,phải dùng "or". Và giữa 2 lệnh phải có ngoặc đơn nha bạn.
Thứ Tư là readln(S) Hình như sai. Cái này bạn nên xem lại phần lí thuyết (Mình cũng hok rõ ở chỗ nào vì mình hem học trong SGK :) )


Bạn có thể tham khảo bài giải sau để thấy chỗ sai mà sửa nha:
<Code>
var A:array[1..100] of integer;
(*Khai báo các biến bạn tự khai báo*)
BEGIN
{nhập, xuất mảng };(*cái này bạn tự làm*)
S:=0;{cái này gán cũng đc hok gán cũng hok sao vì TB7 sẽ tự gán Gtri biến S=0}
for i:=1 to n do
If (A[i] mod 3=0) or (A[i] mod 7=0) then S:=S+A[i];
writeln('tong la:',S);
readln;
end.
</code>