Răspuns :
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);
}
}