Informatică, întrebare adresată de butni, 9 ani în urmă

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 NuPotSaStiuTot
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;
}

butni: imi da 0 puncte!!!
Alte întrebări interesante