•rEbyTer
|
 |
« : Septembrie 28, 2008, 12:19:19 » |
|
Am răsfoit câteva pagini din manualul de a X-a şi cateva documentaţii & articole legate de STL. Sunt destul de bulversat în legătură cu câteva noţiuni care nu le-am înţeles. 1 ) Ce face using namespace std;2 ) Ce-i un container? Dar un container deque (şi de ce se numeşte aşa) 3 ) Cu ce se mănâncă un iterator ? 4 ) La ce ajută map-ingul în C++ ? 5 ) Ce fac cu typedef ? Dar cu enum ? 6 ) Care este diferenţa dintre cerr şi clog ? 7 ) Care este diferenţa dintre ofstream f;f.open("Jiji.txt"); şi ofstream f("Jiji.txt"); ? 8 ) Ce face cout << 2222 << flush;9 ) De ce pe compilatorul infoarena există librăriile iostream.h, fstream.h, etc şi pot să folosesc streamuri fără using namespace std; ? 10 ) Ce este un heap şi la ce ajută ? 11 ) Ce este un buffer şi la ce să-l folosesc ? 12 ) Un vector declarat din STL pot sal folosesc exact ca pe unul declarat clasic ? Mersi  .
|
|
« Ultima modificare: Septembrie 28, 2008, 17:02:03 de către Harabula Adrian »
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #1 : Septembrie 28, 2008, 12:55:27 » |
|
Cam multe intrebari  . Iti voi raspunde eu la prima: 1) In C (ca si in alte limbaje mai vechi) exista un singur univers in care traiesc variabilele si functiile. Daca intr-un proiect foarte mare ai 2 functii cu acelasi nume, vei primi o eroare de compilare. In cazul in care ajungi la foarte multe linii de cod, vei intampina probleme cu alegerea numelor astfel incat sa fie toate distincte. De aici rezulta nevoie de namespace. Practic poti sa-ti creezi mai multe "universuri" in care sa existe variabilele tale. Declaratia este ceva de genul: namespace MyNamespace { int i; void f() {} class A {}; }
Acum, pentru a accesa ceva din ce ai declarat mai sus, trebuie sa procedezi astfel: MyNamespace::i; MyNamespace::f(); MyNamespace::A a;
Daca doresti sa ai acces direct, trebuie sa declari undeva ca vrei sa folosesti un anumit namespace: using namespace MyNamespace;
i; f(); A a;
Toate functiile si clasele din librariile standard C++ se afla in namespace-ul std. Trebuie sa il incluzi daca vrei sa renunti la constructii de genul: std::cout << "Hello world!" << endl;
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•rEbyTer
|
 |
« Răspunde #2 : Septembrie 28, 2008, 13:02:20 » |
|
Mersi.  n-a fost chiar aÅŸa greu.  . Deci Borland C++ 3.1 for dos (sau cum se numeste) este compilator numai pentru C++ ?
|
|
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #3 : Septembrie 28, 2008, 13:18:41 » |
|
Borland C++ 3.1 (care este un IDE) are un compilator invechit care nu respecta niciun standard.
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•svalentin
|
 |
« Răspunde #4 : Septembrie 28, 2008, 13:28:48 » |
|
Borland C++ este un compilator de C cu extensii de C++. Programul a fost scos _inainte_ sa se stabileasca standardul C++. De aceea nici nu il respecta.
|
|
|
Memorat
|
|
|
|
•rEbyTer
|
 |
« Răspunde #5 : Septembrie 28, 2008, 14:14:51 » |
|
Păi la olimpiadă(judeţeană) eu scriu algoritmi care nu respectă standardul C/C++ ? Defapt nici manualul care este tipărit în 2008 nu-l respectă cu void main, care este incorect si impropiu zis ca un program să nu aibă exit status.
|
|
« Ultima modificare: Septembrie 28, 2008, 14:20:57 de către Harabula Adrian »
|
Memorat
|
|
|
|
•rEbyTer
|
 |
« Răspunde #6 : Septembrie 28, 2008, 14:27:03 » |
|
Borland C++ este un compilator de C cu extensii de C++. Programul a fost scos _inainte_ sa se stabileasca standardul C++. De aceea nici nu il respecta.
Am folosit compilatorul BC 5.5 in linia de comanda si e ok  . De cand cu UNIX-u nu mai am nevoie de el.
|
|
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #7 : Septembrie 28, 2008, 15:34:15 » |
|
La olimpiada nu scrii algoritmi, scrii programe. Si DA, esti obligat sa folosesti un compilator care nu respecta standardul! (nici manualele nu sunt foarte destepte  )
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•rEbyTer
|
 |
« Răspunde #8 : Septembrie 28, 2008, 15:48:30 » |
|
Prin participarea la olimpiada judeţeană de informatică eşti de acord să scrii programe care încalcă orice standard existent.
|
|
|
Memorat
|
|
|
|
•svalentin
|
 |
