Informatică, întrebare adresată de cosmaandra2000, 8 ani în urmă

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.

Anexe:

Răspunsuri la întrebare

Răspuns de SKREFI
1

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);

   }

}

Anexe:

cosmaandra2000: Mersi !
Alte întrebări interesante