C περίεργα αποτελέσματα

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
gianpan
Δημοσιεύσεις: 275
Εγγραφή: 03 Ιουν 2006 16:53
Επικοινωνία:

C περίεργα αποτελέσματα

Δημοσίευση από gianpan » 03 Ιουν 2009 10:07

οκ το έφτιαξα ευχαριστώ :)
Τελευταία επεξεργασία από το μέλος gianpan την 03 Ιουν 2009 21:16, έχει επεξεργασθεί 1 φορά συνολικά.

alex599
Δημοσιεύσεις: 66
Εγγραφή: 17 Δεκ 2008 01:11
Τοποθεσία: Πάτρα

C περίεργα αποτελέσματα

Δημοσίευση από alex599 » 03 Ιουν 2009 11:34

ένα πρώτο λάθος είναι στην δημιουργία του πίνακα, τσέκαρε το και αν έχεις πάλι πρόβλημα πες..
while(!dead()) ++knowledge;

gianpan
Δημοσιεύσεις: 275
Εγγραφή: 03 Ιουν 2006 16:53
Επικοινωνία:

C περίεργα αποτελέσματα

Δημοσίευση από gianpan » 03 Ιουν 2009 14:21

σε αυτά αναφέρεσε;;

Κώδικας: Επιλογή όλων

matrix[i] = malloc(sizeof(int*)*size);
αντι για int*, int;
Όμοια για το double.

Ή έχω κάνει καμία χοντράδα άλλη ;:P
edit : αυτό πάντως δε βοήθησε (αναμενομενο ήταν δλδ)

alex599
Δημοσιεύσεις: 66
Εγγραφή: 17 Δεκ 2008 01:11
Τοποθεσία: Πάτρα

C περίεργα αποτελέσματα

Δημοσίευση από alex599 » 03 Ιουν 2009 16:28

for (i=0; i < size; i++)
{
for (j = 0 ; j< size; j++)
{
if (i==j)
{
augMatrix[j] = 1;
}
else
{
augMatrix[j] = 0;
}
}
tempMatrix[j] = array[j];
}


γτ το tempMatrix[j]=array[j]; το χεις εκτός της for του j??δεν παίζει έτσι...
while(!dead()) ++knowledge;

gianpan
Δημοσιεύσεις: 275
Εγγραφή: 03 Ιουν 2006 16:53
Επικοινωνία:

C περίεργα αποτελέσματα

Δημοσίευση από gianpan » 03 Ιουν 2009 17:14

α αυτό εννούσες στη δημιουργία εγώ κοίταγα της malloc μου!

εχεις απόλυτο δίκαιο αλλά και πάλι έχει πρόβλημα :(

alex599
Δημοσιεύσεις: 66
Εγγραφή: 17 Δεκ 2008 01:11
Τοποθεσία: Πάτρα

C περίεργα αποτελέσματα

Δημοσίευση από alex599 » 03 Ιουν 2009 17:17

gianpan έγραψε:α αυτό εννούσες στη δημιουργία εγώ κοίταγα της malloc μου!

εχεις απόλυτο δίκαιο αλλά και πάλι έχει πρόβλημα :(
και τη malloc αλλά και το δεύτερο που σου είπα...απλά την πρώτη φορά το κοίταξα γρήγορα και είδα το λάθος της malloc όπου βάζεις δείκτες. Μετά κοίταξα και πιο κάτω όπου κάνεις αυτό με το for.

Δύο λάθη...
while(!dead()) ++knowledge;

gianpan
Δημοσιεύσεις: 275
Εγγραφή: 03 Ιουν 2006 16:53
Επικοινωνία:

C περίεργα αποτελέσματα

Δημοσίευση από gianpan » 03 Ιουν 2009 17:31

alex599 έγραψε:
gianpan έγραψε:α αυτό εννούσες στη δημιουργία εγώ κοίταγα της malloc μου!

εχεις απόλυτο δίκαιο αλλά και πάλι έχει πρόβλημα :(
και τη malloc αλλά και το δεύτερο που σου είπα...απλά την πρώτη φορά το κοίταξα γρήγορα και είδα το λάθος της malloc όπου βάζεις δείκτες. Μετά κοίταξα και πιο κάτω όπου κάνεις αυτό με το for.

Δύο λάθη...
αυτό με τη malloc πρέπει να μου κόβε μερικά ψηφία μάλλον. Ευχαριστώ πάντως, θα το κοιτάξω και εγώ ξανά να δω τι έχει γίνει...

alex599
Δημοσιεύσεις: 66
Εγγραφή: 17 Δεκ 2008 01:11
Τοποθεσία: Πάτρα

C περίεργα αποτελέσματα

Δημοσίευση από alex599 » 03 Ιουν 2009 17:33

ουσιαστικά δημιουργούσες δισδιάστατο πίνακα από δείκτες, δλδ περίμενε να μπούν δείκτες ενώ βάζεις ακέραιους αριθμούς κάτι που είναι λάθος!!

Μην ξεχνάς ότι σε έναν δείκτη βάζουμε τιμή ως

pointer=&variable

δηλαδή την διεύθυνση!
while(!dead()) ++knowledge;

gianpan
Δημοσιεύσεις: 275
Εγγραφή: 03 Ιουν 2006 16:53
Επικοινωνία:

C περίεργα αποτελέσματα

Δημοσίευση από gianpan » 03 Ιουν 2009 18:09

χμμ κάτσε εγώ του ζήτησα μέγεθος ίσο με αυτό ενός δείκτη (Επι το size) δεν του είπα οτι θα βάλω δείκτες μέσα.

Η malloc μου γυρνάει ένα δείκτη σε void οπότε ουσιαστικά μου επιτρέπει να βάλω οτι θέλω στη μνήμη μου;

Ε;

alex599
Δημοσιεύσεις: 66
Εγγραφή: 17 Δεκ 2008 01:11
Τοποθεσία: Πάτρα

C περίεργα αποτελέσματα

Δημοσίευση από alex599 » 03 Ιουν 2009 18:14

Η χρήση της malloc():

int *pointer;
pointer=(int *)malloc(20*sizeof(int));

έτσι πλέον έχεις έναν μονοδιάστατο πίνακα των 20 θέσεων που παίρνει ακέραιους αριθμούς.

Δημιουργία δισδιάστατου:

int **table,N,M,i;
table=(int **)malloc(N*sizeof(int *);
for (i=0;i<N;i++){
*(table+i)=(int *)malloc(M*sizeof(int));
}

έτσι έχεις πλέον τον δισδιάστατο table[N][M].

sorry που δεν τα έβαλα σε κώδικα....
while(!dead()) ++knowledge;

gianpan
Δημοσιεύσεις: 275
Εγγραφή: 03 Ιουν 2006 16:53
Επικοινωνία:

C περίεργα αποτελέσματα

Δημοσίευση από gianpan » 03 Ιουν 2009 19:16

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

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες