Sa se inlocuiasa prima litera 'm' dintr-un sir de caractere citit de la tastatura, cu litera 'p'.
ex: ana are mere - > ana are pere.
Dar daca este asa: maria marta Georgi sa se afiseze: paria marta Georgi, neinlocuind doar 1 singur 'm'.
am incercat aici si imi inlocuieste de 2 ori m-ul nu inteleg dc? ::<<
sau faceti voi alt algoritm cum stiti voi
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <cstring>
using namespace std;
char s[250], /* t[250]; */
int n,i;
int main()
{
cin.getline(s,250);
n=strlen(s);
while (s[i]!='m' && i<n) ++i;
if (i<n)
{ /*
strcpy(t,s+i+1);
strcpy(s+i+1,t);*/
s[i]='p';
cout << s;
}
else cout << "nu exista";
return 0;
}
Explicație:
- se cauta numai prima aparitie in sir.
- in cod 2 randuri de la if sunt puse in comentarii, deoarece in codebloks lucreaza varianta asta dar pe pbinfo, nu.
Iata info de pe pbinfo:
Eliminarea și inserarea unui caracter într-un șir
Acestea sunt operații frecvente și pot fi realizate cu ajutorul funcției strcpy. Deoarece comportamentul funcției strcpy este impredictibil dacă parametri se suprapun, este necesară utilizarea unui șir suplimentar.
Eliminarea unui caracter dintr-un sir
Următoarea secvență elimină din șirul s (presupus citit) caracterul de poziția x.
1. char s[256], t[256];
2. int x;
3. // ...
4. //eliminarea
5. strcpy(t , s + x + 1);
6. strcpy(s + x , t);
Inserarea unui caracter într-un sir
Următoarea secvență inserează în șirul s (presupus citit) de poziția x caracterul 'A'.
1. char s[256], t[256];
2. int x;
3. // ...
4. //inserarea
5. strcpy(t , s + x);
6. strcpy(s + x + 1 , t);
7. s[x] = 'A'; // echivalent, *(s+x) = 'A';
Consulta pbinfo, meniul Resurse, Clasa 10, Siruri de caractere