Răspuns :
Ce urmeaza sa citesti sunt doar niste sfaturi, feel free to ignore if want ;)
Așa...
Deci codul tau are mici scapari (nu sunt grave dar uneori pot dauna fara ca tu sa-ti dai seama mai tarziu). De ex: ai declarat global 's' iar mai apoi ai folosit 's' ca argumentul unei functii ceea ce e inutil deoarece 's' este prezent peste tot el fiind declarat global. La functia 'int perechi(char s[255])' , 255 ala este in plus. Pur si simplu declara char s[] -> e mai simplu iar daca cumva limita este marita nu va trebui sa schimbi in functie numarul. Altceva ar fi: n; n=strlen(s); -> acelasi lucru ca si: int n = strlen(s) :D (stiu ma iau de niste lucruri cam nesemnificative dar daca tot scriem cod, de ce sa nu il facem si elegant si eficitent :) ). Functia afisare nu isi are rostu. Poti foarte bine sa introduci cout<<nrperechi(s); in main ca tot acelasi lucru face + ca reduce white spaces. Iar in cele din urma #include<ctype.h> e useless iar string.h inlocuieste-l mai bine cu cstring pt vizibilitate ;)
Aici e algoritmul tau dar un pic modificat, daca nu-ti merge sa-mi spui link-ul de la problema ca sa te ajut, ok?
#include<iostream>
#include<cstring>
using namespace std;
const int NMAX = 260;
char s[NMAX];
bool vocala(char a){ return strchr("aeiou", a); }
int nrperechi()
{
int nr = 0, n = strlen(s);
for(int i=0; i < n - 1; i++) {
if(s[i+1] == ' ') { i++; continue; }
if(vocala(s[i]) != NULL && vocala(s[i+1]) != NULL)
nr++;
else if(vocala(s[i]) == NULL && vocala(s[i+1]) == NULL)
i++;
}
return nr;
}
int main()
{
cin.get(s, NMAX);
cout << nrperechi() << '\n';
return 0;
}
Așa...
Deci codul tau are mici scapari (nu sunt grave dar uneori pot dauna fara ca tu sa-ti dai seama mai tarziu). De ex: ai declarat global 's' iar mai apoi ai folosit 's' ca argumentul unei functii ceea ce e inutil deoarece 's' este prezent peste tot el fiind declarat global. La functia 'int perechi(char s[255])' , 255 ala este in plus. Pur si simplu declara char s[] -> e mai simplu iar daca cumva limita este marita nu va trebui sa schimbi in functie numarul. Altceva ar fi: n; n=strlen(s); -> acelasi lucru ca si: int n = strlen(s) :D (stiu ma iau de niste lucruri cam nesemnificative dar daca tot scriem cod, de ce sa nu il facem si elegant si eficitent :) ). Functia afisare nu isi are rostu. Poti foarte bine sa introduci cout<<nrperechi(s); in main ca tot acelasi lucru face + ca reduce white spaces. Iar in cele din urma #include<ctype.h> e useless iar string.h inlocuieste-l mai bine cu cstring pt vizibilitate ;)
Aici e algoritmul tau dar un pic modificat, daca nu-ti merge sa-mi spui link-ul de la problema ca sa te ajut, ok?
#include<iostream>
#include<cstring>
using namespace std;
const int NMAX = 260;
char s[NMAX];
bool vocala(char a){ return strchr("aeiou", a); }
int nrperechi()
{
int nr = 0, n = strlen(s);
for(int i=0; i < n - 1; i++) {
if(s[i+1] == ' ') { i++; continue; }
if(vocala(s[i]) != NULL && vocala(s[i+1]) != NULL)
nr++;
else if(vocala(s[i]) == NULL && vocala(s[i+1]) == NULL)
i++;
}
return nr;
}
int main()
{
cin.get(s, NMAX);
cout << nrperechi() << '\n';
return 0;
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de ajutor, nu ezitați să ne contactați. Vă așteptăm cu drag data viitoare și vă încurajăm să ne salvați în lista de favorite!