मैं अक्षरों की आवृत्तियों की जांच के लिए एक सी ++ प्रोग्राम लिख रहा हूं। जब आउटपुट में "abbbsssd" जैसी कोई जगह नहीं होती है, तो मेरा कोड अक्षरों की आवृत्तियों की बिल्कुल जांच कर सकता है। हालांकि, अगर इनपुट में स्पेस है जैसे: "डू बी डू बो।" मेरा आउटपुट सिर्फ "डी 1" और "ओ 1", "बी" और "ई" की कोई आवृत्ति नहीं है।
अपडेट किया गया कोड:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Letters
{
Letters() : freq(0){}
Letters(char letter,int freq) {
this->freq = freq;
this->letter = letter;
}
char letter;
int freq;
};
bool Greater(const Letters& a, const Letters& b)
{
if(a.freq == b.freq)
return a.letter < b.letter;
return a.freq > b.freq;
}
int main () {
cout<<"Enter text:" << endl;
string input;
getline(cin, input);
vector<Letters> count;
int letters[26]= {0};
for (int x = 0; x < input.length(); x++) {
if (isalpha(input[x])) {
int c = tolower(input[x] - 'a');
letters[c]++;
}
}
for (int x = 0; x < 26; x++) {
if (letters[x] > 0) {
char c = x + 'a';
count.push_back(Letters(c, letters[x]));
}
}
std::sort(count.begin(),count.end(),Greater);
cout<<"Frequencies:" << endl;
for (int x = 0 ; x < count.size(); x++) {
cout<<count[x].letter << " " << count[x].freq<<"\n";
}
return 0;
}
क्षमा करें अगर यह खराब लिखा गया है, और मदद के लिए अग्रिम धन्यवाद!
3 जवाब
अद्यतन
यह मानते हुए कि आपके प्रोग्राम का परीक्षण करने वाले व्यक्ति भी अपरकेस टेक्स्ट दर्ज करते हैं, आपका प्रोग्राम इस तरह दिखना चाहिए:
#include <iostream>
#include <iomanip>
using namespace std;
int alpha[26] = {0};
int main(void)
{
string text;
cout << "Enter text:" << endl;
getline(cin, text);
for (int i = 0; i < text.length(); i++)
{
int a = text[i];
if (a >= 'A' && a <= 'Z')
{
alpha[a - 'A']++;
}
else if (a >= 'a' && a <= 'z')
{
alpha[a - 'a']++;
}
}
cout << "Frequencies:" << endl;
for (int i = 0; i < 26; i++)
{
if (alpha[i])
{
cout << right << char('a' + i) << setw(2) << right << alpha[i] << endl;
}
}
return 0;
}
cin >> text;
केवल पहले गैर-व्हाट्सएप वर्ण के बाद पहले व्हाइटस्पेस वर्ण तक ही पढ़ेगा।
इस तरह की पूरी लाइन पढ़ने के लिए आप std::getline()
का इस्तेमाल कर सकते हैं :
getline(cin, text);
खैर, सीन केवल स्पेस डिलीमीटर तक ही पढ़ेगा और पूरी लाइन में पढ़ने के लिए, आपको गेटलाइन (सीन, वी) का उपयोग करने की आवश्यकता है; जहां v वेरिएबल है जिसे आप इनपुट को अंदर रखना चाहते हैं।
संबंधित सवाल
नए सवाल
c++
C ++ एक सामान्य-प्रयोजन प्रोग्रामिंग भाषा है। यह मूल रूप से C के विस्तार के रूप में डिज़ाइन किया गया था और इसमें एक समान सिंटैक्स है, लेकिन यह अब पूरी तरह से अलग भाषा है। C ++ कंपाइलर के साथ संकलित कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें। विशिष्ट मानक संशोधन [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] या [C ++ 23], आदि से संबंधित प्रश्नों के लिए संस्करण-विशिष्ट टैग का उपयोग करें। ।