Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

καλησπερα σε ολους!!! φτιαχνω μια εργασια σε c και θα ηθελα να ρωτησω το εξης. θα πρεπει να διαβαζω καποια δεδομενα απο τον χρηστη αλλα αυτα θελω να ειναι ορατα σε ολο το προγραμμα και οχι μονο στη main οπου τα διαβαζει. υπαρχει τροπος για να κανω κατι τετοιο???

Δημοσ.

δήλωσε την μεταβλητή σου έξω από την main()

 

π.χ.

 

>
.......
int x;
int main(){
.........
   scanf("%d",&x);
........
return 0;
}

thnx!!! αμεσως μολις το ποσταρα μου ηρθε και μενα αυτη η λυση B) B) B) και κατι ακομη, η τιμη που θα εχουμε διαβασει απο το χρηστη και θα εχει αποθηκευτει στη x θα ειναι ορατη παντου στο προγραμμα????

Δημοσ.

καλησπερα σε ολους!!! φτιαχνω μια εργασια σε 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;
}

Δημοσ.

thnx!!! αμεσως μολις το ποσταρα μου ηρθε και μενα αυτη η λυση B) B) B) και κατι ακομη, η τιμη που θα εχουμε διαβασει απο το χρηστη και θα εχει αποθηκευτει στη x θα ειναι ορατη παντου στο προγραμμα????

 

ναι

Δημοσ.

thnx!!! αμεσως μολις το ποσταρα μου ηρθε και μενα αυτη η λυση B) B) B) και κατι ακομη, η τιμη που θα εχουμε διαβασει απο το χρηστη και θα εχει αποθηκευτει στη x θα ειναι ορατη παντου στο προγραμμα????

 

 

Όπως σου είπε και ο mig, αυτό που σκέφτεσαι δεν είναι καλή τακτική προγραμματισμού.

 

 

Προτιμότερο είναι να διαβάζει μία function τα δεδομένα και να τα αποθηκεύει σε μία δομή και να περνάς την δομή όπου χρειάζεται παρά να φτιάξεις global μεταβλητές που να τις αλλάζουν όλες οι functions.

Δημοσ. (επεξεργασμένο)

Καλή χρονιά σε όλους!! :D

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

 

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

 

>for (i=0;i<SIZE;i++)     
{   for (j=0;j<SIZE;j++)  
srand ( time(NULL) );
{ array[i][j]= rand() % 10 + 1;   }}

Επεξ/σία από DarknowE
Δημοσ.
Καλή χρονιά σε όλους!! :D

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

 

Έχω έναν δισδιάστατο πίνακα τον οποίο θέλω να γεμίσω με τυχαίες δεκαδικές τιμές χωρίς να πρέπει να κυμαίνονται σε κάποιο διάστημα. Προσπάθησα με την σύνταξη αυτή που βρήκα στο 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; κτλ...

Δημοσ.

ο κώδικας είναι αυτός:

># 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.)

Δημοσ.

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

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...