Informatică, întrebare adresată de cezarbmx123, 8 ani în urmă

Se consideră un text cu cel mult 100 de caractere (litere mici ale alfabetului englez şi
spaţii), în care cuvintele sunt separate prin câte un spaţiu. Înaintea primului cuvânt şi după
ultimul cuvânt nu există spaţii.
Scrieţi un program C/C++ care citeşte de la tastatură un text de tipul menţionat mai sus şi
determină transformarea acestuia în memorie prin înlocuirea fiecărui cuvânt format din trei
litere cu simbolul *. Programul afişează pe ecran textul obţinut.
Exemplu: pentru textul
bun este izvorul ce are apa rece
se afişează
* este izvorul ce * * rece

Răspunsuri la întrebare

Răspuns de Apollyon
0

Răspuns:

#include <iostream>

#include <sstream>

#include <string>

#include <vector>

int main() {

 /* în vectorCuvinte salvăm cuvintele separate după delimitator */

 std::vector<std::string> vectorCuvinte;

 std::string textInitial;

 /* citim textul */

 std::cout << "Introdu textul >> ";

 std::getline(std::cin, textInitial);

 /* getline-ul de mai jos va extrage cuvinte din istringstream în funcție de delimitatorul ales (spațiu în cazul nostru), la fiecare iterație cuvântul extras va fi salvat în cuvantExtras */

 std::string cuvantExtras ;

 std::istringstream is(textInitial);

 /* atâta timp cât încă avem delimitatori / n-am ajuns la finalul șirului */

 while (std::getline(is, cuvantExtras , ' ')) {

   /* dacă cuvântul separat are lungimea 3 îl înlocuim cu "*" */

   if (cuvantExtras .length() == 3) {

     cuvantExtras = "*";

   }

  /* și-l adăugăm în vector */

   vectorCuvinte.push_back(cuvantExtras );

 }

 /* acuma odată ce vectorul e format putem să afișăm elementele sau să construim un nou string pe care să-l afișăm, vectorul va fi de forma ["*", "este", "izvorul", "ce", "*", "*", "rece"] pentru exemplul nostru */

 for (auto const& cuvantCurent : vectorCuvinte) {

   std::cout << cuvantCurent << " ";

 }

 return 0;

}

Răspuns de andrei750238
2

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include <string>

using namespace std;

int main() {

char txt[100]{};

char cuvant[10];

//Cat timp avem text de citit

while (cin) {

 //Citeste urmatorul cuvant

 cin >> cuvant;

 //Daca are 3 litere concateneaza * la txt

 if (strlen(cuvant) == 3)

  strcat(txt, "* ");

 //Altfel concateneaza cuvantul (urmat de spatiu)

 else {

  strcat(txt, cuvant);

  strcat(txt, " ");

 }

}

cout << txt;

}

Anexe:
Alte întrebări interesante