infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: speedzeal din Februarie 03, 2009, 13:31:12



Titlul: Alocare dinamica
Scris de: speedzeal din Februarie 03, 2009, 13:31:12
Cine imi poate recomanda o carte despre alocare dinamica in c++ de la A la Z?(exemple practice+teorie+...)


Titlul: Răspuns: Alocare dinamica
Scris de: alexandru din Februarie 03, 2009, 18:27:37
Nu exista o carte  cu Alocare  Dinamica,  pentru ca este foarte usor si nu prea ai ce sa scri despre ea, uite un link  http://www.timsoft.ro/aux/module/modul7.html#2 , sper sa  iti fie util :)


Titlul: Răspuns: Alocare dinamica
Scris de: speedzeal din Februarie 04, 2009, 11:49:18
Nu exista o carte  cu Alocare  Dinamica,  pentru ca este foarte usor si nu prea ai ce sa scri despre ea, uite un link  http://www.timsoft.ro/aux/module/modul7.html#2 , sper sa  iti fie util :)
Carti despre alocare dinamica,exista,am in pascal,dar am nevoie in c++...tu mi-ai trimis un link in care este un articol despre alocare dinamica in c...la capitolu' alocare dinamica c diferit de c++
 


Titlul: Răspuns: Alocare dinamica
Scris de: alexandru din Februarie 04, 2009, 12:30:13
C si C++ sunt aprope identici  cu execptia unor comenzi
in C ai  printf(....) -pentru afisare  si scanf(....) - pentru  citire,  putchar(...) - pentru a afisa un caracter sau sir de caractere
iar  in C++ ai  cout<<  si  cin>>,  putchar poti sa-l inlocuiesti cu  cout :P  
Acestea sunt cele  mai intalnite diferente, si singurele care  apar in acel articol


Titlul: Răspuns: Răspuns: Alocare dinamica
Scris de: Andrei Misarca din Februarie 04, 2009, 12:55:19
C si C++ sunt aprope identici  cu execptia unor comenzi
in C ai  printf(....) -pentru afisare  si scanf(....) - pentru  citire,  putchar(...) - pentru a afisa un caracter sau sir de caractere
iar  in C++ ai  cout<<  si  cin>>,  putchar poti sa-l inlocuiesti cu  cout :P  
Acestea sunt cele  mai intalnite diferente, si singurele care  apar in acel articol

C si C++ nu sunt chiar asa identici, iar la alocarea dinamica difera destul in unele parti, + ca poti folosi citirea standard specifica C (scanf, printf etc.) si in C++

Un scurt articol despre alocarea dinamica in C++ gasesti aici (http://www.fredosaurus.com/notes-cpp/newdelete/50dynamalloc.html), dar cu un search pe google poti gasi mult mai multe :thumbup:


Titlul: Răspuns: Alocare dinamica
Scris de: alexandru din Februarie 04, 2009, 14:53:48
Citat
iar la alocarea dinamica difera destul in unele parti
In articololul postat de mine  singurele "diferente" erau acela cu  printf(..) si scanf(...) restu e la fel.
Citat
C si C++ nu sunt chiar asa identici
Depinde de ce vrobesti sintaxa ,de functii de sistem sau mod de programare, de eleborare de algoritmi :P


Titlul: Răspuns: Răspuns: Alocare dinamica
Scris de: Andrei Grigorean din Februarie 04, 2009, 15:20:07
C si C++ sunt aprope identici  cu execptia unor comenzi
in C ai  printf(....) -pentru afisare  si scanf(....) - pentru  citire,  putchar(...) - pentru a afisa un caracter sau sir de caractere
iar  in C++ ai  cout<<  si  cin>>,  putchar poti sa-l inlocuiesti cu  cout :P  
Acestea sunt cele  mai intalnite diferente, si singurele care  apar in acel articol

In locul tau m-as documenta despre C (http://en.wikipedia.org/wiki/C_programming_language) si C++ (http://en.wikipedia.org/wiki/C%2B%2B) inainte sa fac asemenea afirmatii.


Titlul: Răspuns: Alocare dinamica
Scris de: Pripoae Teodor Anton din Februarie 04, 2009, 16:21:22
Eu am lucrat mult in C (aproape un an) si acum am trecut din nou in C++ pt ca ofera mult mai multe (mai ales STL). O sa iti scriu aici diferentele majore intre C si C++

1. Alocare dinamica.

a) In C doar cu malloc, realloc si calloc:
Cod:
int *a;
a = (int*) malloc(1000 * sizeof(a[0]));

b) In C++: merge atat cu malloc, realloc si calloc, cat si cu new:
Cod:
int *a;
a = new int [1000];

