चार मानों के लिए थोड़ी देर के लूप में लॉजिकल या ऑपरेटर का उपयोग करते समय, प्रोग्राम सही ढंग से नहीं चलता है।
कोड निम्नलिखित है:
#include <stdio.h>
void main() {
char choice = 'y';
while( choice != 'n' || choice != 'N') {
int num;
printf("\nEnter any number: ");
scanf("%d", &num);
int i = num - 1;
while(i >= 1) {
num *= i;
i--;
}
printf("Factorial is: %d\n", num);
printf("Do you want to continue? \n");
printf("Enter n to quit or y to continue\n");
scanf(" %c", &choice);
}
}
आउटपुट:
Enter any number: 3
Factorial is: 6
Do you want to continue?
Enter n to quit or y to continue
n
Enter any number: 3
Factorial is: 6
Do you want to continue?
Enter n to quit or y to continue
N
Enter any number:
यदि मैं समय कथन बदलता हूं, उदाहरण के लिए, इसमें:
while( choice != 'n' ) {
कार्यक्रम ठीक चलता है। यह तार्किक है या जो त्रुटि पैदा कर रहा है।
यह समस्या क्यों हो रही है? और मैं प्रोग्राम को OR लॉजिकल ऑपरेटर के साथ कैसे चलाऊं?
2 जवाब
तार्किक OR ऑपरेटर ||
सत्य का मूल्यांकन करता है यदि या तो व्यंजक सत्य है।
तो यदि choice
N
है तो choice != 'n'
सत्य है, और यदि choice
n
है तो choice != 'N'
सत्य है। यदि choice
इनमें से कोई नहीं है, तो दोनों सत्य हैं। तो पूरी शर्त हमेशा सच होगी।
आप इसके बजाय तार्किक और ऑपरेटर &&
का उपयोग करना चाहते हैं। इसका मूल्यांकन तभी सही होता है जब दोनों के भाव सत्य हों।
while( choice != 'n' && choice != 'N') {
यदि आप n
डालते हैं, तो choice != 'N'
सत्य है और यह जारी रहता है।
यदि आप N
डालते हैं, तो choice != 'n'
सत्य है और यह जारी रहता है।
||
के बजाय &&
होना चाहिए।
while( choice != 'n' || choice != 'N')
<- इन विकल्पों में से एक हमेशा सत्य होता है, इसलिए लूप हमेशा के लिए जारी रहता है