मैं जो पूरा करने की कोशिश कर रहा हूं वह है:

उपयोगकर्ता के पास 3 प्रयास हैं।

कृपया संख्या का अनुमान लगाएं। (गलत)

आपने गलत अनुमान लगाया।

आपकी संख्या बहुत अधिक है (उच्च या निम्न)।

आपके पास 2 tr(ies) बचे हैं। (उपयोगकर्ता गलत अनुमान लगाता है)

आपने गलत अनुमान लगाया।

आपकी संख्या बहुत अधिक है (उच्च या निम्न)।

आपके पास 1 tr(y) शेष है।

ऊपरोक्त अनुसार। मैं "tr" के बाद अक्षरों को बदलने की कोशिश कर रहा हूं यदि उपयोगकर्ता ने 1 से अधिक "ies" और "y" को एक के लिए छोड़ दिया है।

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int num, guess, tries = 0;
    srand(time(0)); /* seed random number generator */
    num = rand() % 20 + 0; /* random number between 1 and 100 */
    int max_guess=3;
    printf("Guess My Number Game\n\n");

    do
    {
        printf("Enter a guess between 0 and 20 : ");
        scanf("%d", &guess);
        tries++;

        if (guess > num)
        {
            printf("Too high!");
            printf("You have %d tries left.\n\n",max_guess--);
        }
        else if (guess < num)
        {
            printf("Too low!");
            printf("You have %d tr%c left.\n\n",max_guess--,(tries=1 ? y));
        }
        else
        {
            printf("\nCorrect! You got it in %d guesses!\n", tries);
        }

    }
      while (guess != num);

    return 0;
}

मैं प्रिंटफ में सशर्त बयानों के लिए पठनीयता बढ़ाने के लिए क्या कर सकता हूं।

1
Joseph_Wesleyan 15 नवम्बर 2019, 20:19
एक संभावित समाधान एक ऐसा फ़ंक्शन जोड़ना है जो संख्या लेता है, कोशिश करता है, और चाहे वह उच्च या निम्न था, और फिर समाधान को प्रिंट करता है। यदि शेष प्रयासों की संख्या 1 है, तो 'कोशिश करें' प्रिंट करें; अन्यथा 'कोशिश' प्रिंट करें। आप इसे टर्नरी ऑपरेटर के साथ इनलाइन भी कर सकते हैं - मैं इसे देख लूंगा।
 – 
Nick Reed
15 नवम्बर 2019, 20:22
1
printf("...tr%s...", max_guess>1 ? "ies" : "y")
 – 
pmg
15 नवम्बर 2019, 20:22
max_guess != 1 का सुझाव दें क्योंकि अगर max_guess जीरो होते, तो आप चाहते थे कि 0 कोशिशें बाकी हों न कि 0 बायें कोशिश करें .. असल में मैं स्ट्रिंग्स को स्वैप कर दूंगा और max_guess == 1 लेकिन यह शैली की बात है बल्कि पदार्थ - यह सिर्फ एक और आकर्षक ऑपरेटर है ;-)। आप निश्चित रूप से चाहते हैं कि कोई प्रयास शेष न हो no को शून्य से प्रतिस्थापित कर दें, लेकिन यह एक अलग प्रश्न है।
 – 
Clifford
15 नवम्बर 2019, 20:40

1 उत्तर

सबसे बढ़िया उत्तर

आप अपने प्रिंट फ़ंक्शन के अंदर एक टर्नरी ऑपरेटर का उपयोग चुनिंदा रूप से "कोशिश" या "कोशिश" करने के लिए कर सकते हैं कि कितने प्रयास बचे हैं।

#include <stdio.h>

int main(void) {
  int tries = 3;
  for(int tries = 3; tries >= 0; tries--) {
    printf("%d %s left.\n", tries, 
      tries != 1 ? "tries" : "try"
    );
  }
  return 0;
}

3 कोशिशें बाकी हैं।
2 कोशिशें बाकी हैं.
1 कोशिश बाकी है।
0 प्रयास शेष।

tries != 1 ? "tries" : "try" का अर्थ है "अगर (?) कोशिश करता है! = 1, स्ट्रिंग "कोशिश" लौटाएं, अन्यथा (:) स्ट्रिंग "कोशिश" लौटाएं।

2
Nick Reed 15 नवम्बर 2019, 20:36
1
printf(... के बजाय fprintf(stdout... क्यों, यदि पठनीयता उसका लक्ष्य है? इसके अलावा पठनीयता के लिए मैं सुझाव दूंगा: printf( "%d %s left.\n", tries, tries == 1 ? "try" : "tries" ) ;। शब्द के विभाजन से बहुत कम बचत होती है और पठनीयता में बहुत खर्च होता है। अतिरिक्त कोष्ठक भी बेमानी हैं। यदि आप अभिव्यक्ति "अकेला" रखना चाहते हैं, तो इसे शायद अपनी एक नई पंक्ति में रखें।
 – 
Clifford
15 नवम्बर 2019, 20:34