c) Tot in C++ se poate si cu vectori STL:
Cod:
vector<int> a;
a.resize(1000);

2. Citire.

In C se poate doar cu scanf / fscanf si printf / fprintf, in C++ se poate ca in C dar si cu streamuri. cu cin si cout. In general toate lucrurile care merg in C merg si in C++, invers nu neaparat.

3. Declararea structurilor.

a) In C:
Cod:

struct ghitza{
   int a, b;
};
struct ghitza x; // trebuie pus si struct cand declaram

typedef struct ghitza ghitza; // daca punem un typedef, merge ca in C++
ghitza x;


b) In C++
Cod:
struct ghitza{
  int a,b;
};
ghitza x; // observam ca merge fara typedef

4. STL si clase.

a) In C nu exista
b) In C++ exista

5. Apelarea functiilor cu variabile de tip adresa:

a) In C++
Cod:
int ghitza(int &a){
  a = 2;
}
ghitza (x);

b) In C
Cod:
int ghitza(int *a){
  (*a) = 2;
}
ghitza(&x);

6. Alte diferente:

In C nu poti declara intr-o functie variabile intr-un for, trebuie toate declarate la inceputul functiei, nu poti face ceva de genul:
Cod:
for (int i  = 2; i <= 5; ++i);

Citat
Depinde de ce vrobesti sintaxa ,de functii de sistem sau mod de programare, de eleborare de algoritmi

Daca inca ati ramas la functiile din DOS.H e grav.. Atat in C si C++ se pot accesa functiile de sistem cu system("comanda"), modul de programare e mult mai usor in C++, datorita STL-ului, iar diferentele de sintaxa (singurele cred) le-am scris mai sus.

Spor :)


Titlul: Răspuns: Alocare dinamica
Scris de: Sima Cotizo din Februarie 05, 2009, 21:56:38
Cred ca merge sa declari o variabila la mijlocul unei functii in C, dar nu si in for.  :?


Titlul: Răspuns: Alocare dinamica
Scris de: Pripoae Teodor Anton din Februarie 05, 2009, 22:44:19
Da asa e, nu stiu de ce ramasesem cu impresia ca nu se poate. Cel putin eu nu am folosit niciodata asa. Am corectat, mersi :D.


Titlul: Răspuns: Alocare dinamica
Scris de: CHERA Laurentiu din Februarie 07, 2009, 20:43:58
Salut!
Dar daca vreu sa declar o matrice bidimensionala mare in C++ cum fac? :fool: De exmeplu a[10000][10000];
Multumesc! :D


Titlul: Răspuns: Alocare dinamica
Scris de: Gabriel Bitis din Februarie 07, 2009, 21:25:02
Cod:
tip a[10000][10000];  
:peacefingers:
... dar ocupa multa multa memorie


Titlul: Răspuns: Alocare dinamica
Scris de: Emanuel Cinca din Februarie 07, 2009, 21:27:17
nu prea poti... la probleme de concurs nu am intalnit limita de memorie de care ai avea tu nevoie si anume aproximativ 380MB pentru tipul long (sper ca nu am gresit :-'):)... daca nu ai limita de memorie...o declari clasic...


Titlul: Răspuns: Alocare dinamica
Scris de: CHERA Laurentiu din Februarie 07, 2009, 21:41:08
Multumesc!  :D E cu adevarat o problema in C++ 3.1 alcoarea memoriei pentru matrici mari! Cu VC s-ar fi rezolvat problema mai usor numai ca la OJI nu te lasa decat cu C++ 3.1.


Titlul: Răspuns: Alocare dinamica
Scris de: Andrei Grigorean din Februarie 07, 2009, 23:44:19
Pai si la olimpiada nationala de obicei limita e de 16 mega. Niciun concurs serios nu iti ofera la dispozitie tot RAM-ul, toate problemele au limite de memorie :).


Titlul: Răspuns: Alocare dinamica
Scris de: Pripoae Teodor Anton din Februarie 08, 2009, 00:56:15
Pai si la olimpiada nationala de obicei limita e de 16 mega. Niciun concurs serios nu iti ofera la dispozitie tot RAM-ul, toate problemele au limite de memorie :).

SPOJ-ul ofera nelimitat, nu este nici o restrictie in privinta asta, oricum nu stiu pe nimeni sa fi folosit mai mult de 256 de mega (poate doar cu Java)