Jump to content



Βοηθεια με δομες δεδομενων C


Recommended Posts

Μου δινεται ενας πινακας π.χ.

α 1 2 3 4 5

β 6 7 8 9 10

γ 11 12 13 14 15

και πρεπει να δηλωσω τρεις ακεραιες μεταβλητες δομης test...

struct test{

int α;

int b;

int c;

};

...και εναν πινακα με περιεχομενα δομων test και να καταχωρησω τα στοιχεια που φαινονται στον πρωτο πινακα κατα τη δηλωση.

typedef test pinakas[…]…

Το προβλημα ειναι οτι ειχα διαβασει πως γινεται αλλα δεν το θυμαμαι και δεν μπορω να το βρω. Μπορει να βοηθησει καποιος;

Link to comment
Share on other sites

Για την δομή test που βρίσκεται στην πρώτη θέση του πίνακα

pinakas[0].a = (τιμή για το πεδίο a)

pinakas[0].b = (τιμή για το πεδίο B)

pinakas[0].c = (τιμή για το πεδίο c)

πρέπει να κάνεις το ίδιο για όλες τις δομές που περιέχει ο πίνακας.Δεν ξέρω αν θα δουλέψει και το παρακάτω pinakas[0] = {(τιμή για το πεδίο a),(τιμή για το πεδίο B),(τιμή για το πεδίο c)};

(έχω μόνο C# και VB εγκατεστημένα)

Link to comment
Share on other sites

typedef struct {

int a;

int b;

int c;

} test;

και για τον πίνακα

struct test pinakas[100] (πίνακας που περιέχει 100 structs τύπου test)

Έχω την εντύπωση ότι δεν χρειάζεται το struct γιατί είναι defined με το typedef, οπότε ο compiler λογικά θα το δει σαν struct struct...

Link to comment
Share on other sites

Έχω την εντύπωση ότι δεν χρειάζεται το struct γιατί είναι defined με το typedef, οπότε ο compiler λογικά θα το δει σαν struct struct...

Ναι οντως... δεν χρειαζεται. Μου χτυπαει ο compiler. Επισης δεν μπορω ακομα να καταχωρησω τις τιμες του πινακα α,β,γ στον pinakas ταυτοχρονα με τη δηλωση του χωρις σφαλμα...

Link to comment
Share on other sites

ορισμός και αρχικοποίηση

int α[5] = {1,2,3,4,5}

int β[5] = {6,7,8,9,10}

int γ[5] = {11,12,13,14,15}

προσπέλαση

α[0] = 1 α[1] = 2 α[2] =3 α[3]=4 α[4]=5

ομοίως και για τους πίνακες β και γ

typedef struct {

int a;

int b;

int c;

} test;

και για τον πίνακα

struct test pinakas[5]

pinakas[0].a = α[0]

pinakas[0].b = β[0]

pinakas[0].c = γ[0]

pinakas[1].a = α[1]

pinakas[1].b = β[1]

pinakas[1].c = γ[1]

pinakas[2].a = α[2]

pinakas[2].b = β[2]

pinakas[2].c = γ[2]

pinakas[3].a = α[3]

pinakas[3].b = β[3]

pinakas[3].c = γ[3]

pinakas[4].a = α[4]

pinakas[4].b = β[4]

pinakas[4].c = γ[4]

Μπορείς να κάνεις τις αρχικοποιήσεις και την ανάθεση τιμών με for αλλά στο αφήνω σαν άσκηση

Link to comment
Share on other sites

ορισμός και αρχικοποίηση

int α[5] = {1,2,3,4,5}

int β[5] = {6,7,8,9,10}

int γ[5] = {11,12,13,14,15}

προσπέλαση

α[0] = 1 α[1] = 2 α[2] =3 α[3]=4 α[4]=5

ομοίως και για τους πίνακες β και γ

typedef struct {

int a;

int b;

int c;

} test;

και για τον πίνακα

struct test pinakas[5]

pinakas[0].a = α[0]

pinakas[0].b = β[0]

pinakas[0].c = γ[0]

pinakas[1].a = α[1]

pinakas[1].b = β[1]

pinakas[1].c = γ[1]

pinakas[2].a = α[2]

pinakas[2].b = β[2]

pinakas[2].c = γ[2]

pinakas[3].a = α[3]

pinakas[3].b = β[3]

pinakas[3].c = γ[3]

pinakas[4].a = α[4]

pinakas[4].b = β[4]

pinakas[4].c = γ[4]

Μπορείς να κάνεις τις αρχικοποιήσεις και την ανάθεση τιμών με for αλλά στο αφήνω σαν άσκηση

Είμαι στη δουλειά τώρα και δεν έχω καθαρό μυαλό... θα το κοιτάξω μόλις πάω στο σπίτι. Ευχαριστώ και πάλι...

Link to comment
Share on other sites

Εύρηκαααα εύρηκααα!!!

#include <stdio.h>

typedef struct {

int a;

int b;

int c;

} test;

int main(int argc, _TCHAR* argv[])

{

int x[5] = {1,2,3,4,5};

int y[5] = {6,7,8,9,10};

int z[5] = {11,12,13,14,15};

test pinakas[5];

pinakas[0].a = x[0];

pinakas[0].b = y[0];

pinakas[0].c = z[0];

pinakas[1].a = x[1];

pinakas[1].b = y[1];

pinakas[1].c = z[1];

pinakas[2].a = x[2];

pinakas[2].b = y[2];

pinakas[2].c = z[2];

pinakas[3].a = x[3];

pinakas[3].b = y[3];

pinakas[3].c = z[3];

pinakas[4].a = x[4];

pinakas[4].b = y[4];

pinakas[4].c = z[4];

for(int i=0;i < 5;i++)

{

printf("struct sthn thesh %d:times a=%d,b=%d,c=%d",i,pinakas.a,pinakas.b,pinakas.c);

}

return 0;

}

Link to comment
Share on other sites

Μάλλον ήθελες να πεις hoo-ray αντι για εύρηκα... :p

Εγώ όμως μάλλον δεν ξέρω τι ήθελα να πω στη δουλειά οπότε πάμε πάλι από την αρχή γιατί το έχω διατυπώσει λάθος. :hang3:

Έχω μια εργασία στην οποία συμπεριλαμβάνεται και ο πίνακας α,β,γ. Δεν μας λέει πουθενά μέχρι στιγμής να δημιουργήσουμε έναν πίνακα α,β,γ... ο πίνακας υπάρχει μόνο στο χαρτί για να χρησιμοποιήσω τις τιμές του.

Για αρχή ζητείται να δηλώσουμε μια δομή με όνομα test με τα πεδία ακεραίων a, b & c και κατόπιν μια global μεταβλητή πίνακα (π.χ. pinakas) με δομές τύπου test στον οποίο θα καταχωρήσουμε τις τιμές του πίνακα α,β,γ που έχουμε στο χαρτί κατά τη δήλωση του pinakas.

Ελπίζω να ήμουν λίγο πιο κατανοητός τώρα... :)

