Thodoris21 Δημοσιεύτηκε Μάϊος 26, 2012 #1 Κοινοποίηση Δημοσιεύτηκε Μάϊος 26, 2012 Προσπαθώ να υλοποιήσω τον τύπο (K+(sin(7t)*3)) mod 6 αλλά όταν βάζω μέσα στο sin το t σαν μεταβλητή χτυπάει,ενώ αν το βάλω σαν αριθμό το υπολογίζει.Το t όμως παίρνει τιμές από 1-24 οπότε πρέπει να μπει σαν μεταβλητή.Τι συμβαίνει; Link to comment Share on other sites More sharing options...
shattered Μάϊος 26, 2012 #2 Κοινοποίηση Μάϊος 26, 2012 αν και δεν έχω ασχοληθεί με την c...μήπως ήθελες να γράψεις Κ +(sin((7*t)*3)))ή επί της ουσίας sin(7*t*3) Link to comment Share on other sites More sharing options...
Thodoris21 Μάϊος 26, 2012 Author #3 Κοινοποίηση Μάϊος 26, 2012 Το πρόβλημα δεν είναι ότι βγάζει λάθος αποτέλεσμα αλλά το ότι δεν του αρέσει το t.Το σφάλμα που βγάζει είναι "undefined reference to `sin'" Link to comment Share on other sites More sharing options...
theoamd Μάϊος 26, 2012 #4 Κοινοποίηση Μάϊος 26, 2012 Δοκίμασε να θέσεις το 7t σε μια μεταβλητή,πχ float y=7t; Link to comment Share on other sites More sharing options...
Thodoris21 Μάϊος 26, 2012 Author #5 Κοινοποίηση Μάϊος 26, 2012 Το έκανα αλλά τίποτα... Link to comment Share on other sites More sharing options...
theoamd Μάϊος 26, 2012 #6 Κοινοποίηση Μάϊος 26, 2012 Δείξε τον κώδικά σου μήπως βγάλουμε καμιά άκρη Link to comment Share on other sites More sharing options...
Thodoris21 Μάϊος 26, 2012 Author #7 Κοινοποίηση Μάϊος 26, 2012 Το βρήκα παιδιά.Χρειάζεται και το -lm στο compile! Link to comment Share on other sites More sharing options...
theoamd Μάϊος 26, 2012 #8 Κοινοποίηση Μάϊος 26, 2012 Έπρεπε να το αναφέρεις ότι κάνεις compile by default. Έχε το υπόψη σε περίπτωση που ασχοληθείς και με threads(χρήση του διακόπτη -lpthread κατά το compile) και γενικά βλέπε το manual συναρτήσεων Link to comment Share on other sites More sharing options...
Thodoris21 Μάϊος 26, 2012 Author #9 Κοινοποίηση Μάϊος 26, 2012 Ναι οκ.Κάτι άλλο τώρα πώς μπορώ να δημιουργώ αρχεία με δυναμικά ονόματα?Δηλαδή ανάλογα το t (1-24) να δημιουργεί αρχεία.Για παράδειγμα:για t=1mapk00[t]=fopen("map.k-001.dat","w");θέλω όμως το όνομα του αρχείου να εξαρτάται και αυτό απο το t,δηλαδή "map.k-00[t].dat" Link to comment Share on other sites More sharing options...
theoamd Μάϊος 26, 2012 #10 Κοινοποίηση Μάϊος 26, 2012 Μέσω ενός buffer απ'όπου θα λαμβάνεις κάθε φορά το pointer του t.Μετά λογικά με ένα for θα αντιστοιχίζεις τα t σε κάθε νέο αρχείο που είναι να δημιουργηθεί(αν δεν δώσεις πλήρη εκφώνηση δεν μπορώ να καταλάβω τι ακριβώς πρέπει να γίνει) Link to comment Share on other sites More sharing options...
Thodoris21 Μάϊος 26, 2012 Author #11 Κοινοποίηση Μάϊος 26, 2012 Δεν έχει σημασία τι θα γράφεται σε κάθε αρχείο.Αυτό που πρέπει να κάνω είναι να δημιουργήσω 24 αρχεία όσες δηλαδή και οι τιμές του t(0-23).Αυτό που έχω καταφέρει είναι να δημιουργώ δυναμικά τα file descriptors αλλά όχι και τα ονόματα.int main () { FILE * mapk00[24]; int t=0; while (t<24) { mapk00[t]=fopen("map.k-00[t].dat","w"); //θέλω το όνομα του αρχείου να σχετίζεται και αυτό με το t. t++; }return 0; } Link to comment Share on other sites More sharing options...
theoamd Μάϊος 26, 2012 #12 Κοινοποίηση Μάϊος 26, 2012 Το μόνο που μου 'ρχεται είναι ένας παρόμοιος τρόπος με αυτόν της δημιουργίας των fd(και το λογικό αυτό είναι) Link to comment Share on other sites More sharing options...
Thodoris21 Μάϊος 26, 2012 Author #13 Κοινοποίηση Μάϊος 26, 2012 Ναι αλλά το θέμα είναι το πώς;Μήπως με την sprintf; Link to comment Share on other sites More sharing options...
nucleus Μάϊος 26, 2012 #14 Κοινοποίηση Μάϊος 26, 2012 Με συνένωση string θα το κάνειςint main () {FILE * mapk00[24];int t=0;while (t<24) {mapk00[t]=fopen("map.k-00" & t & ".dat","w"); //θέλω το όνομα του αρχείου να σχετίζεται και αυτό με το t.t++;}return 0;} Link to comment Share on other sites More sharing options...
Thodoris21 Μάϊος 26, 2012 Author #15 Κοινοποίηση Μάϊος 26, 2012 Το έκανα με την sprintf και δουλεύει. Link to comment Share on other sites More sharing options...
Thodoris21 Μάϊος 27, 2012 Author #16 Κοινοποίηση Μάϊος 27, 2012 Ξέρει κανείς πως μπορώ να ορίσω έναν διδιάστατο πίνακα με 4096 στοιχειά?Με int A[4096][4096] χτυπάει όταν το τρέχω... Link to comment Share on other sites More sharing options...
theoamd Μάϊος 27, 2012 #17 Κοινοποίηση Μάϊος 27, 2012 Πιάνει κανονικά το int A[4096][4096], όμως πάλι δεν γίνεσαι σαφής στο πρόβλημά σου.Εκτός κι αν εννοείς συνολικά 4096 στοιχεία, οπότε ο πίνακας πρέπει να είναι 64*64 Link to comment Share on other sites More sharing options...
Thodoris21 Μάϊος 27, 2012 Author #18 Κοινοποίηση Μάϊος 27, 2012 Θέλω να γεμίσω έναν πίνακα με 4096 γραμμές και 4096 στήλες με κάποιους αριθμούς.Όταν δηλώνω τον πίνακα με [512][512] γραμμές και στήλες παίζει κανονικά.Όταν τον δηλώνω [4096][4096] κάνει compile χωρίς λάθη,αλλά όταν το τρέχω μου βγάζει segmentation fault. Link to comment Share on other sites More sharing options...
theoamd Μάϊος 27, 2012 #19 Κοινοποίηση Μάϊος 27, 2012 Αυτό σημαίνει ότι δεν έχει πρόσβαση στη διεύθυνση μνήμης που του ορίζεις να αποκτήσει πρόσβαση και συνήθως έχεις κάνει κάποιο λογικό λάθος εσύ, πχ αν έχεις έναν πίνακα 10χ10 και προσπαθείς να τον αρχικοποιήσεις θέτοντάς του όρια για το i,j το 1000, τότε έχεις Segmentation fault, επειδή τα όρια του πινακα είναι 10x10 ενώ οι μεταβλητές i,j προσπαθούν να προσπελάσουν αυτόν τον πίνακα σε στοιχεία τα οποία δεν υπάρχουν για i < 1000και j < 1000. Link to comment Share on other sites More sharing options...
Thodoris21 Μάϊος 27, 2012 Author #20 Κοινοποίηση Μάϊος 27, 2012 Παραθέτω τον κώδικα μου:#define dim1 4096#define dim2 4096int main (int argc, char *argv[]) { int prevkMap[dim1][dim2],num,i,j; for (i=0; i<dim1; i++) { for (j=0; j<dim2; j++) { num=rand() % 6; prevkMap[i][j]=num; } }return 0;}Δεν νομίζω ότι υπάρχει λογικό λάθος κάπου. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.