Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C] Dynamiczne alokowanie pamięci na stuktury

Ostatnio zmodyfikowano 2014-10-16 16:38
Autor Wiadomość
b0r0
Temat założony przez niniejszego użytkownika
[C] Dynamiczne alokowanie pamięci na stuktury
» 2014-10-14 20:15:57
Witam
Dostałem za zadanie napisać dość rozbudowany program. Problem polega na tym że kazano mi to zrobić w C z którym mam dość niemiłe wspomnienia. Druga sprawa że wszyscy mieliśmy problem ze zrozumieniem treści zadania.

Do rzeczy...
1. funkcja ma wczytać liczbę N struktur które maja zostać utworzone
2. dynamicznie alokować pamięć na tablice N wskaźników na struktury
3. następnie alokować kolejno N struktur przypisując uzyskane adresy do kolejnych komórek utworzonej wcześniej tablicy.

i jeszcze trochę tego tam było....

Na razie tak jak to ja zrozumiałem:  (za komentowane poprzednie próby)
C/C++
void losowanie( int N )
{
    //int* tab;
    //int* tab2[N];
    /*for(int i=0; i<N; i++)
    {
    tab[i] = malloc(sizeof(Struktura));
    }
    for(int i=0; i<N; i++)
    {
    tab2[i] = tab[i];
    }*/
    //tab = (Struktura*) malloc(N * sizeof *tab);
   
    Struktura * tab[ N ];
    tab =( Struktura * ) malloc( N * sizeof( * tab ) );
   
}
P-118473
pekfos
» 2014-10-14 20:19:14
Masz przez malloc() stworzyć tablicę wskaźników i potem do każdego zaalokować po jednym obiekcie.
P-118476
b0r0
Temat założony przez niniejszego użytkownika
» 2014-10-16 13:35:06
Okej nie wiem czy dobrze zrozumiałem ale tyle na razie mam:

C/C++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdlib.h>

struct Struktura
{
    int a;
    char b;
    double c;
};

void losowanie( int N )
{
    //int* tab;
    //int* tab2[N];
    /*for(int i=0; i<N; i++)
    {
    tab[i] = malloc(sizeof(Struktura));
    }
    for(int i=0; i<N; i++)
    {
    tab2[i] = tab[i];
    }*/
    //tab = (Struktura*) malloc(N * sizeof *tab);
   
    Struktura * tab[ N ];
    tab =( Struktura * ) malloc( N * sizeof( * tab ) );
    for( int i = 0; i < N; i++ )
    {
        *( tab + i )->a =( rand() % 1000001 );
        *( tab + i )->b =( rand() & 24 ) + 65;
        *( tab + i )->c = 0
    }
}

int main()
{
    int N;
    char X;
    FILE * fp = fopen( "inlab.01.txt", "r" );
    if( fp == NULL )
         return - 1;
   
    fscanf( fp, "%d %c", & N, & X );
    fclose( fp );
   
    clock_t begin, end;
    double time_spent;
    begin = clock();
   
    losowanie( N );
   
   
    end = clock();
    time_spent =( double )( end - begin ) / CLOCKS_PER_SEC;
   
   
   
   
}


Pomijam fakt że część odpowiedzialna za liczenie czasu w ogóle nie działa i nie wiem czemu
P-118612
pekfos
» 2014-10-16 16:24:56
nie wiem czy dobrze zrozumiałem
Źle zrozumiałeś.
P-118624
1aam2am1
» 2014-10-16 16:38:34
C/C++
Struktura ** tab;
tab =( Struktura * ) malloc( N * sizeof( Struktura * ) ); //złomowanie tablicy wskaźników
P-118627
« 1 »
  Strona 1 z 1