Wypisywanie samogłosek i spółgłosek z wyrazu

0

Witam. Mam problem z jednym programem. Mam do napisania program który z podanego wyrazu utworzy nowy wyraz który będzie składał się z wszystkich spółgłosek, podanego wyrazu, oraz wszystkich samogłosek, również podanego wyrazu, na końcu. Nowy wyraz trzeba wypisać na ekranie monitora. Oto moja próba:

#include<iostream>
#include<cstdio>
#include <cstdlib>
using namespace std;

int main()
{
	char wyraz[30];
	cin.getline(wyraz,100);
	char samo[30];
	char spol[30];
	cout<<"Podaj wyraz: "; cin>>wyraz;
	for(int i=0;i<'\0';i++)
	{
		if((wyraz[i]=='a')||(wyraz[i]=='e')||(wyraz[i]=='y')||(wyraz[i]=='u')||(wyraz[i]=='i')||(wyraz[i]=='o'))
		samo[i]=wyraz[i];else spol[i]=wyraz[i];

	}

	cout<<spol[i]<<samo[i];
	cin.ignore ();
	getchar();
	return 0;
} 
0
  1. Albo cin.getline(wyraz,100); albo cin>>wyraz; ile razy masz go wczytywać?
  2. char wyraz[30]; - rozmiar 30 zaś pozwalasz wczytać 100 tu: cin.getline(wyraz,100); lub nieograniczoną ilość tu: cin>>wyraz;
  3. Ten twój algorytm z:
"Ala ma kota" zrobi:
"Al* m* k*t****************************" i:
"**a**a**o*a***************************" po czym je złoży razem, przy czym znaki * oznaczają jakieś śmieci.
2

Trochę słabo napisane, ale jest prawie dobrze.

  1. Czemu dwa razy czytasz wyraz z wejścia? Raz przez getline a drugi raz przez cin>> ?
  2. iostream raczej używa się razem z std::string a nie z char[]
  3. Pętla for jest źle napisana. Zauważ że to nie 'i' będzie miało wartość '0' tylko co najwyżej wyraz[i]. Ale ja bym tu w ogóle używał std:: string i robił pętlę do wyraz.length()
  4. Zapisywanie samoglosek/spółgłosek jest źle bo przesuwasz 'i' dla wszystkich tablic niepotrzebne. W efekcie pierwsza samogloska u ciebie moze być na przykład na 5 miejscu w tablicy samogłosek. Użyj std::string i po prostu dodawaj kolejne literki do niego za pomocą +.
  5. cout na końcu jest bez sensu bo próbujesz wypisać jedną literkę i to jeszcze o indeksie i+1 (bo tak go przesunie pętla). Jeśli użyjesz std::string to wypisz po prostu oba stringi na końcu.
0

Teraz mam taki mały problem ponieważ wypisuje mi tylko spółgłoski, bez samogłosek.

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int main()
{
	string wyraz;
	string samo;
	string spol;
	cout<<"Podaj wyraz: "; cin>>wyraz;
	for(int i=0;i<wyraz.length();i++)
	{
		if((wyraz[i]=='a')||(wyraz[i]=='e')||(wyraz[i]=='y')||(wyraz[i]=='u')||(wyraz[i]=='i')||(wyraz[i]=='o'))
		{ 
			samo=samo+wyraz[i];
			i++;
		}
		else
		{
			spol=spol+wyraz[i];
			i++;
		}
	
	}
	cout<<spol<<samo;
	
	cin.ignore ();
	getchar();
	return 0;
} 
0
  1. W ilu miejscach zwiększasz i?
  2. Czemu bezmyślnie używasz wersji przyrostkowej?
  3. Czy wiesz że cin>>wyraz wprowadzi ci jedno słowo?
  4. czemu nie używasz samo+=wyraz[i]; ?
#include<iostream>
using namespace std;
 
int main()
  {
   static string SAMO="aeiouy";
   string wyraz,samo,spol;
   cout<<"Podaj wyraz: ";
   getine(cin,wyraz);
   for(int i=0;i<wyraz.length();++i) (strchr(SAMO,wyraz[i])?samo:spol)+=wyraz[i];
   cout<<spol<<samo<<endl; 
   //cin.get(); // jeżeli tego potrzebujesz to zmień środowisko.
   return 0;
  } 

1 użytkowników online, w tym zalogowanych: 0, gości: 1