Jump to content

Andreigl

VIP
  • Posts

    1958
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Andreigl

  1. @Vesca, poți pune și un exemplu pt. funcția reverse, dar funcție externă? ? E mai ok o funcție externă, mai ales pt. începători std::string reverse(std::string myString) { int j = 0; for (int i = myString.length() - 1; i > j; i--) { char aux = myString[i]; myString[i] = myString[j]; myString[j] = aux; j++; } return myString; }
  2. @Vesca, Funcția reverse „face” același lucru ce am făcut și eu, adică funcționează sub același mod, altfel nu-mi explic cum ai putea inversa un cuvânt Deci varianta ta e mai scurtă doar, totuși ai uitat un lucru. Trebuie ca string-ul să fie lowercase în întregime pentru a putea verifica dacă este palindrom (așa este și în problema de mai sus de pe PbInfo). Varianta 1, exact cum am făcut eu mai sus, sau ... Varianta 2 cu o funcție internă: std::transform(input.begin(), input.end(), input.begin(), [](char myChar) { return std::tolower(myChar); }); Deci codul final ar fi: #include <algorithm> #include <iostream> #include <string> #include <cctype> bool is_palindrome(std::string input) { std::transform(input.begin(), input.end(), input.begin(), [](char myChar) { return std::tolower(myChar); }); std::string reversed_input = input; std::reverse(reversed_input.begin(), reversed_input.end()); return reversed_input == input; } int main() { std::string input; std::cin >> input; if (is_palindrome(input)) { std::cout << "E palindrom!\n"; } else { std::cout << "Nu e palindrom!\n"; } return 0; }
  3. @A Z A I N, you add the values in vector starting by 0, but you start the sum from 0, so you are jumping over the first elementor from vector. That means both sum and average are displayed wrong.
  4. îmi place poza

  5. Link: https://www.pbinfo.ro/probleme/88/palindrom #include <fstream> #include <cctype> #include <string.h> bool Palindrom(std::string myString) { std::string Palindrom_Check; for (int contor = myString.length() - 1; contor >= 0; contor--) { myString[contor] = std::tolower(myString[contor]); Palindrom_Check += myString[contor]; } if (!strcmp(myString.c_str(), Palindrom_Check.c_str())) return true; else return false; } int main() { std::ifstream file_In("palindrom.in"); std::ofstream file_Out("palindrom.out"); int N; file_In >> N; std::string read_File; for (int contor = 0; contor < N; contor++) { file_In >> read_File; if (Palindrom(read_File)) file_Out << 1 << "\n"; else file_Out << 0 << "\n"; } return 0; } Link: https://www.pbinfo.ro/probleme/82/minmax #include <fstream> int main() { std::ifstream file_in("minmax.in"); std::ofstream file_out("minmax.out"); int N; file_in >> N; int Maxim, Minim, Numar; Maxim = 0, Minim = 1000000; for (int contor = 0; contor < N; contor++) { file_in >> Numar; if (Numar > Maxim) Maxim = Numar; if (Minim > Numar) Minim = Numar; } file_out << Minim << " " << Maxim; }
  6. @Clanin3, Am citit din nou problema cap coadă, ai dreptate, dar totuși în testele lor nu sunt valori negative.
  7. Un palindrom sau un număr oglindit este acel număr care dacă este citit atât din dreapta, cât și din stânga, obținem același număr. Exemplu: 1, 2, 3, ..., 9, 11, 22, 33, ..., 99, 111, 222, ..., 999, 121, 131, ..., 191 etc. Avem următorul algoritm pentru a verifica dacă un număr este palindrom: bool Palindrom(int Numar) { int Oglindit, aux; Oglindit = 0, aux = Numar; while (Numar != 0) { Oglindit = Oglindit * 10 + Numar % 10; Numar /= 10; } if (aux == Oglindit) return true; else return false; } Să luăm ca exemplu numărul 515, vom încerca să folosim același algoritm ca și mai sus, doar că prin „vorbe”. Avem variabila Oglindit = 0 și copiem numărul 515 într-o nouă variabilă numită aux. Vom împărți numărul la 10 până acesta devine 0. În cazul de față, 515 se poate împărți de 3 ori la 10 (515/10 = 51, 51/10 = 5, 5/10 = 0). De ce facem asta? Pentru a crea oglinditul unui număr, trebuie să luăm fiecare cifră din numărul inițial, cifrele din „spatele” numărului. Pentru a lua ultima cifră a unui număr, se află restul împărțirii cu 10, exemplu: 513 % 10 va returna 3. Pasul 1: Avem Numar = 515, Oglindit = 0. Oglindit = Oglindit * 10 + Numar % 10 = 0 * 10 + 515 % 10 = 0 + 5 = 5 Numar = Numar / 10 = 515 / 10 = 51 Pasul 2: Avem Numar = 51, Oglindit = 5 Oglindit = Oglindit * 10 + Numar % 10 = 5 * 10 + 1 = 51 Numar = Numar / 10 = 51 / 10 = 5 Pasul 3: Avem Numar = 5, Oglindit = 51 Oglindit = Oglindit * 10 + Numar % 10 = 51 * 10 + 5 = 515 Numar = Numar / 10 = 5 / 10 = 0 (bine, dă cu virgulă, dar noi avem o variabilă de tip întreg) Funcția de mai sus poate fi apelată în felul următor: if (Palindrom(Numar)) std::cout << "Este palindrom!"; else std::cout << "Nu este palindrom!"; O altă variantă de algoritm ce poate verifica atât un număr dacă este palindrom, cât și un cuvânt, este următoarea: bool Palindrom(std::string Cuvant) { std::string Palindrom_Check; for (int contor = Cuvant.length() - 1; contor >= 0; contor--) { Cuvant[contor] = std::tolower(Cuvant[contor]); Palindrom_Check += Cuvant[contor]; } if (!strcmp(Cuvant.c_str(), Palindrom_Check.c_str())) return true; else return false; } De menționat este că toate literele sunt transformate în litere mici pentru a putea verifica corect dacă este sau nu palindrom. Pentru asta am folosit funcția „tolower” din librăria <cctype>. De exemplu: Apa devine apa. O problemă simplă (link: https://www.pbinfo.ro/probleme/88/palindrom) Într-un fișier pe prima linie se află un număr N, iar în funcție de acel număr, se află alte N linii. Să se verifice dacă cuvântul / numărul de pe linia cutare este palindrom, sau nu. Programul va afișa într-un fișier un mesaj corespunzător pentru fiecare linie citită (1 sau 0, true or false). Varianta mea de rezolvare pentru 100 de puncte este următoarea: #include <fstream> #include <cctype> #include <string.h> bool Palindrom(std::string myString) { std::string Palindrom_Check; for (int contor = myString.length() - 1; contor >= 0; contor--) { myString[contor] = std::tolower(myString[contor]); Palindrom_Check += myString[contor]; } if (!strcmp(myString.c_str(), Palindrom_Check.c_str())) return true; else return false; } int main() { std::ifstream file_In("palindrom.in"); std::ofstream file_Out("palindrom.out"); int N; file_In >> N; std::string read_File; for (int contor = 0; contor < N; contor++) { file_In >> read_File; if (Palindrom(read_File)) file_Out << 1 << "\n"; else file_Out << 0 << "\n"; } return 0; }
  8. Pentru a afla maximul dintr-un număr oarecare de valori, creăm o nouă variabilă, o egalăm cu 0, citim pe rând fiecare valoare și comparăm variabila creată de noi cu numărul citit. Dacă numărul citit este mai mare ca această variabilă, atunci setăm ca maximul (variabila noastră) să fie egală cu numărul citit. int main() { int Maxim = 0, Numar; int Valori; std::cin >> Valori; for (int contor = 0; contor < Valori; contor++) { std::cin >> Numar; if (Numar > Maxim) Maxim = Numar; } std::cout << Maxim; } Pentru a afla minimul dintr-un număr oarecare de valori, creăm o variabilă și o egalăm cu valoarea maximă care apare în acel șir (trebuie să fie specificat), dacă nu, o egalăm cu 2^32. Citim fiecare număr și comparăm variabila noastră minim cu acest număr. Presupunem că valoarea maximă este 5000. int main() { int Minim = 5000, Numar; int Valori; std::cin >> Valori; for (int contor = 0; contor < Valori; contor++) { std::cin >> Numar; if (Minim > Numar) Minim = Numar; } std::cout << Minim; } O problemă (link: https://www.pbinfo.ro/probleme/82/minmax): Se citește n, apoi încă n numere întregi. Calculați valoarea minimă și valoarea maximă a celor n numere date, știind că n este cuprins între 0 și 1000, iar numerele de pe a 2-a linie vor fi mai mici decât 1.000.000. Citirile / intrările se fac cu ajutorul librăriei fstream. #include <fstream> int main() { std::ifstream file_in("minmax.in"); std::ofstream file_out("minmax.out"); int N; file_in >> N; int Maxim, Minim, Numar; Maxim = 0, Minim = 1000000; for (int contor = 0; contor < N; contor++) { file_in >> Numar; if (Numar > Maxim) Maxim = Numar; if (Minim > Numar) Minim = Numar; } file_out << Minim << Maxim; } Vom avea nevoie de un singur for În acest for vom afla maximul, cât și minimul. Pur și simplu facem exact ce am spus mai sus: creăm o variabilă maxim, o egalăm cu 0 creăm o variaiblă minim, o egalăm cu valoarea maximă din șir citim pe rând fiecare număr din șir și: comparăm dacă numărul citit este mai mare ca maxim, dacă da, egalăm maximul nostru cu numarul citit comparăm dacă variabila minim este mai mare ca numărul citit, dacă da, egalăm minim cu numarul citit
  9. Nick: shanker Level: 86 Rank: Senior Instructor (3) Nick-ul celui reclamat: Mr.Zenos Bara RPG a celui reclamat: Motiv: DM Dovezi: https://i.imgur.com/laLtiWr.png Alte precizări: -
  10.  

    o fată adevarată ;)) 

  11. Deobicei denumesc variabilele cum bat mai ușor la ochi, acum fiecare cum s-a obișnuit el. Am modificat titlul topicului.
  12. Andreigl

    E greu

    Valorea aia îți dă o secundă (1s)
  13. În primul rând să stabilim diferența dintre vocale și consoane (fără cele cu diacritice): Vocale: a, e, i, o, u, A, E, I, O, U (lowercase și uppercase) Consoane: b, c, d, ... , x, y, z, B, C, D, ..., X, Y, Z (restul literelor din alfabet) Al doilea lucru pe care trebuie să vi-l explic ca să înțelegeți algoritmul, este următorul: Valorea numerică a unei litere lowercase (literă mică, exemplu: a) este diferită de valoarea numerică uppercase (literă mare, exemplu: A) a aceleiași litere. Exemplu: Valoarea numerică a literei „A” este: 0x41 Valoarea numerică a literei „a” este: 0x61 Ce observăm? Diferența în modul dintre cele 2 valori este 0x20. Următorul algoritm verifică câte vocale și consoane sunt într-un cuvânt. Am creat un for care se repetă de atâtea ori câte caractere are acel cuvânt. Exemplu: lapte, are 5 caractere, deci se repetă de 5 ori. Output-ul va fi următorul: În for se verifică atât vocalele / consoanele lowercase, cât și cele uppercase. #include <iostream> // cin #include <stdio.h> // printf #include <string> // strlen int main() { char myString[256]; std::cin >> myString; int Vocale, Consoane; Vocale = Consoane = 0; int Length = strlen(myString); for (int contor = 0; contor < Length; contor++) if (myString[contor] == 'A' or myString[contor] == ('A' + 0x20) || myString[contor] == 'E' or myString[contor] == ('E' + 0x20) || myString[contor] == 'I' or myString[contor] == ('I' + 0x20) || myString[contor] == 'O' or myString[contor] == ('O' + 0x20) || myString[contor] == 'U' or myString[contor] == ('U' + 0x20) ) Vocale++; else Consoane++; printf("Cuvantul %s are un numar de:\n - vocale: %d\n - consoane: %d\n\n", myString, Vocale, Consoane); return 0; }
  14. Am corectat câteva greșeli (am redenumit aiurea niște variabile). Adăugat în topicul cu algoritmii elementari (soon)
  15. Varianta autorului: #include <fstream> using namespace std; int x,i,v[10020]; int main() { ifstream f("numere8.in"); ofstream g("numere8.out"); while(f>>x) if (x<=9999) v[x]=1; for(i=9999; i>=1; i--) if (v[i]==0) g<<i<<" "; } Link: https://www.pbinfo.ro/probleme/1005/numere8 #include <iostream> using namespace std; int main() { int X; cin >> X; int Numar[X], Min = 39e+69, Max = 0; for (int i=0; i<X; i++) cin >> Numar[i]; for (int i=0; i<X; i++) { if (Min > Numar[i]) Min = Numar[i]; if (Numar[i] > Max) Max = Numar[i]; } cout << Min << " " << Max; } Link: https://www.pbinfo.ro/probleme/486/minmax0 #include <iostream> using namespace std; int main() { int X; cin >> X; long long int Numar[X]; for (int i=0; i<X; i++) cin >> Numar[i]; for (int i=0, j=X-1; i<=j; i++, j--) { cout << Numar[i] << " "; if (i<j) cout << Numar[j] << " "; } } Link: https://www.pbinfo.ro/probleme/489/afisare1
  16. #include <iostream> using namespace std; int Vector[1005]; int main() { int N, Numar, FirstNumber, SecondNumber; cin >> N; FirstNumber = SecondNumber = 0; for (int i=1; i<=N; i++) { cin >> Numar; if (Numar < 1000) Vector[Numar] = 1; } for (int i=999; i>=100; i--) { if (Vector[i] != 1 && FirstNumber == 0) FirstNumber = i; else { if (Vector[i] != 1 && SecondNumber == 0) SecondNumber = i; } if (SecondNumber != 0 and FirstNumber != 0) break; } if (SecondNumber == 0 or FirstNumber == 0) cout << "NU EXISTA"; else cout << SecondNumber << " " << FirstNumber; } Link: https://www.pbinfo.ro/probleme/525/numere1
  17. Andreigl

    BMW M3

    Version 1.0.0

    27 downloads

    Poze: Instrucțiuni de instalare: 1. Se adaugă fișierele „.txd” și „.dff” în „gta3.img” din models. 2. Se intră în folderul data și: - în fișierul „vehicles.ide” modificați linia originală a mașinii ELEGY cu următoarea: 562, elegy, elegy, car, ELEGY, ELEGY, null, richfamily, 7, 0, 0, -1, 0.81, 0.81, 1 - în fișierul „handling.cfg” modificați linia originală a mașinii ELEGY cu următoarea: ELEGY 1400 2800 2 0 -0.2 -0.24 70 0.75 0.86 0.48 5 300 50 5 R P 8 0.52 1 30 1 0.2 0 0.25 -0.1 0.5 0.3 0.4 0.54 105000 40002004 4400000 0 2 1 - în fișierul „carcols.dat” modificați linia originală a mașinii ELEGY cu următoarea: elegy, 124,0, 1,0, 11,0, 116,0, 113,0, 101,0, 1,0, 79,0 - în fișierul „carmods.dat” modificați linia originală a mașinii ELEGY cu următoarea: elegy, exh_a_l, exh_c_l, fbmp_a_l, fbmp_c_l, nto_b_l, nto_b_s, nto_b_tw, rbmp_a_l, rbmp_c_l, rf_a_l, rf_c_l, spl_a_l_b, spl_c_l_b, wg_l_a_l, wg_l_c_l
  18. Programul a fost actualizat și mutat în secțiunea oficială de moduri a comunității. Pentru a putea descărca programul aveți nevoie de minim 50 de postări. Link: https://forum.b-zone.ro/files/file/150-exe-program-pentru-crearea-automată-a-evidențelor-updated-26-december/
  19. #include <iostream> #include <fstream> using namespace std; bool VerifPrim(int Numar) { if (Numar < 2 or Numar % 2 == 0) return false; if (Numar == 2) return true; for (int i=3; (i*i)<=Numar; i+=2) { if (Numar % i == 0) return false; } return true; } int main() { ifstream Read("ciffrecv.in"); ofstream Write("ciffrecv.out"); int N, Max = 0, Aparitie = 0; while (Read >> N) { if (VerifPrim(N)) { if (N > Max) Max = N, Aparitie = 1; else if (N == Max) Aparitie++; } } Write << Max << " " << Aparitie; Read.close(); Write.close(); } Link: https://www.pbinfo.ro/probleme/187/ciffrecv
  20. Link: https://www.pbinfo.ro/solutii/user/neauzitul/problema/244/cifreord #include <iostream> #include <fstream> #include <algorithm> using namespace std; int Array[100000], arrSize = 0; int main() { ifstream Read("cifreord.in"); ofstream Write("cifreord.out"); int N, Count = 0; Read >> N; for (int i=0; i<N; i++) Read >> Array[i]; sort(Array, Array+N); for (int i=0; i<N; i++) { if (Count == 20) { Write << endl; Count = 0; } Write << Array[i] << " "; Count++; } Read.close(); Write.close(); }
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.