Bună și bunvenit.
Aș dori să ofer o soluție pentru provocarea tic tac toe.
Acum, amintiți-vă că există multe soluții la o problemă dată.
Aceasta va fi doar soluția mea.
Dacă soluția dvs. este diferită.
Atât timp cât urmați o bună practică de programare și folosiți limba de programare C corect, atunci
este bine.
Îmi ofer doar soluția.
Sunt sigur că poate fi îmbunătățită.
Deci sa începem.
Voi crea un nou proiect numit Tic tac toe evident și vom începe să încercăm să îl marginalizăm.
Am încercat să-l rupem așa cum am făcut în descrierea din lectură că o să fac Krita doar
câteva module sau ar trebui să spun câteva funcții.
Sperăm că acest lucru va fi în regulă și va fi bun pentru dvs.
S tic tac toe.
Vedeți că folosesc cazul de cămilă pentru toate convențiile mele de numire doar ceea ce am obișnuit, de fapt, am putea separa acest
lucru chiar și în mai multe fișiere sursă.
Vrem-o
astfel încât să avem principalul nostru Hai să scăpăm de acest lucru suficient.
Voi include o suplimentare includ.
Acest lucru îmi va permite să practic o anumită compensare a sistemului nostru și câteva nopți care să-mi permit, de asemenea,
să cred că eliminăm un caracter.
Deci, în plus față de aceste două biblioteci să
includeți pentru că eu dețin fiecare și ceea ce vreau să fac și aș ataca această problemă vreau să încerc să modular cât
de mult pot.
Am menționat că o să folosesc o singură matrice dimensională o matrice bidimensională.
S-ar putea chiar să funcționeze mai bine, dar am de gând să pună în aplicare acest folosind o singură matrice
dimensională care reprezintă tabloul nostru de joc noastre tic tac toe bord.
Voi crea acest lucru ca o variabilă globală și folosind o variabilă globală aici pentru că nu
am demonstrat conceptul de transmitere a datelor prin referință în C ..
Nu vreau să te deranjez.
Nu ar fi trebuit să folosesc datele globale aici și aș putea transmite datele la funcții, dar
ar trebui să utilizez trecerea prin referință.
A trebuit să trec prin pointeri și nu am discutat despre asta încă, așa că voi folosi date
globale.
Iarta-ma.
Amintiți-vă că am spus că datele globale nu sunt de obicei un lucru bun, ci pentru că din
nou încercăm să demonstrăm învățarea.
Împărțim și cucerim și încercăm să demonstrăm cum să folosim funcțiile.
Trebuie să folosesc datele globale, pentru că nu am vorbit încă despre pointer.
Deci, datele mele globale pe care o voi folosi este pătratul meu care reprezintă grila mea, tic tac toe board.
Aceasta va fi o zonă dimensională unică de 10 elemente în principal pentru că nu vreau
să folosesc elementul zero.
Voi folosi această matrice pentru a alege numere pentru a juca jocul.
De asemenea, îmi va permite să am coordonatele mele.
Am de gând să inițializez acest lucru doar cu valori de la 1 la 9 și acesta va fi un tablou de caractere pentru
că trebuie să pun X și O în el.
Nu am vorbit încă despre caractere de caractere, dar asta îmi va permite să pun caractere unice.
Este exact ca și conceptul dvs. de inturi, cu excepția faptului că conține caractere de caractere amintesc jumătate de ghilimele
simple în jurul lor.
Deci unul doi trei linia zero acolo 0.
Voi doar să sărind că nu o să folosesc nici măcar pentru că vreau să-i folosesc pe aceștia.
Ea face preprogramarea un pic mai ușoară pot folosi valoarea pe care utilizatorul o introduce ca
index ca un index valid.
De asemenea, va trebui să creez două sau două variabile globale pentru a alege în rândul jucătorului.
Deci, alegerea va fi ceea ce au intrat prin intermediul tastaturii, de la una până la nouă, în funcție de locul
în care vor să-și plaseze toți sau toți jucătorii care vor reprezenta doar ale căror jucători se transformă.
Jucătorul 1 sau jucătorul 2.
Nu am nevoie de alte date globale ca date globale.
Am nevoie doar de declarațiile mele de funcții aici.
Voi începe să creez trei funcții, așa că voi avea trei declarații de funcții.
O să am una pentru că am verificat o victorie.
Nu va lua nici un fel de date.
Va reveni un int.
Am de gând să am una care nu returnează date care doar afișează tabla
cu ea cu caracterele corecte.
De asemenea, nu iau niciun fel de date și, de asemenea, voi avea o funcție care marchează bordul.
Aceasta va lua intrarea utilizatorului și, în funcție de ceea ce a introdus, va plasa o fereastră X sau o fereastră în
locul corect din matrice și apoi va afișa acel tablou utilizând placa de afișare.
Deci aici vom spune doar bord marcat și voi merge la asta va lua de fapt un semn cu un
topor sau nu.
Așa că reușesc să reutilizez acest lucru, reușesc să reutilizez acest lucru pentru declarațiile de funcții gratuite ale jucătorului 1 sau jucătorului 2,
astfel încât să pot plasa funcțiile mele oriunde în program pe care le decid sus.
Și veți observa că cele două funcții returnează orice date și doar unul ia un parametru.
Acum putem începe să invocăm sau să le creăm.
Să implementăm aceste funcții înainte de implementarea gameplay-ului.
Deci, mai întâi să punem în aplicare verificarea când această funcție va funcționa, în principiu, în cazul în care va verifica bordul pentru
a vedea dacă există vreun vânt, așa că va lua multe declarații.
Probabil aș putea îmbunătăți acest cod destul de puțin, dar vreau să pun câteva comentarii aici pentru că ar trebui să
avem mereu comentarii în partea de sus a funcției noastre.
Acestea sunt destul de simplificate.
Ar trebui să aveți numele funcției.
Acesta este, în esență, spunând că funcția va reveni la starea unui joc.
Dacă jocul sa terminat, spune-i dacă ai câștigat un rezultat negativ.
Dacă jocul este în desfășurare la zero în cazul în care jocul sa terminat și a fost o remiză, de aceea, această
verificare a funcției este cea care o returnează.
Deci voi merge mai departe și voi defini acest lucru și tot ce trebuie să faceți este că se
va uita la matricea din CS, dacă veți găsi acolo undeva.
Dacă 3. x este îndeplinită, deci există o mulțime de afirmații diferite.
Deci, cum știm dacă un jucător are unul.
Deși știm dacă un jucător a câștigat dacă se potrivesc fie pe o diagonală de rolă, fie pe o coloană, trebuie să verificăm
fiecare dintre acele situații și știm rândurile din coloane bazate pe matrice.
Deci, dacă pătratul meu este egal cu pătratul adevărat în pătratul doi, este egal
cu 3 pătrat 3, ceea ce înseamnă că avem un meci în primul nostru rând drept.
Deci, de asemenea, voi crea o valoare de întoarcere aici în partea de sus.
Voi spune doar valoarea de retur.
Inițializați acest lucru la 0 pentru că inițializați acest lucru la 0 pentru joc.
Și dacă avem un meci în primul rând, voi reveni la 1 joc.
Apoi, trebuie să avem o serie de alte if-uri care să se potrivească și X Nu vreau să-mi întorc ceea ce vreau să-mi
stabilesc valoarea returnată,
pentru că știi că ne putem întoarce.
Dar face programul mai greu de urmat.
În caz contrar, vom verifica toate celelalte rânduri, așa că am să copiez și să lipesc un
cod aici, pentru că este vorba de un cod redundant.
Singurul lucru interesant este dacă avem o remiză, așa că permiteți-mi să pun în tot ceea ce este pentru câștigători.
Au dreptate și apoi voi reveni la valori diferite și aș putea avea în loc să am o grămadă de alții
dacă aș putea avea ampersoane, dar asta e chiar mai greu de citit.
Deci, dacă avem un meci în primul rând, asigurați-vă că indentarea este corectă dacă avem un meci în
al doilea rând.
Asta face al doilea.
Dacă avem un meci în al treilea rând.
Întoarceți 1.
Adăugați câteva linii noi pentru lizibilitate.
Nu aveți nevoie de paranteze, deoarece acestea sunt declarații unice pe linia 37 în cazul în care la dvs. se pare că suntem
potrivite 1 4 și 7.
Deci, asta arata ca un meci diagonal.
Întoarceți 1.
40 ne potrivim cu 2 5 și 8.
Arată ca un meci al centrului care coboară.
Așadar, în cea de-a doua coloană 360 puteți vedea celelalte meciuri, de asemenea trebuie să căutăm în esență
toate potrivirile pentru coloane și diagonale pentru rânduri.
Și asta am făcut cu toate aceste afirmații care privesc în matrice.
Acum, singurul lucru care ne spune dacă nu avem un meci sau dacă nu avem o remiză este că trebuie să le comparăm pe
toate și, practic, trebuie doar să ne asigurăm că nu sunt numerele care au fost inițializate.
Deci dacă dacă avem matricea noastră și nu conține 1 2 3 4 5 6 8 sau 9 pentru oricare dintre valori înseamnă că avem o remiză pentru
că ele conțin un zero sau un X ..
Deci putem să scriem un alt LCF care în principiu spune că este o remiză și putem seta valoarea returnată la zero.
Valoarea de returnare este egală cu zero.
Și din nou, aceasta este doar verificarea practică a ultimului LCF dacă numerele sunt aceleași cu cele inițializate.
Dacă toate sunt diferite, înseamnă că putem reveni la zero.
Să punem asta unul.
În caz contrar, dacă nu avem o remiză și nu avem un câștigător, înseamnă că nu am terminat.
Deci, o declarație finală poate spune doar că valoarea returnată este egală cu cea negativă, deoarece amintesc că funcția se întoarce negativ câștigată
pentru joc în curs de desfășurare unul pentru joc este de peste și 0 pentru joc fără rezultat.
Și apoi ultimul lucru pe care vreau să-l fac este să-mi întorc întoarcerea.
Deci, aici voi spune doar să întoarceți valoarea returnată.
Și aceasta va completa funcția.
Și ce observi când facem asta?
Împărțim și cucerim tot ce ne concentrăm acum, verificând consiliul pentru a vedea dacă există
o victorie.
Vom lucra în bucăți mici la fel ca și noi și vom încerca în mod constant.
Acest lucru ne permite să ne concentrăm asupra designului nostru și, de asemenea, ne permite să reducem sau să izolam mai ușor erorile.
Acum că am terminat cu tabla de joc, vrem să mergem mai departe și să implementăm placa de afișaj.
Placa de afișare va afișa doar tabloul.
Deci, toate aceste lucruri trebuie într-adevăr să fie desenate într-un anumit format.
Așa că vom scrie o funcție numită afișaj.
Nu va returna date.
Nu va lua nici un fel de parametri.
Motivul pentru care este o funcție numărul unu este că vom avea nevoie să desenezi tabla de mai multe ori.
Și, de asemenea, este doar mai bine pentru că face o sarcină specifică.
Acum, aceasta va avea doar o mulțime de funcții de imprimare în ea și va avea
o mulțime de formatări.
Deci o voi copia și o voi lipi.
Lucrul care este unic aici este că mă curăță ecranul de fiecare dată în condo.
Ei bine, de fapt nu cred că e în cod și cred că este un altul include.
Dar dacă spui sistemul și Windows și spui că CLX va șterge ecranul, doar îl va
face mai curat.
Apoi, vom face doar o grămadă de imprimări pe care le
vom imprima titlul jocului pe care îl vom imprima jucătorului la zero și vor tipări tabla.
Bordul va fi frumos formatat cu niște bare paralele și apoi vom tipări
valorile tuturor valorilor din matrice și dacă valoarea este X sau 0, va fi afișată dacă nu va afișa un număr astfel
încât să putem folosi acel număr pentru a alege opțiunea noastră de a desena și asta este
faptul că asta e tot ce face această funcție.
Acum că am terminat cu lansarea tabloului.
Acum am vrut să desenez o creați ultima noastră funcție care marchează tabla.
Dreapta.
Deci, bordul Mark va seta matricea cu o anumită valoare și va avea un punctaj și un X
sau nu.
Deci, va lua un caracter.
Ceea ce urmează să facă este să aibă o grămadă de alte declarații Alsip.
Deci, aici, în bordul nostru marcat, vom dori să oferim câteva comentarii și să
spunem că acest lucru va stabili tabla cu caracterul corect X
sau O în locul corect și
tipul roșu ar fi avut sens când vedeți trebuie să închei comentariile mele.
Vreau să formatez note frumoase pe două rânduri aici și tot ce trebuie să fac este că va verifica pentru a vedea
ce a intrat utilizatorul.
Așadar, amintiți-vă că avem două valori globale de date pentru ceea ce a introdus utilizatorul.
Avem, de asemenea, o valoare pentru actualul jucător.
Deci, alegerea va fi în principiu ceea ce este introdus prin tastatură.
Nu am implementat acest lucru încă pentru că vom implementa acest lucru în funcția principală.
Jocul va fi jucătorul actual, de care vom avea nevoie de amândouă pentru a ne marca.
Deci, ce vom face este că vom avea o grămadă de afirmații false.
Vom verifica alegerea de la care intră utilizatorul.
Și dacă alegerea este egală cu cea pe care vrem să o desenezi în acel pătrat.
De asemenea, dorim să ne asigurăm că pătratul este disponibil.
Deci, dacă este egal cu 1 în nu este în prezent egal cu unul care înseamnă că practic cineva a pus deja un X sau
nu acolo și îl putem folosi dacă este egal cu un 1 și au intrat unul care înseamnă că putem seta
matricea la un anumit valoare.
Vom seta matricea la ceea ce a trecut fie în X și vom repeta pentru
a face acest lucru pentru fiecare alegere dacă este alegerile 2 3 4 5 6 8 sau 9.
Dreapta.
Deci, o mulțime de compensări care fac același lucru.
În cazul în care utilizatorul a introdus o alegere pentru a vă asigura că indentarea este bună și că pătratul 2 este
disponibil, vom marca scuze cu tot ce am trecut aici.
Și în funcție de ce jucători se transformă, vom trece la un ordin următor x.
Acum, ultimul lucru pe care trebuie să-l facem în această funcție este că trebuie să validăm dacă trecutul în orice
altceva decât 1 până la 9 și aceasta este o mișcare nevalidă.
Deci ultima noastră afirmație ar trebui
să dureze, în principiu, voi declara aici va imprima un mesaj care spune că mutați nevalid.
Acesta va marca jucătorul în jos când Pentru că amintește că jucătorii sunt 1 sau 2 și vom marca jucătorul înapoi
și apoi vom merge Inkerman în bucla noastră.
Funcția noastră principală.
Apoi, ultimul lucru pe care îl introduceți este doar întreruperea programului, astfel încât utilizatorul trebuie să lovească întoarcerea după
mutarea nevalidă, altfel ar fi afișată o mișcare nevalidă.
Și atunci va fi imediat o majorare, pentru că am redeschis din nou tabla.
Atât de bune pauze.
Ea vă forțează să apăsați butonul Enter pentru a continua să introduceți o altă valoare.
Și acestea sunt trei funcții.
Amintiți-vă că această funcție nu întoarce nimic astfel încât să putem ține-o în partea de jos.
Acum trebuie să implementăm jocul.
Modul de joc merge în funcția principală, unde trebuie să o găsesc.
Iata.
E gol.
Și așa pentru gameplay-ul Acesta este locul în care vom cere să-l folosim pentru a introduce un număr pe care îl
vom desena la bord pe care vom verifica când.
Deci, vom crea două variabile locale aici și vom iniția jucătorul nostru aici, pe care o vom crea
întregul nostru număr.
Aceasta va fi folosită pentru bucla noastră, iar semnul nostru va fi fie X, fie toate în funcție de a cărui
viraj este.
Da, Mark va fi 0 0 Cred că încerc să-mi amintesc că Mark nu este.
Da, Mark va fi EXOR și alegerea va fi ceea ce intră utilizatorul prin intermediul tastaturii, astfel încât la variabilele locale vom seta,
de asemenea, jucătorul nostru care este o variabilă globală.
Inițial, pur și simplu va fi jucător care vrea să înceapă jocul, atunci vom avea o bucla.
Vom avea practic o buclă până când nu vom mai juca.
Am de gând să folosesc un buzunar aici pentru că vreau să se execute cel puțin o dată.
Vreau să afișez tabla cel puțin o dată.
Așa că voi afișa tabla și voi juca jocul până când voi primi o egalitate sau când.
Deci o voi face atâta timp cât eu sunt egal cu unul negativ.
Ce reprezintă unul negativ.
Aceasta înseamnă că jocul este în desfășurare.
Eu voi fi valoarea de întoarcere pentru a verifica dacă ați mers și veți vedea că o secundă, dar practic a mers pentru
a avea o buclă care continuă să facă același lucru peste tot până când jocul se termină și jocul se
va termina.
Dacă nu este unul negativ.
Deci, ce trebuie să facem mai întâi.
Primul lucru pe care trebuie să-l facem este că trebuie să afișăm bordul, așa
că pot să sun doar pe placa de afișare a funcției, atunci trebuie să calculez jucătorul și jucătorul începe cu
jucătorul 1 ceea ce vom face aici este că vom merge utilizați un rând fiecare operator și vom spune
dacă jucătorul Mattu atunci jucătorul este egal cu unul egal cu doi.
Aceasta este o modalitate de a determina jucătorul potrivit.
Fiecare iterație a buclă se va schimba de la una la două sau două
la una atunci când începe ca jucător 1 se va spune eroarea Mattu de scriere a jucătorului.
Unul împărțit la doi sau restul lui 1 împărțit la doi este ceea ce 1.
Deci, dacă e unul, vei fi Jucătorul 1.
Și atunci când te vei întoarce la următoarea generație, jucătorul va fi egal cu 2.
Pentru că vom merge la Inkerman la Mach 2 este 0.
Deci, dacă nu este egal cu 1, jucătorii vor fi egali cu Jucătorul 2.
Se va seta doar jucătorul câștigat dacă jucătorul Mattu este unul.
Amintiți-vă că operatorul Turnier sperăm că următorul lucru pe care trebuie să-l fac este să am nevoie de informații
de la utilizator.
Deci, aici am de gând să spun că am de gând să întreb de utilizator și a pus un număr vreau
să spun jucătorul procent D, fie jucător doriți să introduceți un număr și apoi pune jucătorul să pronunțe jucător 1 sau 2 că mă duc pentru a citi intrarea
de la utilizator folosiți o jumătate redusă.
Și asta va fi un număr întreg care va reprezenta un punct pe tablă de la 1 la 9.
Și voi stoca acest lucru și opțiunile mele de alegere variabile în ea.
Așa că trebuie să trec și adresa care să spun alegerea numai dacă este un șir.
Nu aș trece în această adresă, așadar pot determina dacă este sau nu piața pe care trebuie să o determin
dacă marca este un X sau nu pe baza jucătorului.
Așadar, vreau să folosesc din nou rândul fiecare operator și voi semna pentru a marca fie un X, fie tot
dacă jucătorul este egal cu 1.
Voi semna pentru a marca X capitala X. altfel o să semnez.
Nu.
Capital.
Deci, această întoarcere ciudată este foarte utilă atunci când trebuie să semnați variabile bazate pe o condiție.
Din nou ceea ce spune acest lucru este dacă jucătorul este egal cu un Marc va fi egal cu x altfel
va fi egal cu 0.
Semnul de întrebare reprezintă dacă evaluarea booleană este adevărată.
Colonul reprezintă dacă este falsă.
Acum, când am primit scrisoarea corectă, pot să-mi sun funcția de marcare a bordului doar spunând că Mark
Ford a trecut în x sau în L după ce am marcat bordul și au făcut selecția.
Trebuie să verific dacă este un câștigător.
Am varianta mea.
Care ar trebui, probabil, să fie un nume mai bun.
Să spunem asta.
Verificarea stării.
Verificarea jocului.
Ce zici de asta.
Sau.
Starea jocului pentru starea jocului.
Și starea jocului va fi egală cu o stare negativă una sau zero.
Va fi egal cu ceea ce se întoarce de la verificare când îți amintești că această funcție va reveni
la 1 0 sau negativ 1 a 1 dacă câștigi.
Ei bine, lasă-mă să-mi amintesc că am verificat mai multe despre întoarcerea de mirare dacă jocul sa încheiat cu un rezultat negativ unul
din joc este un progres 0 dacă nu sa terminat cu nici un rezultat.
Deci, acum, când stocăm starea de pornire a jocului, dorim să schimbăm și starea bucla.
Deci, dacă datele jocului sunt egale cu cele negative, va ieși din bucla.
În caz contrar, tot ce trebuie să facem este să schimbăm rândul jucătorului.
Cum schimbăm rândul jucătorului.
Noi doar incrementăm jucătorul cu 1.
În felul acesta, data viitoare va merge în sus și va fi 2 în jucătorul va fi egal cu 2 și vom
reveni în jos atunci când fac încercări nevalabile.
Ce se întâmplă în top nevalid este în detrimentul coloanei jucătorului.
Când faceți numărul jucătorului, reveniți la playerul corect.
Deci, dacă este unul pe care l-ați documentat la 0, virajul următor va fi 1.
În esență, spui că te întorci din nou.
De aceea noi creștem.
Acum, dacă este un jucător 2, noi îl creștem cu 1 și ceea ce se întâmplă este să împărțiți-l pentru a împărți cu două zerouri,
astfel încât să-l pună pe jucător înapoi la unul.
Așa funcționează.
Dar aceasta este logica.
Am făcut multe aici.
Nu trebuie să scrieți întregul cod și să îl testați odată ce ar fi trebuit să lucrați cu
împărțirea și cucerirea.
Testați constant, pe măsură ce executați codul, acum voi oferi soluția.
Dar să o conducem și să încercăm.
Va funcționa la fel ca în demonstrația de la conferința de provocare.
Dar studiați din nou acest cod și asigurați-vă că înțelegeți ce se întâmplă.
Utilizarea matricei și abordarea divizării și cucerire.
Dar arata cat de frumos arata aceasta metoda principala.
Este foarte ușor să știți ce se întâmplă în principalul player
de schimbare a metodei splay board și doriți să puneți în comentarii aici știți schimbările.
Și apoi, de asemenea, aici obțineți dreptul de intrare și apoi setați litera corectă.
Setați caracterul corect bazat pe rândul jucătorului.
Știți că nu aveți nevoie de aceste comentarii deoarece funcțiile sunt atât de descriptive.
Marca de bord a stabilit
tabla pe baza alegerii utilizatorului în funcție de alegerea utilizatorului pentru alegerea nevalidă.
Și apoi verificarea statutului jocului pentru o victorie.
Destul de destul de auto-explicative și apoi vom sări în cazul în care jocul este de peste hai să construiască acest peste pentru a obține
nici o eroare nu avertismente noi nu, care este frumos.
Acum hai Urană și vei vedea că funcționează exact ca în demo-ul nostru.
Primul lucru pe care îl face este să afișeze ecranul și va avea loc ultima oară la Antar și are nota noastră
corectă 1 2 3 4 5 6 7 8 9.
Deci, îmi spune că Player 1 introduce ceva și introduce ceva valabil.
Și o desenează și curăță ecranul astfel încât să pară frumos.
Acum este un X și trei.
Acum este vorba de două jucători.
Mă voi uita prin ceva nevalid.
Deci, atunci când mișcările nevalidate se opresc, am revenit.
Plec din nou.
Jucător 2.
Acum am lovit o reprelucrare cu toate într-un singur loc și am continuat acest lucru până când avem un câștigător sau ratat.
Deci, hai să sunăm un câștigător pentru oh, deci acum x va fi 2 mereu va fi 5 X va merge la 6
va fi întotdeauna 9.
Joc încheiat.
Pentru că tocmai am tras trei bile.
De fapt, am uitat un lucru pe care nu-ți spune dacă ai câștigat.
Deci, singurul lucru pe care l-am uitat a fost după buclă pentru a afișa felicitările pe care le-ai
câștigat și tot ce trebuie să facem este că trebuie să verificăm starea jocului dacă starea jocului este egală cu 1.
Asta înseamnă că un jucător a câștigat și că ar fi ultimul jucător care a mers.
Așadar, vom imprima jucătorul procentul D câștigă.
În caz contrar, vom face doar o tragere la egalitate, deoarece dacă am ieșit din bucla noastră și statutul a fost unul negativ,
știm că jocul sa terminat și a avut un rezultat.
S-ar putea.
Deci trebuie să avem ultima afirmație pentru a afișa rezultatele.
Deci, acum să o conducem din nou cu câștigătorul și acum vedem că cineva câștigă.
Așa că am să pun numere nevalide aici.
Pentru a obține o victorie rapidă pentru X
și de fapt trebuie să o faci în acest program, pentru că acel om pleacă de
la Nagel.
Jucătorul câștigă și joacă într-un frumos acolo.
Deci, aceasta a fost o prelegere lungă, îmi cer scuze pentru lunga prelegere.
Studiați acest cod, îl voi furniza ca pe un fișier sursă.
Sperăm să învățăm multe despre metodele de divizare și de cucerire.
Mulțumesc.