Imi poate explica cineva mecanismul algoritmului urmator?
s=elevi
n=strlen(s);
for (i=0;i<=n;i++)
strrev(s);
cout <<strrev(s+strlen(s)-i-1)<<" ";
strrev(s+strlen(s)-i-1);
strrev(s);
Este un algoritm de afisare a prefixelor : e el ele elev elevi
As vrea sa aflu gandirea programului, cum schimba cuvintele in asa fel încât ajung la forma finala prezentata... 50 puncte plus coroana celui mai complex răspuns. Mulțumesc !
Răspunsuri la întrebare
Răspuns de
2
strrev(s) este o functie care inverseaza sirul de caractere primit ca si parametruEx: in cazul sirului elevi strrev(s) returneaza "ivele"
in fiecare iteratie a ciclului for algoritmul inverseaza sirul ca mai apoi sa poata inversa ultimele i+1 caractereale sirului astfel obtinand prefixele , ultimele doua strrev- uri readuc sirul de caractere in starea lor initiala,adica elevii = 0 strrev(s) -> ivele strrev(s+strlen(s)-i-1) -> e, sirul are forma "ivele" strrev(s+strlen(s)-i-1) -> e sirul are forma "ivele" strrev(s) -> elevi i = 1 strrev(s) -> ivele strrev(s+strlen(s)-i-1) -> el, sirul are forma "iveel" strrev(s+strlen(s)-i-1) -> le sirul are forma "ivele" strrev(s) -> elevi i = 2 strrev(s) -> ivele strrev(s+strlen(s)-i-1) -> ele, sirul are forma "ivele" strrev(s+strlen(s)-i-1) -> ele sirul are forma "ivele" strrev(s) -> elevii = 3 strrev(s) -> ivele strrev(s+strlen(s)-i-1) -> elev, sirul are forma "ielev" strrev(s+strlen(s)-i-1) -> vele sirul are forma "ivele" strrev(s) -> elevii = 4 strrev(s) -> ivele strrev(s+strlen(s)-i-1) -> elevi, sirul are forma "elevi" strrev(s+strlen(s)-i-1) -> ivele sirul are forma "ivele" strrev(s) -> elevi
in fiecare iteratie a ciclului for algoritmul inverseaza sirul ca mai apoi sa poata inversa ultimele i+1 caractereale sirului astfel obtinand prefixele , ultimele doua strrev- uri readuc sirul de caractere in starea lor initiala,adica elevii = 0 strrev(s) -> ivele strrev(s+strlen(s)-i-1) -> e, sirul are forma "ivele" strrev(s+strlen(s)-i-1) -> e sirul are forma "ivele" strrev(s) -> elevi i = 1 strrev(s) -> ivele strrev(s+strlen(s)-i-1) -> el, sirul are forma "iveel" strrev(s+strlen(s)-i-1) -> le sirul are forma "ivele" strrev(s) -> elevi i = 2 strrev(s) -> ivele strrev(s+strlen(s)-i-1) -> ele, sirul are forma "ivele" strrev(s+strlen(s)-i-1) -> ele sirul are forma "ivele" strrev(s) -> elevii = 3 strrev(s) -> ivele strrev(s+strlen(s)-i-1) -> elev, sirul are forma "ielev" strrev(s+strlen(s)-i-1) -> vele sirul are forma "ivele" strrev(s) -> elevii = 4 strrev(s) -> ivele strrev(s+strlen(s)-i-1) -> elevi, sirul are forma "elevi" strrev(s+strlen(s)-i-1) -> ivele sirul are forma "ivele" strrev(s) -> elevi
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă