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

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

Δημοσ.

εχω φτιαξει ενα αρχειο που μεσα εχει  50 τυχαιους αριθμους,θελω να αντιγραψω αυτουσ τουσ αριθμους σε εναν πινακα,πως γινεται αυτο?

Δημοσ.

Kercyn clap clap ανθρωπε μου.... φοβερη απάντηση.... 

rafaela1 η πιο απλή συνάρτηση είναι η fscanf για να το κάνει αυτό. Είναι σαν την scanf ακριβώς μόνο που πρέπει να ορίσεις αρχείο από το οποίο θα διαβάσεις ( FILE *f; ). Μετά πρέπει να ανοίξεις το αρχείο( f= fopen("path/to/my/file","r"); ). Αυτό σημαίνει ότι ανοίγεις το αρχείο σε εκείνη θέση για να το διαβάσεις μόνο "r" -> read. Μετά η μεταβλητή f είναι το "αναγνωτιστικό" του αρχείου σου για αυτό το πρόγραμμα. Οπότε άν θες να διαβάσεις απο το f (δηλαδή το /path/to/my/file) κάνεις  fscanf(f, "%d ",&value); Διάβασες λοιπόν έναν ακέραιο και μετακίνησες την θέση από την οποία θα διαβάσες και ένα spacebar. Το τι διαβάζεις και πως το διαβαζεις είναι ακριβώς σαν την scanf.

 

Κράτα στο μυαλό σου ότι fscanf έχει τιμή επιστροφής. δηλαδή λες  return_value = fscanf(f, "%d ",&value);

και η return_value χρησιμοποιείται για έλενγχο (στην τυπική περιπτωση επιστρέφει πόσα πράγαματα διάβασες). Όταν επιστρέψει αρνητικό είναι error και το EOF είναι οτι έφτασε στο τελος του αρχειου. (αν τα θυμαμαι καλα)

  • Moderators
Δημοσ.

 

 

Kercyn clap clap ανθρωπε μου.... φοβερη απάντηση....

 

Ναι, η αλήθεια είναι ότι πολλές φορές δεν κρατιέμαι και απαντάω ειρωνικά σε ερωτήσεις (φοιτητών, είναι σημαντικό αυτό) των οποίων η απάντηση είναι ένα google μακριά. Σ' ευχαριστώ που με κρατάς φρόνιμο <3

 

 

  • Like 5
Δημοσ.

εχω φτιαξει ενα αρχειο που μεσα εχει  50 τυχαιους αριθμους,θελω να αντιγραψω αυτουσ τουσ αριθμους σε εναν πινακα,πως γινεται αυτο?

Όταν λες σε ένα αρχείο εννοείς excel word .c .txt έχει σημασία.

Δημοσ.

 

 

 

Ναι, η αλήθεια είναι ότι πολλές φορές δεν κρατιέμαι και απαντάω ειρωνικά σε ερωτήσεις (φοιτητών, είναι σημαντικό αυτό) των οποίων η απάντηση είναι ένα google μακριά. Σ' ευχαριστώ που με κρατάς φρόνιμο <3

 

 

 

Είμαι σίγουρος ότι η διαδικασία του google είναι λιγότερο χρονοβόρα από τη λύση ποστ στο insomnia.Άσε που μπορεί να περιμένεις και μέρες για σωστές απαντήσεις.

Τέλος πάντων, ο καθένας επιλέγει τον τρόπο μάθησης (αν μαθαίνουν στο τέλος).

Δημοσ.

Kercyn clap clap ανθρωπε μου.... φοβερη απάντηση.... 

rafaela1 η πιο απλή συνάρτηση είναι η fscanf για να το κάνει αυτό. Είναι σαν την scanf ακριβώς μόνο που πρέπει να ορίσεις αρχείο από το οποίο θα διαβάσεις ( FILE *f; ). Μετά πρέπει να ανοίξεις το αρχείο( f= fopen("path/to/my/file","r"); ). Αυτό σημαίνει ότι ανοίγεις το αρχείο σε εκείνη θέση για να το διαβάσεις μόνο "r" -> read. Μετά η μεταβλητή f είναι το "αναγνωτιστικό" του αρχείου σου για αυτό το πρόγραμμα. Οπότε άν θες να διαβάσεις απο το f (δηλαδή το /path/to/my/file) κάνεις  fscanf(f, "%d ",&value); Διάβασες λοιπόν έναν ακέραιο και μετακίνησες την θέση από την οποία θα διαβάσες και ένα spacebar. Το τι διαβάζεις και πως το διαβαζεις είναι ακριβώς σαν την scanf.

 

