Problemă rezolvată șir de caractere clasa a XI-a mate-info neintensiv #2

Enunț

Se citește de la tastatură un cuvânt și apoi un text de maxim 70 de caractere (scris pe un singur rând). Să se afișeze umărul de apariții ale cuvântului citit în cadrul textului.

Exemplu: dacă se citește textul „E bine e foarte bine” și cuvântul „bine”, programul va afișa valoarea 2.

Vizual

Rezolvare

#include

#include

using namespace std;


int main()
{
 char cuvant[71] = „bine”, rand[501];

 cout << "Randul: "; cin.getline(rand, 500);

 int rezultat = 0;
 char *i = rand;
 while (i = strstr(i, cuvant))
 {
  ++rezultat;
  ++i;
 }

 cout << "Cuvantul \"" << cuvant << "\" apare de " <<
  rezultat << " ori in rand." << endl;

 return 0;
}

Explicații

In trecut, în loc de se folosea .
Se consideră că un cuvânt are maxim 70 de caractere și un rând de text are maxim 500 caractere.
rezultat este variabilă de tip întreg care reține ca un contor numărul de apariții ale cuvântului cuvant în rândul de text rand.
i este un pointer (indicator) către începutul rândului de text din rand și la prima parcurgere a condiției de continuare a while-ului se schimbă în prima apariție a cuvântului în rând, sau în NULL dacă nu există asemenea apariție. La următoarea parcurgere, va fi ori NULL, ori poziția celei de-a doua apariții a cuvântului în rând etc.
strstr(i, cuvant) din condiția de continuare a ciclului while se atribuie lui i. acest apel întoarce poziția următoarei apariții a cuvântului în cuvântul care începe la adresa de memorie i (rand[x] este echivalent cu rand + x fiind vorba de pointeri C).

Lasă un răspuns

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare /  Schimbă )

Fotografie Google

Comentezi folosind contul tău Google. Dezautentificare /  Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare /  Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare /  Schimbă )

Conectare la %s

%d blogeri au apreciat: