Răspuns :
Un sir de caractere in C++ se termina cu valoarea 0. Acel 0 e pus la final pentru a stii ca s-a terminat sirul. cin.get() iti va formata sirul si va adauga 0 la final. Exemplu: Pentru cuvantul "apa", s[3] va fi egal cu 0. Tu declari sirul ca fiind de dimensiunea 201, din cauza asta compilatorul va aloca 201 caractere in memorie, chiar daca tu nu le dai o valoare ele tot vor avea una. Tu in timp ce modifici sirul adaugi caractere in el, astfel pozitia valorii 0 ar trebuii sa se schimbe dar tu nu faci asta asa ca la final cand printezi sirul, cum nu mai exista valoarea 0 in sir el va printa pe ecran tot ce se afla in acel sir, adica toate cele 201 caractere. Caractele alea ciudate pe care le vezi tu sunt restul de caractere pe care nu le folosesti dar au fost intializate in memorie.
Ca sa repari rapid programul poti dupa ce iesi din for sa faci s[n] = 0; ca sa stie C++ unde se termina sirul tau :P
Pe viitor insa iti recomand fie sa folosesti o functie de insert predefinita in C++ sau sa iti creezi tu una ca sa eviti astfel de probleme cu inserarea de caractere.
TL;DR (too long, didnt read/varianta scurta):
Sirul tau trebuie sa se termine cu valoarea 0. Deoarece tu scrii peste aceasta valoare si ea nu mai exista cand afisezi sirul vor aparea caractere ciudate. Dupa for adauga s[n] = 0; si nu vei mai avea problema asta.
Uite aici cod de C++ compilat si care functioneaza cu note despre ce ai facut gresit si sugestii:
http://hastebin.com/ukalipeqap.rb
Am atasat un link cu sursa cu explicatii deoarece formatarea codului pe acest website e cancer. :P
Ca sa repari rapid programul poti dupa ce iesi din for sa faci s[n] = 0; ca sa stie C++ unde se termina sirul tau :P
Pe viitor insa iti recomand fie sa folosesti o functie de insert predefinita in C++ sau sa iti creezi tu una ca sa eviti astfel de probleme cu inserarea de caractere.
TL;DR (too long, didnt read/varianta scurta):
Sirul tau trebuie sa se termine cu valoarea 0. Deoarece tu scrii peste aceasta valoare si ea nu mai exista cand afisezi sirul vor aparea caractere ciudate. Dupa for adauga s[n] = 0; si nu vei mai avea problema asta.
Uite aici cod de C++ compilat si care functioneaza cu note despre ce ai facut gresit si sugestii:
http://hastebin.com/ukalipeqap.rb
Am atasat un link cu sursa cu explicatii deoarece formatarea codului pe acest website e cancer. :P
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, nu ezitați să ne contactați. Așteptăm cu nerăbdare să vă revedem și nu uitați să ne salvați în lista de favorite!