Κράτα στο μυαλό σου ότι fscanf έχει τιμή επιστροφής. δηλαδή λες  return_value = fscanf(f, "%d ",&value);

και η return_value χρησιμοποιείται για έλενγχο (στην τυπική περιπτωση επιστρέφει πόσα πράγαματα διάβασες). Όταν επιστρέψει αρνητικό είναι error και το EOF είναι οτι έφτασε στο τελος του αρχειου. (αν τα θυμαμαι καλα)

 

Δεν έχουν ολες οι συναρτήσεις τιμές επιστροφής.Θα πρέπει να βλέπει το προτυπο της κάθε συνάρτησης κάθε φορά. Κάποιες συναρτησεις δεν επιστρέφουν τιμές ειτε διοτι θα εκτυπώσουν απλα ένα μήνυμα οταν κληθουν ή θα γινουν οι αλλαγές στην μνήμη απευθειας.

Είμαι σίγουρος ότι η διαδικασία του google είναι λιγότερο χρονοβόρα από τη λύση ποστ στο insomnia.Άσε που μπορεί να περιμένεις και μέρες για σωστές απαντήσεις.

Τέλος πάντων, ο καθένας επιλέγει τον τρόπο μάθησης (αν μαθαίνουν στο τέλος).

 

Δεν ειναι κακο να ποστάρεις κώδικα πάντως οταν βλέπεις οτι ο άλλος δυσκολεύεται για να δει πως θα μπορέσει να αξιοποιήσει τις εντολές που του δινει η γλώσσα. Αλλο να το περιγράφουμε και άλλο να το βλέπει. Τωρα αν θα πάρει αυτη τη λύση και θα πάει να τη δειξει σαν άσκηση στη σχολή του ωραια και λοιπον? κακο δικο του θα κάνει. Ουτως ή αλλως η λυση ειναι δημοσια* οποτε μπορει να χρειαστει σε κάποιον άλλο. Θελω να πω οτι απο τη στιγμη που μπαινεις στο τρυπάκι να βοηθήσεις κάποιον του απαντάς και δεν σε ενδιαφέρει μετά πως θα το χειριστεί αυτος.

 

*Ειχα προτεινει πιο παλιά να φτιάξουμε ενα ευρετηριο στο οποίο θα μπαινουν τα προβληματα που εμφανιζονται και διπλα το αντιστοιχο θρέντ που το επιλυει. 

 

Πχ -> Οχι άλλα ερωτηματα σχετικά με τον ΕΝΤΕΡ στην scanf!!!!!! Πάρε το λινκ όπως ειναι και διαγραφεται το θρεντ.

Δημοσ.
 
 

 


Δεν ειναι κακο να ποστάρεις κώδικα πάντως οταν βλέπεις οτι ο άλλος δυσκολεύεται για να δει πως θα μπορέσει να αξιοποιήσει τις εντολές που του δινει η γλώσσα. Αλλο να το περιγράφουμε και άλλο να το βλέπει. Τωρα αν θα πάρει αυτη τη λύση και θα πάει να τη δειξει σαν άσκηση στη σχολή του ωραια και λοιπον? κακο δικο του θα κάνει. Ουτως ή αλλως η λυση ειναι δημοσια* οποτε μπορει να χρειαστει σε κάποιον άλλο. Θελω να πω οτι απο τη στιγμη που μπαινεις στο τρυπάκι να βοηθήσεις κάποιον του απαντάς και δεν σε ενδιαφέρει μετά πως θα το χειριστεί αυτος.

 

Δηλαδή τι λες, ότι είναι το ίδιο να σου ποστάρει ο άλλος τη λύση επ' ακριβώς στο πρόβλημά σου, να το τρέξεις και να δεις ότι δουλεύει (αν και κει θα έπρεπε να τρέξεις πολλές φορές με συνδυασμούς μεταβλητών,πινάκων,δεδομένων για περιπτώσεις εξαιρέσεων) ή να ψάξεις στο google και να δεις 3-4 λύσεις, τις οποίες όμως θα πρέπει να προσαρμόσεις εσύ στη δικιά σου περίπτωση, με ανοιχτό ένα IDE και να "τριφτείς" πάνω στο γράψιμο κώδικα;

Το τελευταίο βέβαια προυποθέτει την ελάχιστη ενασχόληση, οπότε...

Δημοσ.

 

 
 

 

 

Δηλαδή τι λες, ότι είναι το ίδιο να σου ποστάρει ο άλλος τη λύση επ' ακριβώς στο πρόβλημά σου, να το τρέξεις και να δεις ότι δουλεύει (αν και κει θα έπρεπε να τρέξεις πολλές φορές με συνδυασμούς μεταβλητών,πινάκων,δεδομένων για περιπτώσεις εξαιρέσεων) ή να ψάξεις στο google και να δεις 3-4 λύσεις, τις οποίες όμως θα πρέπει να προσαρμόσεις εσύ στη δικιά σου περίπτωση, με ανοιχτό ένα IDE και να "τριφτείς" πάνω στο γράψιμο κώδικα;

Το τελευταίο βέβαια προυποθέτει την ελάχιστη ενασχόληση, οπότε...

 

 

Για κάποιον που τον ενδιαφέρει να μάθει , θα μάθει και με τους δυο τρόπους. Και με το διάβασμα αλλων κωδικων μαθαινεις να γράφεις δικούς σου μετά.Δεν θα μπώ στη διαδικασια ουτε να συγκρινω ουτε να επιβάλλω στον καθενα πως θα απαντησει εγω συμφωνω πιο πολυ με την παράθεση κώδικα ή εστω να πεις στον άλλον πως θα το κάνει και αν δεις οτι κολλάει τοτε και πάλι παράθεση κώδικα. Τωρα αν θα το πάρει ο άλλος και θα πάει να το κάνει αντιγραφη στην εργασια του κακο δικο του θα κάνει γιατι οταν θα κληθει να εξεταστει θα φανει οτι τον πήρε έτσι.

Δημοσ.

Όλα καλά εκτός από την περιγραφή του f ως αναγνωριστικό. Βεβαίως κάθε όνομα είναι ένα αναγνωριστικό αλλά άλλο πράγμα αναγνωριστικό που δηλώνει συνάρτηση, άλλο που δηλώνει τύπο, άλλο που δηλώνει μεταβλητή. Εδώ το f λέγεται handler δηλαδή χειριστής. Το αρχείο έχει όνομα και διεύθυνση. Αυτό που παίρνουμε στο f είναι ο Χειριστής-Handler ενός δρομέα, ή cursor.

Σε μερικές γλώσσες ξεχωρίζει ο Χειριστής με προσθήκη #, #f

αν δει κανείς το seek #f,10 σημαίνει για το δρομέα f να πάει στη θέση 10 του αρχείου.

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

Η έννοια των δρομέων επεκτείνεται στις βάσεις δεδομένων όπου κρύβονται πίσω από το recordset, αλλά καθορίζονται με πολλούς τρόπους σε σχέση με το αν κοιτάνε το αρχείο ή το τμήμα που επιλέγουμε. Η διαφορά δηλαδή είναι στο τι συμβολίζει το +1 στο δρομέα. Επόμενη εγγραφή, επόμενο byte, επόμενο wchar. Εδώ έχει σημασία να καταλάβει κανείς την διαφορά σταθερού μήκους εγγραφής/πεδίου, με μη σταθερού. Στη δεύτερη περίπτωση η υλοποίηση η πιο απλή είναι η σειριακή, δηλαδή κάθε εγγραφή έχει ένα δείκτη τέλους. Οπότε αναγκαστηκά πάμε από την αρχή.

