# PBinfo #1868 – prosirx – Rezolvare C++

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

## Enunț

Cerința
Se consideră un text format din cel mult 200 de caractere litere mici și spații. Cuvintele din text sunt separate prin unul sau mai multe spații. Scrieti un program care citește textul și care:
a) determină numărul de consoane din textul citit; 
b) înlocuiește prima literă a fiecărui cuvânt din textul citit cu litera X (mare); 
c) modifică textul citit prin aranjarea în ordine lexicografică a tuturor cuvintelor din text și separarea lor prin câte un singur spațiu.

Date de intrare
Fișierul de intrare prosirx.in conține pe prima linie textul.

Date de ieșire
Fișierul de ieșire prosirx.out va conține:
- pe prima linie răspunsul la cerința a)
- pe a doua linie răspunsul la cerința b)
- pe a treia linie răspunsul la cerința c)

Restricții și precizări

textul este format din cel mult 200 de caractere, doar litere mici sau spații

Exemplu:
prosirx.in

oana   este    la scoala 
prosirx.out

7 
Xana   Xste    Xa Xcoala 
este la oana scoala 
Explicație
Sunt 7 consoane în textul citit.

## Cod sursă C++

```cpp
#include <fstream>
#include <cstring>
using namespace std;
int main ()
{
    char s[210], t[210], voc[]=" aeiou";
    ifstream f("prosirx.in");
    ofstream g("prosirx.out");
    f.getline(s,210);
    int i, nr=0,n;
    strcpy(t,s);
    n=strlen(s);
    ///cerinta a)
    for(i=0; i<n; i++)
        if(strchr(voc,t[i])==NULL)nr++;
    g<<nr<<endl;
///cerinta b)
    t[0]='X';
    for(i=1; i<n; i++)
        if((t[i-1]==' ') && (t[i]!=' '))t[i]='X';
    g<<t<<endl;
    ///cerinta c)
    t[0]='\0';
    char *p, cuv[200][200];
    int k=0,j;
    p=strtok(s," ");
    while(p)
    {
        k++;
        strcpy(cuv[k],p);
        p=strtok(NULL, " ");
    }
    for(i=1; i<k; i++)
        for(j=i+1; j<=k; j++)
            if(strcmp(cuv[i],cuv[j])>0)swap(cuv[i],cuv[j]);
    strcpy(t,cuv[1]);
    for(i=2; i<=k; i++)
    {
        strcat(t," ");
        strcat(t, cuv[i]);
    }
    g<<t;
    return 0;
}
```

## Resurse

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