# PBinfo #3155 – anagrame4 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Se citește de la tastatură un cuvânt s format din cel mult 11 litere mici distincte. Să se genereze în ordine alfabetică și să se afișeze toate anagramele cuvântului s în care consoanele sunt puncte fixe.

Date de intrare
Programul citește de la tastatură cuvântul s.

Date de ieșire
Programul va afișa pe ecran pe rânduri separate anagramele cuvântului citit în care consoanele rămân pe pozițiile inițiale.

Restricții și precizări

cuvântul s are cel mult 11 caractere și este format din litere mici distincte

Exemplu:
Intrare

sorina
Ieșire

sarino
saroni
sirano
sirona
sorani
sorina
Explicație
Anagramele sunt afișate în ordine lexicografică, iar literele s, r și n rămân pe pozițiile inițiale.

## Cod sursă C++

```cpp
#include <iostream>
#include <cstring>
using namespace std;
int n,X[12],P[12];
char s[12],v[]="aeiou";
void afisare()
{
    for(int i=1;i<=n;i++)
       cout<<s[X[i]];
    cout<<'\n';
}
int ok(int k)
{
    if(!(s[X[k]]=='a' ||  s[X[k]]=='e' || s[X[k]]=='i' || s[X[k]]=='o' || s[X[k]]=='u') && X[k]!=k-1)
        return 0;
    return 1;
}
void back(int k)
{
    for(int i=0;i<n;i++)
        if(!P[i])
        {
            X[k]=i;
            P[i]=1;
            if(ok(k))
            {
                if(k==n)
                    afisare();
                else back(k+1);
            }
            P[i]=0;
        }
}
int main()
{
    cin>>s;
    n=strlen(s);
    for(int i=0;i<n;i++)
        if(strchr(v,s[i])!=0)
            for(int j=i+1;j<n;j++)
                if(strchr(v,s[j])!=0)
                    if(s[i]>s[j] )
                    {
                        char aux=s[i]; s[i]=s[j]; s[j]=aux;
                    }
    back(1);
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3155)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3155/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3155/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
