[C] Dynamiczne alokowanie pamięci na stuktury
Ostatnio zmodyfikowano 2014-10-16 16:38
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) void losowanie( int N ) { Struktura * tab[ N ]; tab =( Struktura * ) malloc( N * sizeof( * tab ) ); }
|
|
pekfos |
» 2014-10-14 20:19:14 Masz przez malloc() stworzyć tablicę wskaźników i potem do każdego zaalokować po jednym obiekcie. |
|
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: #include <stdio.h> #include <stdlib.h> #include <time.h> #include <stdlib.h>
struct Struktura { int a; char b; double c; };
void losowanie( int N ) { 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 |
|
pekfos |
» 2014-10-16 16:24:56 nie wiem czy dobrze zrozumiałem |
Źle zrozumiałeś. |
|
1aam2am1 |
» 2014-10-16 16:38:34 Struktura ** tab; tab =( Struktura * ) malloc( N * sizeof( Struktura * ) );
|
|
« 1 » |