Scrieţi programul C/C++ care citeşte de la tastatură, separate prin Enter, două şiruri de caractere: un şir s de maximum 255 de caractere, care pot fi litere ale alfabetului englez şi spaţii, apoi un şir c de maximum 20 de caractere. Programul va înlocui în şirul s toate apariţiile şirului c cu un şir de exact aceeaşi lungime efectivă cu c, format doar din caractere *, ca în exemplu. Şirul s obţinut în urma acestei prelucrări va fi afişat pe ecran. În cazul în care c nu apare în s, programul va afişa mesajul NU APARE.
Exemplu: dacă şirul S citit este Din departare se vede tare iar c este tare atunci pe ecran se va afişa: Din depar**** se vede ****


#include

#include

using namespace std;

int main()

{

char s[256], c[21], d[21], *p;

cin.get (s,256);

int i, n, c;

cin>>c;

n=strlen(s)  

for (i = 0; i <= n-1 ; i ++)

d[i] = ' * ';

d[n]='\0';

p=strtok(s, " ");

while( p != 0)

{ if ( strcmp ( p,c ) == 0)


Eu asa m-am gandit sa fac. Nu stiu exact in continuare cum e. Cu strcat cred.


Răspuns :

#include<iostream> #include<cstring> using namespace std;

int main(){

   char s[256]; cin.get(s,256); cin.ignore();

   char c[21]; cin.get(c,21);

   char * stelute; for(int i=0;i<strlen(c);i++) *(stelute+i) = '*';

   char * pch = strstr(s,c);

   if(pch == nullptr){

       cout<<"Nu apare";

       return 1;

   }

   while(pch != nullptr){

       strncpy(pch,stelute,strlen(c));

       pch = strstr(pch+1,c);

   }

   cout<<s<<endl;

}


Deci, m-am chinuit cu chestia asta mai bine de o ora, nu inteleg de ce, s-ar putea sa am eu probleme cu compilerul, incearca sa rulezi si vezi ce iese, eu, daca rulez asa, imi zice "Nu apare"

Daca ELIMIN whileul, merge, daca las doar cele 2 lini, merge pentru o aparitie, asa ca, trebuie sa copiez, daca dau input tare tare tare ENTER tare, si am copiat de 3 ori cele 2 lini de cod, functioneaza, daca pare acel WHILE universul se supara si face ca programul sa nu mai mearga si N-ARE NICI UN PIC DE SENS, adica gandestete ca nici nu ajunge in punctul ala  si... sper ca intelegi ce zic.