Πάνω στο τελευταίο λοιπόν, την ανάγκη για σειριακή ανάγνωση, το ίδιο το αρχείο είναι σαν μια εγγραφή αλλά χωρίς σημείο τέλους. Δεν χρειάζεται γιατί το σύστημα γράφει το μήκος του και τον εσωτερικό δρομέα τον ελέγχει πάντα αν πέρασε το τέλος. Τι σημαίνει εσωτερικός δρομέας; Όπως και να έχει το πράγμα ακόμα δηλαδή και αν το αρχείο μας είναι μια βάση δεδομένων..ο δικός μας δρομέας που ορίζει το recordset, το ζητούμενο με κριτήρια,μετατρέπεται σε τιμή για το πραγματικό δρομέα. Όταν δύο προγράμματα βλέπουν την ίδια βάση, η κάθε μία έχει το δικό της πραγματικό δρομέα.

Ενδιαφέρον παρουσιάζει να δούμε τι θέση παίρνει ο δρομέας για να μεγαλώσει το αρχείο. Όσο η θέση του είναι εντός του χώρου του αρχείου δεν έχουμε επέκταση. Αν πάει στο μήκος +1 και έχουμε δικαίωμα εγγραφής τότε αυξάνουμε το μήκος του. Αλλά πόσο; Δεν γίνεται αύξηση αν δεν δώσουμε κάτι. Έτσι σε φάση που γράφουμε αν ο δρομέας είναι στο μήκος+1 (αν ξεκινάνε απλό 1 ή χωρίς +1 αν ξεκινάμε από 0) δεν υπάρχει μήνυμα αληθές στο EΟL η τέλος αρχείου. Το μήνυμα αυτό βγαίνει μετά απο διάβασμα. Σε αρχεία που διαβάζουμε και γράφουμε ελέγχουμε απ ευθείας το μήκος. Παλιά αυτό ήταν πρόβλημα, διότι το αρχείο δεν δήλωνε το μήκος του στην αρχή...ήταν σε ταινία! Να γιατί διαβάζουμε για χαρακτήρες τέλους αρχείου όπως control Z, που φυσικά δεν ισχύουν στον δίσκο αλλά πιάνουν στο stream, που είναι η ιδέα της ταινίας σήμερα...

Δημοσ.

Τους διαβάζεις απ' το αρχείο.

 

Όταν λες σε ένα αρχείο εννοείς excel word .c .txt έχει σημασία.

 

Και μετά τους βάζεις σε πίνακα

 

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

  • Like 1
  • Moderators
Δημοσ.

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

 

Δε σε βλέπω ν' απαντάς στο thread όμως. Α και που 'σαι, αυτό που ρωτάει ο k33theod έχει σημασία, αλλά τι να λέμε τώρα...

 

Η τελευταία φορά που ο OP μπήκε σ' αυτό το forum ήταν λίγη ώρα μετά από την ανάρτηση του thread. Για να σε βλέπω ν' απαντάς στο κλασσικό "κάντε μου την άσκηση γιατί βαριέμαι" thread. Ορίστε, όλο δικό σου.

  • Like 1
Δημοσ.

Δε σε βλέπω ν' απαντάς στο thread όμως. Α και που 'σαι, αυτό που ρωτάει ο k33theod έχει σημασία, αλλά τι να λέμε τώρα...

 

Η τελευταία φορά που ο OP μπήκε σ' αυτό το forum ήταν λίγη ώρα μετά από την ανάρτηση του thread. Για να σε βλέπω ν' απαντάς στο κλασσικό "κάντε μου την άσκηση γιατί βαριέμαι" thread. Ορίστε, όλο δικό σου.

Συνεχίζεις...στο ίδιο ύφος...

  • Moderators
Δημοσ.

Συνεχίζεις...στο ίδιο ύφος...

 

Ποιο ύφος; Αυτό που σου εξηγώ ότι η ερώτηση του k33theod έχει νόημα; Τέλος πάντων επειδή μάλλον μπήκες για να πεις ό,τι να 'ναι και δεν πολυέχω όρεξη αυτή τη στιγμή, συνέχισε να πιστεύεις ό,τι θες.

  • Like 1

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

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

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

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

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

Σύνδεση

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

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