Problema siruri. Aceea este cerinta, iar in dreapta rezolvarea din barem. In stanga este ce am incercat eu sa fac inainte sa vad baremul. Se poate corecta si continua ideea mea, sau e gresita si singura rezolvare ok ( si asemanatoare ) e aia din barem ? Daca e asa, as vrea sa imi explicati varianta din dreapta.
Răspunsuri la întrebare
Răspuns:
Am atasta o imagine pentru o lizibilitate mai buna dar o sa-ti las si aici codul pentru copy-paste.
Cam asta fac si ei in barem, numai ca mult mai urat in opinia mea =))
Plus ca ma si construiesc in alt sir... n-are sens, nu zice sa se construiasca in memorie, se spune sa se afiseze, incearca sa gandesti intr-un mod simplist, don't overthink
Explicație:
Am comentat pe cod, tot ce e mai greu de inteles este functia aia, iti recomand sa pui pe hartie si sa faci ca la subiectul I pas cu pas ca sa-ti dai seama cum verific daca este prefix.
COD:
#include<bits/stdc++.h>
using namespace std;
//bool daca cunosti in loc de int dar merge si asa
int estePrefix(char * cuvant, char * prefix){
int dif = strlen(cuvant) - strlen(prefix);
for(int i = strlen(cuvant) - 1; i >= dif; i--){
if(cuvant[i] == prefix[i-dif]){
continue;
}
else{
return 0;
}
}
return 1;
}
int main(){
char s[256]; cin.get(s,256); //s = sirul initial, initializare si citire
char * sep = "*"; //separator
char * cuvant = strtok(s, sep); //obtinerea primului cuvant din sirul citit
char * p = strtok(NULL, sep);
cout<<sep; //mai afixam o steluta la inceput ca asa vor ei
while(p){
if(!estePrefix(p, cuvant)){
cout<<p; // Daca NU este prefix se afiseaza cuvantul
}
cout<<sep; //se afiseaza steluta dupa fiecare cuvant indiferent daca cuvantul s-a afisat sau nu
p = strtok(NULL, sep);
}
}