madas Δημοσ. 31 Δεκεμβρίου 2011 Δημοσ. 31 Δεκεμβρίου 2011 καλησπερα σε ολους!!! φτιαχνω μια εργασια σε c και θα ηθελα να ρωτησω το εξης. θα πρεπει να διαβαζω καποια δεδομενα απο τον χρηστη αλλα αυτα θελω να ειναι ορατα σε ολο το προγραμμα και οχι μονο στη main οπου τα διαβαζει. υπαρχει τροπος για να κανω κατι τετοιο???
virxen75 Δημοσ. 31 Δεκεμβρίου 2011 Δημοσ. 31 Δεκεμβρίου 2011 δήλωσε την μεταβλητή σου έξω από την main() π.χ. > ....... int x; int main(){ ......... scanf("%d",&x); ........ return 0; }
madas Δημοσ. 31 Δεκεμβρίου 2011 Μέλος Δημοσ. 31 Δεκεμβρίου 2011 δήλωσε την μεταβλητή σου έξω από την main() π.χ. > ....... int x; int main(){ ......... scanf("%d",&x); ........ return 0; } thnx!!! αμεσως μολις το ποσταρα μου ηρθε και μενα αυτη η λυση B) και κατι ακομη, η τιμη που θα εχουμε διαβασει απο το χρηστη και θα εχει αποθηκευτει στη x θα ειναι ορατη παντου στο προγραμμα????
migf1 Δημοσ. 31 Δεκεμβρίου 2011 Δημοσ. 31 Δεκεμβρίου 2011 καλησπερα σε ολους!!! φτιαχνω μια εργασια σε c και θα ηθελα να ρωτησω το εξης. θα πρεπει να διαβαζω καποια δεδομενα απο τον χρηστη αλλα αυτα θελω να ειναι ορατα σε ολο το προγραμμα και οχι μονο στη main οπου τα διαβαζει. υπαρχει τροπος για να κανω κατι τετοιο??? Χρόνια πολλά! Η χρήση καθολικών μεταβλητών θα πρέπει να αποφεύγεται, εκτός αν είναι απολύτως αναγκαία! Υπάρχουν διάφοροι λόγοι για τη μη χρήση τους ( δες π.χ. εδώ κι εδώ ). Είναι (κατά πολύ) προτιμότερο και συνιστώμενο επίσης, τα δεδομένα που θες να "φανερώσεις" σε κάποια συνάρτηση να της τα περνάς σαν όρισμα στη λίστα παραμέτρων της. Για παράδειγμα, αντί για... > int x,y; int add( void ) { return x+y; } int main( void ) { x = 1; y = 10; printf( "x + y = %d\n", add() ); return 0; } να χρησιμοποιείς αυτό... > int add( int x, int y ) { return x+y; } int main( void ) { int x = 1, y = 10; printf( "x + y = %d\n", add(x,y) ); return 0; }
virxen75 Δημοσ. 1 Ιανουαρίου 2012 Δημοσ. 1 Ιανουαρίου 2012 thnx!!! αμεσως μολις το ποσταρα μου ηρθε και μενα αυτη η λυση B) και κατι ακομη, η τιμη που θα εχουμε διαβασει απο το χρηστη και θα εχει αποθηκευτει στη x θα ειναι ορατη παντου στο προγραμμα???? ναι
Timonkaipumpa Δημοσ. 1 Ιανουαρίου 2012 Δημοσ. 1 Ιανουαρίου 2012 thnx!!! αμεσως μολις το ποσταρα μου ηρθε και μενα αυτη η λυση B) και κατι ακομη, η τιμη που θα εχουμε διαβασει απο το χρηστη και θα εχει αποθηκευτει στη x θα ειναι ορατη παντου στο προγραμμα???? Όπως σου είπε και ο mig, αυτό που σκέφτεσαι δεν είναι καλή τακτική προγραμματισμού. Προτιμότερο είναι να διαβάζει μία function τα δεδομένα και να τα αποθηκεύει σε μία δομή και να περνάς την δομή όπου χρειάζεται παρά να φτιάξεις global μεταβλητές που να τις αλλάζουν όλες οι functions.
DarknowE Δημοσ. 5 Ιανουαρίου 2012 Δημοσ. 5 Ιανουαρίου 2012 (επεξεργασμένο) Καλή χρονιά σε όλους!! Είμαι καινούργιο μέλος και θα ήθελα να κάνω και εγώ μια ερώτηση σχετικά με την εισαγωγή δεδομένων για μια εργασία μου . Έχω έναν δισδιάστατο πίνακα τον οποίο θέλω να γεμίσω με τυχαίες δεκαδικές τιμές χωρίς να πρέπει να κυμαίνονται σε κάποιο διάστημα. Προσπάθησα με την σύνταξη αυτή που βρήκα στο internet γιατί το βιβλίο δεν έλεγε και πολλά αλλά πέρα του οτι έχει διάστημα η σύνταξη αυτή, ο compiler μου το βγάζει λάθος και σκέφτομαι μήπως φταίει ο τύπος του πίνακα που έχω ορίσει(δεκαδικός). Με έχει ταλαιπωρήσει πολύ αυτή η εργασία και την παραδίδω σήμερα,παρακαλώ ρίξτε τα φώτα σας. >for (i=0;i<SIZE;i++) { for (j=0;j<SIZE;j++) srand ( time(NULL) ); { array[i][j]= rand() % 10 + 1; }} Επεξ/σία 5 Ιανουαρίου 2012 από DarknowE
Stavros_Ribo Δημοσ. 5 Ιανουαρίου 2012 Δημοσ. 5 Ιανουαρίου 2012 Καλή χρονιά σε όλους!! Είμαι καινούργιο μέλος και θα ήθελα να κάνω και εγώ μια ερώτηση σχετικά με την εισαγωγή δεδομένων για μια εργασία που . Έχω έναν δισδιάστατο πίνακα τον οποίο θέλω να γεμίσω με τυχαίες δεκαδικές τιμές χωρίς να πρέπει να κυμαίνονται σε κάποιο διάστημα. Προσπάθησα με την σύνταξη αυτή που βρήκα στο internet γιατί το βιβλίο δεν έλεγε και πολλά αλλά πέρα του οτι έχει διάστημα η σύνταξη αυτή, ο compiler μου το βγάζει λάθος και σκέφτομαι μήπως φταίει ο τύπος του πίνακα που έχω ορίσει(δεκαδικός). Με έχει ταλαιπωρήσει πολύ αυτή η εργασία και την παραδίδω σήμερα,παρακαλώ ρίξτε τα φώτα σας. for (i=0;i<SIZE;i++) { for (j=0;j<SIZE;j++) srand ( time(NULL) ); { array[j]= rand() % 10 + 1; }} Timonkaipumpa Μπορείς να γράψεις για παράδειγμα: > float array[size][size]; srand ((int)time(NULL)); //... for (i=0;i<SIZE;i++){ for (j=0;j<SIZE;j++) array[i][j]= (float)rand()/RAND_MAX*rand(); } Αντί για float μπορείς να χρησιμοποιήσεις double. Το (float)rand()/RAND_MAX έχει ως αποτέλεσμα έναν πραγματικό αριθμό από 0-1. Άρα πολλαπλασιάζεις στη συνέχεια αυτό με κάποιον αριθμό και παίρνεις αυτό που ζητάς. Μπορείς να βάλεις ((float)rand()/RAND_MAX)*(float)rand()/3; κτλ...
DarknowE Δημοσ. 5 Ιανουαρίου 2012 Δημοσ. 5 Ιανουαρίου 2012 Τροποποίησα τον κώδικα όμως μου βγάζει λάθος με την RAND_MAX σαν μη δηλωμένη. :\
migf1 Δημοσ. 6 Ιανουαρίου 2012 Δημοσ. 6 Ιανουαρίου 2012 Παρέθεσέ μας τον κώδικά σου μαζί με τα σφάλματα που παράγει ο compiler.
DarknowE Δημοσ. 6 Ιανουαρίου 2012 Δημοσ. 6 Ιανουαρίου 2012 ο κώδικας είναι αυτός: ># include <stdio.h> <stlib.h> <float.h> #define SIZE 10 int main() { float i, j, st, gr,array[size][size] ; int sum , gin ; char ep1,ep2; srand ((int)time(NULL)); for (i=0;i<SIZE;i++) { for (j=0;j<SIZE;j++) {array[i][j]= (float)rand()/RAND_MAX*rand()/3 ; }} και το σφάλμα: 14 `RAND_MAX' undeclared (first use in this function) (Each undeclared identifier is reported only once for each function it appears in.)
migf1 Δημοσ. 6 Ιανουαρίου 2012 Δημοσ. 6 Ιανουαρίου 2012 <stdlib.h> ΥΓ. Επίσης, δεν το ήξερα πως μπορούν να μπουν όλα τα include σε μια γραμμή... δουλεύει σίγουρα έτσι;
DarknowE Δημοσ. 6 Ιανουαρίου 2012 Δημοσ. 6 Ιανουαρίου 2012 Έχω αρχίσει και προβληματίζομαι για το αν δουλεύουν όλα στην ίδια γραμμή γιατί και την βιβλιοθήκη που την είχα λάθος δεν μου το έβγαλε..εγώ θα το αλλάξω για να είμαι σίγουρη.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα