Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- // 4.6
- typedef struct {
- int *tab;
- int capacitate;
- int index;
- int nume;
- }Vector;
- Vector create(){
- Vector t;
- t.capacitate = 2;
- t.index = 0;
- t.tab = (int*)malloc(sizeof(int) * t.capacitate);
- return t;
- }
- void add(Vector *t, int element){
- //caz 2, trebuie realocare
- if(t->index >= t->capacitate){
- // pas 1, alocam noua memorie
- int capacitate_noua = t->capacitate * 2;
- int * tab_nou = (int*)malloc(sizeof(int) * capacitate_noua);
- // pas 2 se copiaza vechiul continut in noua locatie
- for(int i = 0; i < t->capacitate; i++){ // TODO use memcpy()
- tab_nou[i] = t->tab[i];
- }
- // pas 3, se "reseteaza" structura spre noua locatie.
- t->capacitate = capacitate_noua;
- free(t->tab);
- t->tab = tab_nou;
- }
- //Caz 1, indexul este sub capacitate
- t->tab[t->index] = element;
- t->index++;
- }
- int get(Vector v, int index){
- if((index < 0) || (index >= v.index)){
- printf("EROARE\n");
- return -1;
- }
- return v.tab[index];
- }
- int main() {
- Vector v = create();
- Vector v2 = create();
- add(&v, 10);
- add(&v, 20);
- add(&v, 30);
- add(&v, 40);
- for (int i = 0; i < v.index;i++){
- printf("tab[%2d] = %d\n", i, get(v, i));
- }
- return 0;
- }
RAW Paste Data