Tin học Sai thuật toán

SleekSkinFish

Học sinh
Thành viên
19 Tháng mười 2018
90
13
26
22
Cần Thơ
THPT chuyên LTT
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Cho mình hỏi chỗ này mình sai chỗ nào ạ, mình làm bài trang 49 và 50 nhưng mình không nhập như trong sách mà làm như trong hình dưới vì mình nghĩ vậy nó sẽ đơn giản hơn nhưng hóa ra là nó sai vì dù mình nhập bộ 3 số nào thì chương trình vẫn cho ra "Bo ba so da nhap tao thanh mot bo so Pythagore", mình hỏi cô thì cô nói là sai thuật toán nhưng mình không biết là sai như thế nào.

Đây là cái mình đã nhập và khi nhập 3 số bất kì
Capture.PNG
ket qua.PNG

Còn đây lần lược là trang 49 và 50 SGK

20190218_151549.jpg
20190218_151558.jpg
 

Lục Vân Tiên

Học sinh chăm học
Thành viên
4 Tháng tư 2017
340
231
131
Thanh Hóa
Minecraft Gamer
Cho mình hỏi chỗ này mình sai chỗ nào ạ, mình làm bài trang 49 và 50 nhưng mình không nhập như trong sách mà làm như trong hình dưới vì mình nghĩ vậy nó sẽ đơn giản hơn nhưng hóa ra là nó sai vì dù mình nhập bộ 3 số nào thì chương trình vẫn cho ra "Bo ba so da nhap tao thanh mot bo so Pythagore", mình hỏi cô thì cô nói là sai thuật toán nhưng mình không biết là sai như thế nào.

Đây là cái mình đã nhập và khi nhập 3 số bất kì
View attachment 102000
View attachment 102002

Còn đây lần lược là trang 49 và 50 SGK

View attachment 102005
View attachment 102006
Bn làm lại theo giống y nguyên trg sách thử coi đc ko
 

nguyen tran thanh nha

Học sinh chăm học
Thành viên
10 Tháng sáu 2018
107
53
61
20
Bà Rịa - Vũng Tàu
thcs kim long
Cho mình hỏi chỗ này mình sai chỗ nào ạ, mình làm bài trang 49 và 50 nhưng mình không nhập như trong sách mà làm như trong hình dưới vì mình nghĩ vậy nó sẽ đơn giản hơn nhưng hóa ra là nó sai vì dù mình nhập bộ 3 số nào thì chương trình vẫn cho ra "Bo ba so da nhap tao thanh mot bo so Pythagore", mình hỏi cô thì cô nói là sai thuật toán nhưng mình không biết là sai như thế nào.

Đây là cái mình đã nhập và khi nhập 3 số bất kì
View attachment 102000
View attachment 102002

Còn đây lần lược là trang 49 và 50 SGK

View attachment 102005
View attachment 102006
bạn phải đưa lệnh write và readln lên sau lệnh clrscr thì nó mới được. lý do nó luôn đúng do 0=0+0;
 

lehongli

Học sinh chăm học
Thành viên
22 Tháng mười hai 2013
186
134
61
Mình chưa hiểu lắm vụ 0=0+0, bạn có thể giải thích thêm được không?
Thông thường việc đầu tiên vào làm là nhận dữ liệu vào đúng không, với trường hợp này là ba số a b c,
Lệnh readln dùng để nhận dữ liệu vào đúng chứ?
Vậy nếu bạn thực hiện tính toán a^2 b^2 c^2 trước khi nhận dữ liệu vào còn ý nghĩa gì nữa.

Bạn làm là thế này nên sai
a2=a*a;
b2=b*b;
c2=c*c;
// tính toán bình phương, lúc này a, b, c chưa có dữ liệu thì tính toán gì, mặc định a, b, c bằng 0, nên a2 b2 c2 cũng là 0
Writeln(...);

Readln(a,b,c);
// nhận dữ liệu vào, nhận lúc này thì a b c bình ở trên vô nghĩa hết. a2, b2, c2 vẫn bằng 0 dù a b c đã bắt đầu có giá trị.

If ....
// đến bước này thì test nào bạn nhập vào cũng đúng vì a2=b2+c2 (0=0+0, đã giải thích ở trên) và tương tự.


Như trong sách là đúng rồi ấy,
Writeln(...);
Readln(a,b,c);
// nhận dữ liệu vào
a2=a*a;
b2=b*b;
c2=c*c;
// tính toán bình phương
If .... ;
// kiểm tra đều kiện pytago;
Thế này sẽ ra kết quả đúng.
 

SleekSkinFish

Học sinh
Thành viên
19 Tháng mười 2018
90
13
26
22
Cần Thơ
THPT chuyên LTT
Thông thường việc đầu tiên vào làm là nhận dữ liệu vào đúng không, với trường hợp này là ba số a b c,
Lệnh readln dùng để nhận dữ liệu vào đúng chứ?
Vậy nếu bạn thực hiện tính toán a^2 b^2 c^2 trước khi nhận dữ liệu vào còn ý nghĩa gì nữa.

Bạn làm là thế này nên sai
a2=a*a;
b2=b*b;
c2=c*c;
// tính toán bình phương, lúc này a, b, c chưa có dữ liệu thì tính toán gì, mặc định a, b, c bằng 0, nên a2 b2 c2 cũng là 0
Writeln(...);

Readln(a,b,c);
// nhận dữ liệu vào, nhận lúc này thì a b c bình ở trên vô nghĩa hết. a2, b2, c2 vẫn bằng 0 dù a b c đã bắt đầu có giá trị.

If ....
// đến bước này thì test nào bạn nhập vào cũng đúng vì a2=b2+c2 (0=0+0, đã giải thích ở trên) và tương tự.


Như trong sách là đúng rồi ấy,
Writeln(...);
Readln(a,b,c);
// nhận dữ liệu vào
a2=a*a;
b2=b*b;
c2=c*c;
// tính toán bình phương
If .... ;
// kiểm tra đều kiện pytago;
Thế này sẽ ra kết quả đúng.
Quào, cám ơn bạn nhiều :)))
 
  • Like
Reactions: Lục Vân Tiên
Top Bottom