Có cách nào để sau khi xét, thỏa mãn 1 điều kiện if để thực hiện lệnh rồi thì chương trình ngưng lại không, vì khi nó xét if đầu, thực hiện xong nó xét tiếp điều kiện tiếp, kết quả là nó sẽ in ra nhiều lần
Somebody help @ltd @Honey_moon @laptrinhio
Cách dừng chương trình khi thỏa mãn một điều kiện?
thì đơn giản chỉ là exit()
Dạ thanks anh, thế mà lên Stackoverflow cũng chẳng tìm được
Mà anh, khi để vào nó báo 2 lỗi:
- ‘else’ without a previous ‘if’
- too few arguments to function ‘exit’
Vậy em phải điền cái j vào giữa 2 dấu ngoặc exit ạ
Em xem lại câu lệnh if else của mình, có thể em lỡ tay xóa mất một chữ
exit(0)
hoặc exit(1)
Số 0 và số 1 không quan trọng trong Windows. Trên Linux người ta có thể lấy giá trị này ra để kiểm tra xem chương trình có lỗi không. Theo quy ước giữa lập trình viên với nhau.
-
exit(0)
có nghĩa là không lỗi -
exit( khác 0 )
có nghĩa là có lỗi, và lỗi có số hiệu bằng chính số trả về
hic, code đây anh, lỗi đó em thấy thường chỉ báo khi đằng sau sai cái gì đó. Mới đầu báo lỗi kia, sau khi em thêm 0 vào exit ở các dòng thì cả đám đó đều báo lỗi ‘else’ without ‘if’ cả. Đã thử xóa else, nhưng vẫn vậy.
Em gửi code lên anh xem thử.
void SecondEquationSolve(float a, float b, float c)
{
SpecialCases(a, b, c);
if(a == 0)
aEqual0(b, c);
exit(0)
else if(b == 0)
bEqual0(a, b, c);
exit(0);
else if(c == 0)
cEqual0(a, b);
exit(0);
else
FullEquation(a, b, c);
exit(0);
}
Em thiếu ngoặc kìa @nhatlonggunz
Sửa lại thành
void SecondEquationSolve(float a, float b, float c)
{
SpecialCases(a, b, c);
if(a == 0)
{
aEqual0(b, c);
exit(0)
}
else if(b == 0)
{
bEqual0(a, b, c);
exit(0);
}
else if(c == 0)
{
cEqual0(a, b);
exit(0);
}
else
{
FullEquation(a, b, c);
exit(0);
}
}
Góp ý thêm là hàm exit
sẽ thoát chương trình luôn, thế nên không cần phải else
làm gì
void SecondEquationSolve(float a, float b, float c)
{
SpecialCases(a, b, c);
if(a == 0)
{
aEqual0(b, c);
exit(0)
}
if(b == 0)
{
bEqual0(a, b, c);
exit(0);
}
if(c == 0)
{
cEqual0(a, b);
exit(0);
}
FullEquation(a, b, c);
exit(0);
}
@ltd Em mới vừa định hỏi
Mà lúc đầu dùng else vẫn không dừng sau khi thực hiện xong if thỏa à, @nhatlonggunz?
Tình hình không khả thi anh ơi
Ý anh là sao?
Khi xét xong if đầu, nó vẫn xét tiếp các if sau và else, hic.
Không khả thi tức là nó không thoát chương trình như em muốn? Em thử debug bằng cách đặt breakpoint hoặc có thể ghi thêm 1 dòng printf và để xem từ console xem code có dạy qua if hay không?
Ví dụ:
if(a == 0)
{
aEqual0(b, c);
printf("Line %d\n", __LINE__);
exit(0)
}
ấy chết, em quên đặt exit ở SpecialCases
, thì ra nó vẫn xét cái SpecialCases
rồi mới vào if statement
, vậy em đặt exit(0);
dưới cái SpeacialCases
hay phải đưa vào if statement
Vì cơ bản đối với chương trình của bạn thì dùng cách else hay exit() cũng gần như nhau. (Dĩ nhiên trường hợp bài khác thì nó khác ). Có thể là do các hàm khác đã ảnh hưởng bạn thử làm theo anh Đạt xem nó có chui vô if không?
Có thể post hàm SpecialCases() của bạn lên được không?
Cám ơn tất cả mọi người rất nhiều, đã đặt exit dưới SpecialCases(SC)
và đã thành công
Hồi nãy vì dưới SC
không có exit
nên nó sẽ xét SC
trước rồi mới vào if statement
. Mà em nhập a = 1, b = 2, c= 1
thì nó đều thỏa SC
với 1 trong 3 cái if statement
nên nó lặp lại.
Bạn có thể up lại code hàm đó không? Mình cảm thấy hơi bất an hí hí
Dạ đây ạ
void SecondEquationSolve(float a, float b, float c)
{
{
SpecialCases(a, b, c);
exit(0);
}
if(a == 0) {
aEqual0(b, c);
exit(0);
}
if(b == 0) {
bEqual0(a, b, c);
exit(0);
}
if(c == 0) {
cEqual0(a, b);
exit(0);
}
FullEquation(a, b, c);
exit(0);
}
Vậy các dòng if bên dưới là vô ích rồi, vì cỡ nào nó cũng thực hiện thằng exit(0); trước
Đã test, SC
của mình có điều kiện nha, code dài nên không tiện post, nhưng nếu anh muốn xem (khoe hàng) thì em sẽ post