Αυτό που έχω τονίσει είναι το σημείο που κολλάω... :wall:

Link to comment
Share on other sites

typedef struct {

int a;

int b;

int c;

} test;

test pinakas[5] = {[0].a = 1,[0].b = 2,[0].c = 3, κτλ}

αυτό θες? Η πρώτη struct test στον pinakas περιέχει τις τιμές a=1,b=2,c=3 οι υπολοιπες είναι μηδέν

Link to comment
Share on other sites

typedef struct {

int a;

int b;

int c;

} test;

test pinakas[5] = {[0].a = 1,[0].b = 2,[0].c = 3, κτλ}

αυτό θες? Η πρώτη struct test στον pinakas περιέχει τις τιμές a=1,b=2,c=3 οι υπολοιπες είναι μηδέν

Ναι ρε άρχοντα! Αυτός είσαι... το έσπασα από χθες το κεφαλι μου με την μ... :wall:

Χίλια ευχαριστώ ρε φιλαράκι...

Link to comment
Share on other sites

Ευρήκα part 2

typedef struct {

int a;

int b;

int c;

} test;

test pinakas[2] = { {1,2,3},{4,5,6} };

Και αυτό δουλεύει και είναι και πιο "κομψό"

Ωραίος... καταχωρεί τις τιμές {...} απ'ευθείας στις δομές τύπου test που βρίσκονται στις διαδοχικές θέσεις 0,1,2,...,ν του pinakas έτσι;

Edit: Σου χρωστάω μια for... :)

for (i=0; i<5; i++){

pinakas.a = α;

pinakas.b = β;

pinakas.c = γ;

}

Ελπίζω να είμαι σωστός καθότι νέος στη c... :innocent:

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.