Se dă un șir de caractere format din litere și caracterele *, + și -. Domnul Eboda trebuie să determine câte subsecvențe de lungime 5 sunt anagrame ale cuvântului ADOBE. Regulile suplimentare sunt că nu se face distincție între literele mari și cele mici și în plus, caracterul + poate suplini oricare consoană, caracterul - suplinește orice vocală, iar * suplinește orice literă. Cu aceste reguli putem spune că următoarele secvențe de cinci caractere sunt anagrame ale cuvântului adobe: aeobd, dBoAE, db---, Ae-++, *****, ++---, ad*-+.
Răspunsuri la întrebare
Răspuns de
2
#include <iostream>
#include <string>
#include <sstream>
#include <locale>
using namespace std;
int main(){
string in;
getline(cin, in);
int l = in.length();
for (int i=0;i < l - 4;i++){
string s = in.substr(i,5);
std::locale loc;
char o[5];
bool la=false, ld=false, lo=false, lb=false, le=false;
for (int j=0; j<5; ++j){
o[j] = std::tolower(s[j],loc);
if ( !la && o[j] == 'a') la=true;
else if ( !ld && o[j] == 'd') ld=true;
else if ( !lo && o[j] == 'o') lo=true;
else if ( !lb && o[j] == 'b') lb=true;
else if ( !le && o[j] == 'e') le=true;
}
for (int j=0; j<5; ++j){
if ( !la && o[j] == '+') la=true;
else if ( !ld && o[j] == '-') ld=true;
else if ( !lo && o[j] == '+') lo=true;
else if ( !lb && o[j] == '-') lb=true;
else if ( !le && o[j] == '+') le=true;
}
for (int j=0; j<5; ++j){
if ( !la && o[j] == '*') la=true;
else if ( !ld && o[j] == '*') ld=true;
else if ( !lo && o[j] == '*') lo=true;
else if ( !lb && o[j] == '*') lb=true;
else if ( !le && o[j] == '*') le=true;
}
if (la && ld && lo && lb && le)
cout << s << endl;
}
return 0;
}
#include <string>
#include <sstream>
#include <locale>
using namespace std;
int main(){
string in;
getline(cin, in);
int l = in.length();
for (int i=0;i < l - 4;i++){
string s = in.substr(i,5);
std::locale loc;
char o[5];
bool la=false, ld=false, lo=false, lb=false, le=false;
for (int j=0; j<5; ++j){
o[j] = std::tolower(s[j],loc);
if ( !la && o[j] == 'a') la=true;
else if ( !ld && o[j] == 'd') ld=true;
else if ( !lo && o[j] == 'o') lo=true;
else if ( !lb && o[j] == 'b') lb=true;
else if ( !le && o[j] == 'e') le=true;
}
for (int j=0; j<5; ++j){
if ( !la && o[j] == '+') la=true;
else if ( !ld && o[j] == '-') ld=true;
else if ( !lo && o[j] == '+') lo=true;
else if ( !lb && o[j] == '-') lb=true;
else if ( !le && o[j] == '+') le=true;
}
for (int j=0; j<5; ++j){
if ( !la && o[j] == '*') la=true;
else if ( !ld && o[j] == '*') ld=true;
else if ( !lo && o[j] == '*') lo=true;
else if ( !lb && o[j] == '*') lb=true;
else if ( !le && o[j] == '*') le=true;
}
if (la && ld && lo && lb && le)
cout << s << endl;
}
return 0;
}
butni:
imi da 0 puncte!!!
Alte întrebări interesante
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă