Jump to content
Hostul a fost schimbat. Daca vedeti serverul offline readaugati rpg.b-zone.ro sau 141.95.124.78:7777 in clientul de sa-mp ×

Andreigl

VIP
  • Posts

    1958
  • Joined

  • Last visited

Everything posted by Andreigl

  1. https://www.pbinfo.ro/probleme/3270/suma-divizorilor-pari #include <iostream> int main() { int N; std::cin >> N; long long int Suma = 0; for (int i = 1; i * i <= N; i++) { if (N % i == 0) { if(!(i & 1)) Suma += i; if (i * i < N && !(N/i & 1)) Suma += N / i; } } std::cout << Suma; return 0; }
  2. Fără hate, dar mie mi s-a părut amuzant @V86ulpea faci puncte datorită mie
  3. @TheTom CLEO te limitează până la 31 de variaible, ultimele 2 fiind timere (cresc cu 1 de fiecare dată când codul reia loop-ul principal). Deci ai 2 variante, ori înveți să folosești 0AB1: call_scm_func @GetSQR 1 10 $result ori folosești funcțiile de mai jos: :SET 0AC6: 3@ = get_label_pointer @MEMORY int 1@ *= 4 int 3@ += 1@ 0A8C: write_memory 3@ size 2@ value 0@ virtual_protect 0 ret 0 :GET 0AC6: 3@ = get_label_pointer @MEMORY int 0@ *= 4 int 3@ += 0@ 0A8D: 2@ = read_memory 3@ size 1@ virtual_protect 0 ret 1 2@ :Memory hex 00 00 00 00 // variabila 1 00 00 00 00 // variabila 2 00 00 00 00 // variabila 3 // ... 00 00 00 00 // variabila n end Pentru a salva o variabilă se folosește funcția SET în felul următor: 0AB1: @SET 3 passed_value 1@ var_number 2@ var_size 4 unde 1@ reprezintă valoarea trimisă, iar 2@ numărul variabilei. Pentru a lua o variabilă salvată în Memory, se folosește funcția GET în felul următor: 0AB1: @GET 2 var_number 1@ var_size 4 receiver 2@ unde 1@ reprezintă numărul variabilei care vrem să-i aflăm valoarea, iar 2@ variabila unde valoarea variabilei 1@ o să fie stocată. Exemplu de script cu aceste funcții aveți mai jos: {$CLEO} repeat wait 0 until 0AFA: goto @Main :SET 0AC6: 3@ = get_label_pointer @MEMORY int 1@ *= 4 int 3@ += 1@ 0A8C: write_memory 3@ size 2@ value 0@ virtual_protect 0 ret 0 :GET 0AC6: 3@ = get_label_pointer @MEMORY int 0@ *= 4 int 3@ += 0@ 0A8D: 2@ = read_memory 3@ size 1@ virtual_protect 0 ret 1 2@ :Memory hex 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 end :Main 0C6A: 1@ = create_custom_thread_at_label @While_2 while true wait 0 if 33@ > 5000 then 0AB1: @SET 3 passed_value 1 var_number 1 var_size 4 end end :While_2 while true wait 0 0AB1: @GET 2 var_number 1 var_size 4 receiver 0@ if 0@ <> 0 then chatmsg "Yes" -1 end end Se observă că am trimis un parametru dintr-un thread într-un alt thread, ceea ce cu variabilele locale este imposibil.
  4. Version 2.0.0

    392 downloads

    Cu ajutorul acestui mod puteți să folosiți două joburi (cel primar și secundar) în același timp, fără să mai utilizați comanda /switchjob. Modul este unul legal deoarece este un binder automat. De asemenea, adminii au loguri pentru comenzi. Mulțumiri @Anette pentru idee ? El funcționează în felul următor: atunci când folosiți o comandă de la un job inactiv (adică trebuie să dați /switchjob pentru a putea folosii comenzile jobului respectiv), în chat o să primiți un mesaj de la server cum că nu sunteți „...” (aici vi se specifică jobul). Modul dacă este pornit, scanează când primiți acest mesaj și automat o să folosească comanda /switchjob, urmând să retrimită parametrii scriși de voi. De exemplu: Jobul meu curent este Mechanic și celălalt este Detectiv. Eu scriu /find 143, modul automat va da /switchjob și va retrimite parametrii scriși de către voi, și anume /find 143. Dezavantaje: nu funcționează și pentru comanda /work. A fost conceput să meargă doar atunci când folosiți o comanda unică pentru jobul respectiv. Exemple de comenzi unice: /selldrugs, /sellgun, /fish, /creategun, /free, /find etc. Instalare: Fișierul „.cs” se adaugă în folderul CLEO din GTA San Andreas. Modul este dependent de SAMPFUNCS. Comenzi: /two_jobs (atât pentru pornire, cât și pentru oprire se folosește aceeași comandă). Modul funcționează în ambele limbi. Am decis să nu blochez mesajele inutile: You are not „...” / Nu sunteti „...” sau mesajele primite când modul trimite comanda /switchjob. Câteva demonstrații:
  5. Știu că este, motiv pentru care nici n-am postat un mod de genul în secțiunea de moduri.
  6. High Code: for 0@ = 0 to 999 step 1 if SAMP.IsPlayerConnected(1@) then // some code end end Low Code: 0@ = 0 :Noname_7 if SAMP.IsPlayerConnected(1@) jf @Noname_23 :Noname_23 0@ += 1 0@ > 999 jf @Noname_7 Pentru ce este de folos? Ei bine, voi știți, dar vă spun ce-mi trece prin cap acum: Crearea unui mod ce vinde / oferă arme / repair / refill tuturor jucătorilor de lângă tine Crearea unui mod ce dă find pe un jucător online (detective help job skill up sau ceva de genul) Pentru prima variantă, o să trebuiască să verificăm dacă jucătorul este în stream zone (luăm handle-ul), după verificăm distanța dintre cele 2 caractere (eu și el). Exemplu: for 0@ = 0 to 999 step 1 if SAMP.IsPlayerConnected(0@) then 1@ = SAMP.GetActorHandleByPlayerID(0@) if 056D: actor 1@ defined then Actor.StorePos(1@, 2@, 3@, 4@) Actor.StorePos($PLAYER_ACTOR, 5@, 6@, 7@) 050A: 8@ = distance_between_XYZ 2@ 3@ 4@ and_XYZ 5@ 6@ 7@ if not 8@ >= 15.0 // feet then // some code end end end end
  7. Version 1.0.0

    382 downloads

    Instructor Help Cu ajutorul acestui mod, jucătorii din facțiunile School Instructors pot să vândă licențe într-un timp relativ scurt, fără să mai anunțe manual, fără să mai pună întrebările testelor de fiecare dată, etc. Acest mod automatizează în mare parte tot ce ține de munca unui instructor. Mulțumiri speciale instructoriței @Anette pentru testarea modului. Instalare: 1. Descărcați modul. 2. Dezarhivați folderul din arhivă în folderul GTA San Andreas (copy paste). Cerințe: 1. CLEO 4.3 2. SAMPFUNCS 5.3 Instrucțiuni de utilizare: Modul dispune de mai multe comenzi, atât aplicabile, cât și informative. Cu ajutorul comenzilor informative, vă puteți acomoda cu modul. De exemplu, dacă vreți să vedeți cum ar arată comanda care anunță că X este la tine, atunci scrieți /at_me_testing. Modul dispune de următoarele comenzi informative: /at_me_testing /st_testing sau /starttest_testing /tp_testing sau /testpassed_testing /tf_testing sau /testfailed_testing Comenzile aplicabile ale modului sunt: /at_me - anunți că X este la tine pentru licențe /gl - prescurtare pentru comanda /givelicense, însă nu se folosește la fel ca și comanda /givelicense /sl - prescurtare pentru comanda /startlesson, însă nu se folosește la fel ca și comanda /startlesson /st sau /starttest - anunți că începi testul pentru o licență anume /tp sau /testpassed - anunți că a trecut testul pentru o licență anume /tf sau /testfailed - anunți că a picat testul pentru o licență anume /test - inițializezi întrebările din facțiunea din care faceți parte Pentru a afla mai multe informații despre o comandă anume, pur și simplu scrieți comanda fără niciun parametru. De exemplu, eu vreau să aflu detalii despre comanda /starttest (/st), atunci voi scrie pur și simplu /st și o să-mi apară următoarele detalii: O să detaliez cum se desfășoară un test. X vrea licențe, eu voi da /requestlicenses și îl întreb ce licențe vrea. Acum urmează să anunțăm că este la noi pentru licențele respective. Să presupunem că are nevoie de flying și fishing license, vom tasta comanda /at_me PlayerID 3 1. Ce este cu acel 3 și 1? Fiecare licență îi corespunde un ID. În poza de mai sus puteți vedea ID-urile licențelor. De reținut este că ordinea în care puneți acele ID-uri va reprezenta ordinea în care licențele vor apărea în anunțul vostru de pe /f. Acum că am anunțat că este la noi, trebuie să începem testul pentru o licență anume. Folosim comanda /sl (adică startlesson, tastează comanda în joc pentru mai multe detalii) și dupa /st (/starttest). Acum începem să-i punem întrebări. Folosim comanda /test și ne folosim de săgețile stânga și dreapta ale tastaturii pentru a manipula întrebările din fișiere (de reținut este că întrebările se pot modifica oricând, trebuie doar să intrați în fișierul text document și pur și simplu le modificați după preferințe / regulament). Apăsați pe SPACE pentru a pune întrebarea la care vă aflați. Dacă a trecut, folosim /tp sau /testpassed, iar în cazul în care a picat, folosim /tf sau /testfailed. Pentru mai multe detalii, scrieți comanda cutare în joc și o să vă apară informații. De asemenea, aveți comanda /instructor_help. Tastând comanda de mai sus, o să vă apară următoarele informații:
  8. @Vesca, if (Ultima_Cifra & 1) { ... } Explică și de ce
  9. Câteva probleme (click pe ele pentru a accesa link-ul către problemă). 1. Suma cifrelor unui număr #include <iostream> int main() { long long int Numar; // Numerele sunt cuprinse intre 1 si 2.000.000.000 int Suma = 0; // Valoarea cea mai mare a acestei variabile ar putea fi 82 (atunci cand avem numarul 1 999 999 999) std::cin >> Numar; while (Numar != 0) { Suma += Numar % 10; Numar /= 10; } std::cout << Suma; } 2. Produsul cifrelor impare ale unui număr #include <iostream> int main() { long long int Numar; std::cin >> Numar; int Produs = 1; // Il egalam cu 1 si nu cu 0 deoarece orice numar inmultit cu 0 ... este clar 0 while (Numar != 0) { int Ultima_Cifra = Numar % 10; if (Ultima_Cifra % 2 != 0) Produs *= Ultima_Cifra; Numar /= 10; } std::cout << Produs; }
  10. Determinarea cifrelor unui număr Să ne gândim la un număr (natural), n = 274 – aici n este o variabilă de tip int. Care dintre cifrele sale poate fi determinată cu o simplă operație aritmetică? Constatăm că putem determina ultima cifră a numărului cu operația C++ % 10 – restul împărțirii la 10. Într-adevăr, 274 % 10 este 4, adică ultima cifră (a unităților) a lui 274. Cum putem determina cifra zecilor? Sigur, o soluție ar fi n % 100 / 10. Într-adevăr, n % 100 este 74, iar 74 /10 este 7. Ne amintim că, dacă operanzii sunt întregi, operația / reprezintă câtul împărțirii întregi. Știm că n % 10 reprezintă cifra unităților lui n și vrem să determinăm cifra zecilor. Putem să modificăm mai întâi valoarea lui n, astfel: n = n / 10, și să determinăm ultima cifră a acestui număr. Este cifra unităților pentru valoarea curentă a lui n și cifra zecilor pentru valoarea inițială. int n = 274; cout << n % 10; // se va afisa 4 n = n / 10; // n devine 27 cout << n % 10; // se va afisa 7 Vom numi trunchiere operația prin care se elimină ultima cifră a valorii unei variabile întregi. Pentru a realiza trunchierea, folosim operația de atribuire și împărțirea la 10: n = n / 10 sau n /= 10. Cum aflăm cifra sutelor? Trunchiem încă o dată valoarea lui n. n devine 2, iar n % 10 este 2, adică cifra sutelor pentru valoarea inițială a lui n. Mai mult, acum n are o singură cifră, și printr-o nouă trunchiere devine 0. Să tragem câteva concluzii: ultima cifră a lui n este n % 10; prin trunchiere se elimină ultima cifră a lui n; ultima cifră a valorii curente este cifra zecilor a valorii inițiale; prin trunchieri succesive valoarea lui n devine 0. Numărul de trunchieri este în concordanță cu numărul de cifre din valoarea inițială a lui n. Astfel, se conturează următorul program pentru determinarea cifrelor unui număr: #include <iostream> int main() { int N; std::cin >> N; while (N != 0) { int Ultima_Cifra = N % 10; std::cout << Ultima_Cifra << " "; N /= 10; // sau N = N / 10; } return 0; } Dacă dorim să salvăm cifrele numărului într-un vector, avem varianta următoare: #include <iostream> int main() { int N; std::cin >> N; int array[20], i = 0; while (N != 0) { array[i++] = N % 10; N /= 10; } for (; i > 0; i--) std::cout << array[i-1] << " "; } Am pus array[i-1] pentru că atunci când aflăm ultima cifră (adica atunci când numărul N este între 1 și 9), programul o salvează în vector, urmând să crească variabila i cu 1 și vectorul rămâne nul. Recomand citirea tutorialelor: Palindromul / Oglinditul unui număr Matematica din spatele funcției Modulo Vezi tutorialul original aici.
  11. @Vesca , eu ți-am zis cum mi se pare mie mai „logic”, totuși varianta ta ar fi bună pentru un apel lambda std::sort(array, array + size, [](int a, int b) { return a > b; } ); Am adăugat acest topic în algoritmi elementari.
  12. Nu mai fă prescurtări, în loc de bool criteriu_descrescator(int a, int b) { return a > b; } puteai pune: bool criteriu_descrescator(int a, int b) { if (a > b) return 1; else return 0; } E mai clar ce face funcția asa, zic eu Motivul pentru care eu nu folosesc vectorii este că atunci când ai nevoie de un vector bidimensional, lucrurile se complică ... deci rămân la array ? Ia, populează-mi o matrice cu vectori, după faci suma elementelor pe diagonală, de la primul pănâ la ultimul element, ca și în poza de mai jos:
  13. @Vesca, poți să faci exemple și cu Array? Dar nu folosind std, sau, și și
  14. The title of the topic must contain the programming language in square brackets (example: [C++] Hello World). Do not post an existing tutorial. If your algorithm is more efficient than the one already posted, you can post it and also put the old tutorial link in the post (we will decide which one remains, or there will be cases when both topics will be approved). Your algorithm must be included in [\code] your content [/code]. Also, be careful when placing on the page and use the `Preview` function before posting the topic. Don't Copy Paste. Don't just post the source of your code. In this section we post tutorials, not creations. Here you have to explain what you have done so that each member reading your topic understands your algorithm / snippet. Topics that don't comply the rules will be closed and you will be notified of the reason for closing the topic. Within 3 days of closing the topic, they will be moved to Trash Can to keep the section clean. Topics that have not been posted for more than 3 days will be closed. If the code or tutorial is not entirely yours, or you have inspired yourself from somewhere, it is advisable to put the original source / link.
  15. @Vesca, Cum am zis mai sus, pentru un începător, cel mai bine ar fi să fie totul făcut manual, nu funcții interne ? 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; }
×
×
  • 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.