Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी/सी++ में स्वरों और व्यंजनों को वैकल्पिक करना

स्वर और व्यंजन के साथ एक इनपुट स्ट्रिंग को देखते हुए। स्ट्रिंग को इस तरह से पुनर्व्यवस्थित करें कि स्वर और व्यंजन अंतिम स्ट्रिंग में वैकल्पिक स्थान पर हों। जैसा कि हम स्वर और व्यंजन को वैकल्पिक स्थिति में व्यवस्थित कर रहे हैं, इनपुट स्ट्रिंग को निम्नलिखित शर्तों में से किसी एक को पूरा करना चाहिए -

  • स्वर और व्यंजन की संख्या समान होनी चाहिए जैसे स्ट्रिंग "व्यक्तिगत" में 5 स्वर और 5 व्यंजन हैं।

  • यदि स्वरों की संख्या अधिक है, तो स्वरों की संख्या और व्यंजन की संख्या के बीच का अंतर 1 होना चाहिए। स्ट्रिंग "नोए" में 2 स्वर और 1 व्यंजन हैं।

  • यदि व्यंजन की संख्या अधिक है, तो व्यंजन की संख्या और स्वरों की संख्या के बीच का अंतर 1 होना चाहिए। स्ट्रिंग "ऑब्जेक्टिव" में 4 स्वर और 5 व्यंजन हैं।

एल्गोरिदम

1. count number of vowels
2. Count number of consonants
3. if difference between number of vowels and consonants or viceversa is greater than 1 then return error
4. Split input string into two parts:
   a) First string contains only vowels
   b) Second string contains only consonants
5. If number of consonants and vowels are equal, then create final string by picking a character from each string alternatively.
6. If number of vowels are greater than consonants, then:
   a) Include additional vowel in final string to make both strings of equal length
   b) Create final string by appending a character from each string alternatively
7. If number of consonants are greater than vowels, then
   a) Include additional consonant in final string to make both strings of equal length
   b) Create final string by appending a character from each string alternatively

उदाहरण

#include <iostream>
#include <string>
using namespace std;
bool is_vowel(char ch) {
   if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch =='u') {
      return true;
   }
   return false;
}
string create_final_string(string &s1, string &s2, int start, int end) {
   string final_string;
   for (int i = 0, j = start; j < end; ++i, ++j) {
      final_string = (final_string + s1.at(i)) + s2.at(j);
   }
   return final_string;
}
string create_alternate_string(string &s) {
   int vowel_cnt, consonant_cnt;
   string vowel_str, consonant_str;
   vowel_cnt = consonant_cnt = 0;
   for (char c : s) {
      if (is_vowel(c)) {
         ++vowel_cnt;
         vowel_str += c;
      } else {
         ++consonant_cnt;
         consonant_str += c;
      }
   }
   if (abs(consonant_cnt - vowel_cnt) >= 2) {
      cerr << "String cannot be formed with alternating vowels and cosonants\n";
      exit(1);
   }
   if ((consonant_cnt - vowel_cnt) == 0) {
      return create_final_string(vowel_str, consonant_str, 0, vowel_cnt);
   } else if (vowel_cnt > consonant_cnt) {
      return vowel_str.at(0) + create_final_string(consonant_str,vowel_str, 1, vowel_cnt);
   }
   return consonant_str.at(0) + create_final_string(vowel_str,consonant_str, 1, consonant_cnt);
}
int main() {
   string s1 = "individual";
   string s2 = "noe";
   string s3 = "objective";
   cout << "Input : " << s1 << "\n";
   cout << "Output: " << create_alternate_string(s1) << "\n\n";
   cout << "Input : " << s2 << "\n";
   cout << "Output: " << create_alternate_string(s2) << "\n\n";
   cout << "Input : " << s3 << "\n";
   cout << "Output: " << create_alternate_string(s3) << "\n\n";
}

आउटपुट

जब आप उपरोक्त कोड को संकलित और निष्पादित करते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -

Input : individual
Output: inidivudal
Input : noe
Output: one
Input : objective
Output: bojecitev

  1. सी ++ में एक लिंक्ड सूची में व्यंजन और स्वर नोड्स व्यवस्थित करें?

    इस तकनीक में, हम स्वर वाले नोड्स को शुरुआत की कुंजी और अंत में व्यंजन के रूप में स्थानांतरित करते हैं। इस मामले में भी हम व्यवस्था बनाए रखते हैं। उदाहरण नीचे दिया गया है - Input: A-M-A-Z-O-N Output: A-A-O-M-Z-N Code (Complexity: O(N), Space O(1)) उदाहरण #include<iostream> using namespace std;

  1. सी/सी++ में एक स्ट्रिंग को उलट दें

    सी भाषा में एक स्ट्रिंग को उलटने के लिए यहां एक उदाहरण दिया गया है, उदाहरण #include<stdio.h> #include<string.h> int main() {    char s[50], t;    int i = 0, j = 0;    printf("\nEnter the string to reverse :");    gets(s);    

  1. सी # प्रोग्राम एक स्ट्रिंग में स्वर और व्यंजन की संख्या गिनने के लिए

    आपको स्वर और व्यंजन दोनों की जांच करने की आवश्यकता है, लेकिन अपरकेस और लोअरकेस दोनों की जांच करना न भूलें। स्वर गिनने के लिए, aeiou वर्णों को अलग से देखें, अर्थात if (myStr[i] == 'a' || myStr[i] == 'e' || myStr[i] == 'i' || myStr[i] == 'o' || myStr[i] == 'u' |