« Răspunde #9 : Septembrie 28, 2008, 15:57:49 » |
|
Păi la olimpiadă(judeţeană) eu scriu algoritmi care nu respectă standardul C/C++ ? Defapt nici manualul care este tipărit în 2008 nu-l respectă cu void main, care este incorect si impropiu zis ca un program să nu aibă exit status.
Poti sa scrii C standard in Borland C++. Pe ala cred ca il respecta  C++ sigur nu e complet. (ex: nu are biblioteci STL, variabilele au alt scope, etc)
|
|
|
Memorat
|
|
|
|
•rEbyTer
|
 |
« Răspunde #10 : Septembrie 28, 2008, 16:05:35 » |
|
Dacă îl respecta atunci int c[9]={0}; era {0,0,0,0,0,0,0,0,0,0} nu {0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}
|
|
|
Memorat
|
|
|
|
•stef2n
|
 |
« Răspunde #11 : Septembrie 28, 2008, 16:36:40 » |
|
2) Containerul e o clasa capabila sa retina alte tipuri de obiecte. De exemplu, vector <Obj> retine obiecte de tip Obj. Containerul deque este pur si simplu un alt container (deque = double-ended queue). 3) Iteratorii pentru niste containere sunt ca niste pointeri pentru variabilele obisnuite. Astfel, ii poti folosi pentru a traversa tot containerul din element in element si ii poti dereferentia pentru a afla elementul catre care refera. 4) Maparea este folositoare cand ai o corespondenta intre 2 multimi A si B, iar unui element din multimea A ii corespunde doar unul din multimea B. 5) Cu typedef dai tu un alt nume unui tip de date deja existent. Poate vrei sa nu definesti in program variabilele intregi ca int. Si atunci definesti: Enum e folosit pentru a defini mai multe constante intregi intre care exista o oarecare legatura. enum STARE_PROGRAM {PROGRAM_NEINCEPUT, PROGRAM_IN_EXECUTIE, PROGRAM_TERMINAT};
Acum, folosind o variabila de tip STARE_PROGRAM, tu te referi doar la una din cele 3 stari. 6) cerr e pentru a directiona erorile catre el, clog pentru alte informatii. Nu stiu ce detalii sa-ti dau mai mult. 7) Cu ofstream f; f.open("Jiji.txt"); tu creezi un obiect gol de tip ofstream dupa care ii deschizi un fisier. Cu ofstream f("Jiji.txt"); deschizi fisierul chiar de la crearea obiectului (deci din constructor) Intr-adevar multe intrebari. Poate iti mai raspund mai incolo. Btw, la 8 banuiesc ca vroiai sa scrii flush in loc de flux.
|
|
« Ultima modificare: Septembrie 28, 2008, 22:15:07 de către Stefan Istrate »
|
Memorat
|
Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
|
|
|
•rEbyTer
|
 |
« Răspunde #12 : Septembrie 28, 2008, 17:00:32 » |
|
Da, flush. Mersi mult.
|
|
|
Memorat
|
|
|
|
•svalentin
|
 |
« Răspunde #13 : Septembrie 28, 2008, 19:08:21 » |
|
Dacă îl respecta atunci int c[9]={0}; era {0,0,0,0,0,0,0,0,0,0} nu {0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}
Cum poate tipul int sa aibe valoarea NULL? Poate am inteles eu gresit ce vrei sa zici. Oricum, initializarea corecta este descrisa aici: http://www.eskimo.com/~scs/cclass/notes/sx4aa.html
|
|
|
Memorat
|
|
|
|
•rEbyTer
|
 |
« Răspunde #14 : Septembrie 28, 2008, 20:08:20 » |
|
Am greşit , înloc de NULL e un număr aleator. Pe gcc iniţializează tot vectorul cu valoarea 0.
|
|
|
Memorat
|
|
|
|
•c_sebi
Client obisnuit

Karma: 24
Deconectat
Mesaje: 62
|
 |
« Răspunde #15 : Septembrie 28, 2008, 20:19:47 » |
|
5) Enum e folosit pentru a defini mai multe constante intregi intre care exista o oarecare legatura. enum STARE_PROGRAM {PROGRAM_NEINCEPUT, PROGRAM_IN_EXECUTIE, PROGRAM_TERMINAT};
Acum, folosind o variabila de tip STARE_PROGRAM, tu te referi doar la una din cele 3 stari. Respectivele constante iau in ordine valorile 0, 1, 2, ... sau poti sa le dai tu alte valori enum STARE_PROGRAM {PROGRAM_NEINCEPUT = 10, PROGRAM_IN_EXECUTIE = 100, PROGRAM_TERMINAT = 500}; Asa poti sa-ti creezi un tip boolean sau sa lucrezi cu lunile anului enum {IAN = 1, FEB, MAR, APR }; Try it!
|
|
|
Memorat
|
|
|
|
•rEbyTer
|
 |
« Răspunde #16 : Septembrie 28, 2008, 20:25:18 » |
|
Good point. Încă un motiv să-mi uimesc colegii la tablă ...
|
|
|
Memorat
|
|
|
|
|