👤

Scrieţi programul C/C++ care citeşte de la tastatură un cuvânt format din cel mult 50 de
caractere, doar litere mari ale alfabetului englez, şi afişează pe ecran, fiecare pe câte o linie,
toate prefixele acestuia, în ordine crescătoare a lungimilor. Un prefix de lungime k al unui
cuvânt este un subşir format din primele k caractere ale acestuia.
Exemplu: dacă se citeşte cuvântul BACALAUREAT se vor afişa prefixele:
B
BA
BAC
BACA
BACAL
BACALA
BACALAU
BACALAUR
BACALAURE
BACALAUREA
BACALAUREAT


Răspuns :

#include<iostream>

#include<string>


using namespace std;


void printPrefix(string s, string builder = "")

{

   if(s.size() == 0) {

       cout<<builder;

       return;

   }

   cout<<builder<<endl; //Afisez in fiecare recursie builderul

   builder += s[0]; //Adaug dupa afisare prima litera din s

   s.erase(0,1); // Si elimin litera pe care am adaugat-o, practic, o mut de pe prima pozitie

   // a stringului pe ultima pozitie a builderului

   printPrefix(s,builder); //si apelez din nou functia cu parametri noi

}


int main()

{

   string s;

   cin>>s;

   printPrefix(s);

}