2017-09-30 2 views
0

Schreiben Sie ein Programm mit for-Schleife, die Alphabete von Z-A speichert. Extrahiere nur Vokale aus diesem Array und speichere sie in anderen Array-Vokalen. Zeigen Sie nun diese Vokale mit for for loop aus dem Vokalen-Array an.Extrahieren von Vokalen aus einem Array..und Speichern von nd Drucken auf einem anderen Array

Mein Ausgang funktioniert nicht richtig. Wenn ich meinen Namen ohne Leerzeichen wie abdulhananhamid schreibe, dann funktioniert es und zeigt a u a a.
Ich weiß nicht, wie man cin in einer for-Schleife, entweder.

#include<iostream> 
#include<conio.h> 
using namespace std; 

int vowel (char x); 

int main() 
{ 
char size=100; 
char x[size]; 
char A[5]; 
int n,i,; 
cout<<"Enter any string\n"; 
cin>>x; 

for (i = 0, n = 0; i<size; i++) 

    if (vowel(x[i])) 
     A[n++] = x[i]; 

for (n = 0;n<5;n++) 
    cout << A[n] << " "; 

getch(); 
return 0; 

} 
int vowel(char x) 
{ 

if(x=='a'||x=='e'||x=='i'||x=='o'||x=='u') 
return 1; 
else 
return 0; 
} 
+0

Sie ändern sollten 'size' zu 'const int size = 100;', andernfalls verwenden Sie VLAs, die nicht Standard sind. –

+0

Wenn Sie Zeichenarrays verwenden müssen (anstelle von "std :: string"), verwenden Sie "std :: getline" zum Einlesen in das Array. –

+0

Es besteht die Möglichkeit, dass 'A [n ++]' überlaufen kann. –

Antwort

0

Das sieht aus wie eine gute Zuordnung für std::string und std::getline verwenden.

std::string user_text; 
std::cout << "Enter a string: "; 
while (std::getline(std::cin, user_text) 
{ 
    const size_t length = user_text.length(); 
    std::string vowels; 
    for (size_t i = 0; i < length; ++i) 
    { 
    const char c = user_text[i]; 
    if ((c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u')) 
    { 
     vowels += c; 
    } 
    } 
    std::cout << "Vowels found: " << vowels << "\n"; 
    std::cout << "\nEnter a string: "; 
} 

Wenn Sie Zeichen-Arrays verwenden müssen, sollten Sie sich für Überlauf überprüfen:

unsigned int MAXIMUM_CHARACTERS = 128; 
char user_text[MAXIMUM_CHARACTERS]; 
char vowels_found[MAXIMUM_CHARACTERS]; 
std::cout << "Enter a string: "; 
while (std::cin.getline(&user_text[0], MAXIMUM_CHARACTERS)) 
{ 
    unsigned int vowel_index = 0U; 
    const size_t length = strlen(user_text); 
    for (size_t i = 0; i < length; ++i) 
    { 
    const char c = user_text[i]; 
    if ((c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u')) 
    { 
     vowels_found[vowel_index++] = c; 
    } 
    } 
    vowels_found[vowel_index] = '\0'; 
    std::cout << "Vowels found: " << vowels_found << "\n"; 
    std::cout << "\nEnter a string: "; 
} 

Eine Funktion für einen Vokal Überprüfung aussehen könnte:

bool is_vowel(char c) 
{ 
    return (c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u'); 
} 
+0

Ihre Logik absolut nicht sinnvoll, me..i weiß nicht in Funktionen eingebaut, die viel ... aber ich probiere.thnx ..: P –

Verwandte Themen