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

C भाषा में स्ट्रिंग से स्वर (Vowels) हटाना

तर्क

दिए गए स्ट्रिंग से स्वरों (a, e, i, o, u - छोटे और बड़े दोनों) को हटाने का एल्गोरिदम:

for (i = 0; i < len; i++) {
    if (str[i] है स्वर) {
        // वर्तमान स्थिति से सभी अक्षरों को एक स्थान बाएं शिफ्ट करें
        for (j = i; j < len; j++) {
            str[j] = str[j + 1];
        }
        len--;  // लंबाई घटाएं क्योंकि एक अक्षर हटाया गया
    }
}

प्रोग्राम

#include <stdio.h>
#include <string.h>

int main() {
    char str[100];
    int len, i, j;
    
    printf("कोई स्ट्रिंग दर्ज करें: ");
    fgets(str, sizeof(str), stdin);
    
    // fgets नई पंक्ति शामिल कर सकता है, उसे हटाएं
    len = strlen(str);
    if (len > 0 && str[len - 1] == '\n') {
        str[len - 1] = '\0';
        len--;
    }
    
    for (i = 0; i < len; i++) {
        char ch = str[i];
        // स्वर जांचें (छोटे और बड़े दोनों)
        if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' ||
            ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') {
            
            // अक्षरों को बाएं शिफ्ट करें
            for (j = i; j < len; j++) {
                str[j] = str[j + 1];
            }
            len--;
            i--;  // इसी स्थान पर फिर से जांचें (क्योंकि नया अक्षर आ गया)
        }
    }
    
    printf("स्वर हटाने के बाद स्ट्रिंग: %s\n", str);
    
    return 0;
}

आउटपुट

कोई स्ट्रिंग दर्ज करें: TutorialsPoint
स्वर हटाने के बाद स्ट्रिंग: TtrlsPnt

चरण-दर-चरण ट्रेस (TutorialsPoint के लिए)

चरणइंडेक्सअक्षरकार्रवाईस्ट्रिंग
10Tस्वर नहींTutorialsPoint
21uस्वर! शिफ्ट करेंTtorialsPoint
31tस्वर नहीं (पुनः जांच)TtorialsPoint
42oस्वर! शिफ्ट करेंTtrialsPoint
52rस्वर नहींTtrialsPoint
...............
अंतिम---TtrlsPnt

सुधारित संस्करण: नई स्ट्रिंग बनाकर (अधिक कुशल)

#include <stdio.h>
#include <string.h>

int isVowel(char ch) {
    ch = tolower(ch);
    return (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u');
}

int main() {
    char str[100], result[100];
    int i, j = 0;
    
    printf("स्ट्रिंग दर्ज करें: ");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0';  // नई पंक्ति हटाएं
    
    for (i = 0; str[i] != '\0'; i++) {
        if (!isVowel(str[i])) {
            result[j++] = str[i];
        }
    }
    result[j] = '\0';
    
    printf("स्वर हटाने के बाद: %s\n", result);
    
    return 0;
}

लाभ

  • O(n) समय जटिलता (पिछला O(n²))
  • मूल स्ट्रिंग अपरिवर्तित रहती है
  • पढ़ने और समझने में आसान
  • tolower() का उपयोग करके केस-इनसेंसिटिव जांच

सी लाइब्रेरी फ़ंक्शन विकल्प

C में स्वर हटाने के लिए कोई अंतर्निहित फ़ंक्शन नहीं है, लेकिन आप बना सकते हैं:

char* removeVowels(char *dest, const char *src) {
    int j = 0;
    for (int i = 0; src[i]; i++) {
        char ch = tolower(src[i]);
        if (ch != 'a' && ch != 'e' && ch != 'i' && ch != 'o' && ch != 'u') {
            dest[j++] = src[i];
        }
    }
    dest[j] = '\0';
    return dest;
}
  1. C भाषा में स्ट्रिंग क्या है - घोषणा और प्रारंभिकरण C भाषा में स्ट्रिंग क्या है - घोषणा और प्रारंभिकरण

    स्ट्रिंग क्या है? कैरेक्टर्स की एक सरणी (या संग्रह) को स्ट्रिंग कहा जाता है। C में स्ट्रिंग हमेशा नल कैरेक्टर \0 (ASCII 0) से समाप्त होती है। घोषणा (Declaration) char string_name[size]; उदाहरण: char str[50]; // 50 कैरेक्टर तक की स्ट्रिंग (49 + नल टर्मिनेटर) प्रारंभिकरण (Initialization) विधि 1: ए

  1. Python प्रोग्राम से सेट का उपयोग करके दी गई स्ट्रिंग में स्वरों की संख्या गिनना Python प्रोग्राम से सेट का उपयोग करके दी गई स्ट्रिंग में स्वरों की संख्या गिनना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक स्ट्रिंग दी गई है, हमें सेट का उपयोग करके दी गई स्ट्रिंग में स्वरों की संख्या गिनने की आवश्यकता है। यहां हम पूरी स्ट्रिंग को पार करते हैं और जांचते हैं कि प्रत्येक वर्ण स्वर है या नहीं और काउंट बढ़ाते हैं। आ

  1. - पायथन में स्ट्रिंग से कैरेक्टर कैसे हटाएं?

    यदि आप स्ट्रिंग में किसी निश्चित इंडेक्स पर स्थित कैरेक्टर को हटाना चाहते हैं, तो आप स्ट्रिंग स्लाइसिंग का उपयोग करके उस कैरेक्टर के बिना एक नई स्ट्रिंग बना सकते हैं। उदाहरण के लिए: >>> s = Hello World >>> s[:4] + s[5:] Hell World लेकिन यदि आप किसी कैरेक्टर या कैरेक्टर्स की सूची के