मैंने यह कोड स्ट्रिंग को वाक्य मामले में बदलने के लिए लिखा था लेकिन मुझे नहीं पता कि समस्या कहां है

for (int i = 0; s[i] != '\0'; i++)
{
    if (i == 0 && s[i] >= 'a' && s[i] <= 'z')
    {
        s[i] -= 32;
        cout << s[i];
    }
    else if (s[i] == '.')
    {
        if (s[i+1] == ' ')
        {
            if (s[i + 2] >= 'a' && s[i + 2] <= 'z')
            {
                s[i + 2] -= 32;
                cout << s[i + 2];
            }
        }
        else
        {
            if (s[i + 1] >= 'a' && s[i] <= 'z')
            {
                s[i + 1] -= 32;
                cout << s[i + 1];
            }
        }
    }
    cout << s[i];
}

समस्या उदाहरण के लिए है अगर मैं दे द

वीडियो आपको अपनी बात साबित करने में मदद करने का एक शक्तिशाली तरीका प्रदान करता है। जब आप ऑनलाइन वीडियो पर क्लिक करते हैं, तो आप उस वीडियो के एम्बेड कोड में पेस्ट कर सकते हैं जिसे आप जोड़ना चाहते हैं। आप उस वीडियो को ऑनलाइन खोजने के लिए एक कीवर्ड भी टाइप कर सकते हैं जो आपके दस्तावेज़ के लिए सबसे उपयुक्त हो। आपके दस्तावेज़ को पेशेवर रूप से तैयार करने के लिए, शब्द शीर्षलेख, पाद लेख, कवर पेज और टेक्स्ट बॉक्स डिज़ाइन प्रदान करता है जो एक दूसरे के पूरक हैं। उदाहरण के लिए, आप मेल खाने वाला कवर पेज, हेडर और साइडबार जोड़ सकते हैं।

आउटपुट इस तरह है

VVideo आपको अपनी बात साबित करने में मदद करने का एक शक्तिशाली तरीका प्रदान करता है। जब आप ऑनलाइन वीडियो पर क्लिक करते हैं, तो आप उस वीडियो के एम्बेड कोड में पेस्ट कर सकते हैं जिसे आप जोड़ना चाहते हैं। आप उस वीडियो के लिए ऑनलाइन खोज करने के लिए एक कीवर्ड भी टाइप कर सकते हैं जो आपके दस्तावेज़ टी के लिए सबसे उपयुक्त हो। आपके दस्तावेज़ को पेशेवर रूप से तैयार करने के लिए, शब्द शीर्षलेख, पाद लेख, कवर पेज और टेक्स्ट बॉक्स डिज़ाइन प्रदान करता है जो एक दूसरे के पूरक हैं। उदाहरण के लिए, आप एक मेल खाने वाला कवर पेज, हेडर और साइडबार जोड़ सकते हैं। वीडियो आपको अपनी बात साबित करने में मदद करने का एक शक्तिशाली तरीका प्रदान करता है। जब आप ऑनलाइन वीडियो पर क्लिक करते हैं, तो आप उस वीडियो के एम्बेड कोड में पेस्ट कर सकते हैं जिसे आप जोड़ना चाहते हैं। आप उस वीडियो को ऑनलाइन खोजने के लिए एक कीवर्ड भी टाइप कर सकते हैं जो आपके दस्तावेज़ के लिए सबसे उपयुक्त हो। आपके दस्तावेज़ को पेशेवर रूप से तैयार करने के लिए, शब्द शीर्षलेख, पाद लेख, कवर पेज और टेक्स्ट बॉक्स डिज़ाइन प्रदान करता है जो एक दूसरे के पूरक हैं। उदाहरण के लिए, आप मेल खाने वाला कवर पेज, हेडर और साइडबार जोड़ सकते हैं।

इसलिए मूल रूप से एक बार यह प्रत्येक वाक्य के पहले अक्षर को डॉट से पहले प्रिंट करता है और फिर अपर केस वाक्य के पहले अक्षर को प्रिंट करता है और उसके बाद इनपुट को दोहराता है

c++
0
Farzan_alm 3 अगस्त 2020, 10:08

2 जवाब

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

बस टिप्पणी करें या दो पंक्तियों को हटा दें (क्योंकि वे उस अतिरिक्त चरित्र को उत्पन्न कर रहे हैं) और कोड आपकी इच्छानुसार काम करेगा:

  1. cout << s[i + 2]; और

  2. cout << s[i + 1];

यहाँ उसी के लिए उदाहरण है:

  for (int i = 0; s[i] != '\0'; i++)
{
    if (i == 0 && s[i] >= 'a' && s[i] <= 'z')
    {
        s[i] -= 32;
        cout << s[i];
        i++;
    }
    else if (s[i] == '.')
    {
        if (s[i+1] == ' ')
        {
            if (s[i + 2] >= 'a' && s[i + 2] <= 'z')
            {
                s[i + 2] -= 32;
               // cout << s[i + 2];
               
            }
        }
        else
        {
            if (s[i + 1] >= 'a' && s[i] <= 'z')
            {
                s[i + 1] -= 32;
                //cout << s[i + 1];
            }
        }
    }
    cout << s[i];
}
1
vishwampandya 3 अगस्त 2020, 10:33

मुझे लगता है कि आप इसे सोचकर खत्म हो गए हैं। वाक्य की शुरुआत के लिए आपके पास एक झंडा होना चाहिए और इसे शुरू करने के लिए सही पर सेट करना चाहिए। फिर अक्षर को अपर केस में प्रदर्शित करने के बाद ध्वज को रीसेट करें।

void tosentence(const char *s)
{
    auto startsentense = true;
    for (auto i = 0; s[i]; i++)
    {
        if (startsentense && isalnum(s[i]))
        {
            std::cout << static_cast<char>(toupper(s[i]));
            startsentense = false;
        }
        else if (s[i] == '.')
        {
            std::cout << s[i];
            startsentense = true;
        }
        else
        {
            std::cout << s[i];
        }
    }
}
1
Paul Baxter 3 अगस्त 2020, 10:28