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ăspunsuri la întrebare
#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.