Imi puteti spune ce am gresit la acest program, va rog?
#include
#include
using namespace std;
int main()
{
char s1[20];
cout<<"tasteaza";
cin>>s1;
s1=struwr(strchr(s1,"aeiou"));
cout<
return 0;
}
enunt: sa se scrie un program care citeste de la tastatura un cuv format din cel mult 20 de caractere , doar litere mici ale alfabetului englez. Programul determina transformarea cuvantului citit inlocuirea fiecarei vocale a cuvantului, cu un sir format din 2 caractere si anume vocala respectiva urmata de litera mare corespunzatoare, restul literelor nemodificandu-se. Programul afiseaza pe ecran cuv obtinut , pe o singura linie.
vocale : a e i o u
exemplu: bacalaureat --> bAcAlAUrEAt
Răspunsuri la întrebare
Greseli :
1. Functia se numeste strupr nu struwr.
2. strupr primeste ca parametru un sir de caractere si nu returneaza nimic (adica e de tip void) . In cazul de fata atribuirea s1= strupr() este gresita.
3. strchr() primeste doi parametrii ,si anume:primul este un sir de caractere si al doilea este un caracter. (deci in cazul tu al doilea parametru nu e corect).
4. Daca totusi ai fi vrut sa folosestio functie mai convenabila ar fi fost strpbrk() , care oricum iti returneaza un pointer , deci nici asa nu e convenabil.
Iti las mai jos o varianta corecta a programelului:
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char s[20] ,v[6]="aeiou";
unsigned int i;
cin.get(s,20);
for(i=0;i<strlen(s);i++) //parcurgem toate caracterele
if(strchr(v,s[i])) //daca este vocala
s[i]= s[i]-32; // convertim din litera in mica in litera mare
// se putea folosi si functia toupper()
cout<<s;
return 0;
}