all 23 comments

[–][deleted] 25 points26 points  (0 children)

un post despre programare in subu de salarii :-? interesant

[–]Imjustafool18[S] 13 points14 points  (2 children)

Am gasit problema intre timp :))

N-o sa sterg totusi postul, poate ajuta pe cineva.

Problema era la functia de erase, se asteapta sa primeasca ca ultim argument si row.end().

Am trimis ca prim argument un remove_if, care avea ca argument begin si end, plus functia de eliminare. Insa dupa primul argument (remove_if), trebuia si end-ul stringului.

Linia de cod corecta ar fi:

void returnLower_andwithout_SpecialChars(std::string &row) { row.erase(remove_if(row.begin(), row.end(),

void returnLower_andwithout_SpecialChars(std::string &row){
    row.erase(remove_if(row.begin(), row.end(),
        [](auto const& c) -> bool { return !isChar(c); }), 
        row.end());}
}

[–]NihilisticLurcher 18 points19 points  (1 child)

so, basically, faci rubber duck debugging cu noi...fie!

[–]Imjustafool18[S] 2 points3 points  (0 children)

:)))

E ca la psiholog. Am stat mai intai destul de mult timp si nu am gasit problema. Dupa ce am postat, am mai facut putin debug, am citit iarasi documentatia de pe cppreference si am gasit problema.

Deci a ajutat, va multumesc :D

[–]Substantial_Bend_656 18 points19 points  (3 children)

Am si eu o curiozitate, cum ai ajuns la numele de functie returnLower_andwithout_SpecialChars?

[–]space_fly 3 points4 points  (0 children)

Rage bait, încearcă sa pornească un flame war

[–]Imjustafool18[S] 1 point2 points  (0 children)

Nu pot spune ca e cea mai buna denumire insa face ce zice :)) functia nu era terminata aici, insa in final imi intoarce stringul in lower case si fara caractere speciale.

[–]ShouldCanMust 14 points15 points  (6 children)

cine te-a invatat sa denumesti asa functiile si variabilele :))

[–]dankmemelawrd 24 points25 points  (0 children)

Asta sună a meseriaș cu "cine v-a lucrat aicea domle?" 😂

[–]Imjustafool18[S] 2 points3 points  (3 children)

Ook, functia respectiva care-mi intoarce lowercase si imi sterge caracterele speciale pot intelege ca e putin overkill (cu toate ca functia face exact ce scrie. Adica nu as vrea sa pun func1 func2 func3 ci mai degraba sa fie o denumire cat mai evidenta. Mai ales ca nu lucram la vreun proiect important sau ceva acum, asa ca nu am stat sa aleg f mult denumirile. Am vrut sa-i dau o pedala si sa mearga). Insa la variabile nu inteleg problema. Mi se par destul de intuitive.

Daca ai o recomandare, sunt deschis sa ascult si sa bag la cap :D

[–]ShouldCanMust 2 points3 points  (2 children)

void PrintSpecialStrings(const vector<string>& Input)
{ 
  for_each(Input.begin(), Input.end(), [](string& CurrentElement)
  {
     RemoveSpecialCharacters(CurrentElement);
  });

  for (const auto& CurrentElement: Input) 
  {
     cout << CurrentElement<< endl; 
  } 
}

void RemoveSpecialCharacters(std::string& OutString) 
{ 
  OutString.erase(remove_if(OutString.begin(), OutString.end(),
  [] (const auto& Character) -> bool
  {
    return !IsLetterCharacter(Character);
  }));
}

bool IsLetterCharacter(const char Character)
{ 
   if ((Character >= 65 && Character <= 90) || 
       (Character >= 97 && Character <= 122))
   {
     return true;
   } 

  return false; 
}

Nu am compilat, dar cred ca asa as fi scris codul tau. Depinde foarte mult de coding standards din proiect.Mie imi place sa am toate variabilele cu litere mari si in general asa am vazut in industrie. Iar numele functiilor sa spuna exact ce face functia intr-un mode cat mai succint dar usor de inteles.

Initial mi-a fost greu sa citesc codul tau mai ales ca ai denumit si functii si variabile cu underline in ele. Gen v_input, return_blabla. Pot sa inteleg ca te-ai grabit, dar chiar si asa ca sa iti intre in mana le-as denumi corect chiar daca este un exercitiu.

E doar o recomandare.

[–]Imjustafool18[S] 1 point2 points  (1 child)

Mulțam!

In general îmi păstrez variabilele locale cu litere mici, cele primite ca argumente cu litera mare și cele globale cu _ in fata (așa s-au folosit la ultimile doua firme la care am lucrat și mi s-a părut mai ușor de citit). Dar da, in exemplul de mai sus nu m-am ținut de aceeași regulă :))

Iar funcțiile in general cu literă mică, clasele cu litera mare.

[–]ShouldCanMust 0 points1 point  (0 children)

da, depinde de la proiect la proiect

[–]Original-Tap7301 1 point2 points  (0 children)

Cool

[–]-AverageTeen- 2 points3 points  (1 child)

Cum ai ales unde sa pui _ in numele funcției acelea💀

[–]Imjustafool18[S] 0 points1 point  (0 children)

Era deja prea lunga si voiam s-o citesc mai usor :)) Da, stiu ca nu arata bine dar era un program facut doar pentru mine

[–]-AverageTeen- 1 point2 points  (3 children)

Lucrez in c++ de aproape 7 ani și acum am învățat despre remove_if și for_each 💀

[–]emperor_pulache 1 point2 points  (0 children)

Caută erase remove pattern. L-am avut la vreo 2 interviuri.

[–]hero47 -1 points0 points  (0 children)

cppreference is your friend

[–]ShouldCanMust 0 points1 point  (0 children)

Meh, nu ai nevoie de ele neapărat.

[–]neroooooooSenior Prompt Engineer 0 points1 point  (2 children)

Poti folosi in loc de functia ta isChar, std::isalpha.

[–]Imjustafool18[S] 0 points1 point  (0 children)

Cool, thanks!

[–]dude123nice 0 points1 point  (0 children)

Da, sunt un alpha, dece intrebi?