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

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

Δημοσ.

EDIT:

 

 

Αχά! Οπότε άκυρο το προηγούμενο ποστ μου για το συγκεκριμένο νήμα.

 

 

Έτσι μας έβαλε να διαβάζουμε τα δεδομένα με scanf... την getch() ας πούμε δεν την έχω χρησιμοποιήσει ποτέ...

 

 

 

ΥΓ. Παρεμπιπτόντως, καλώς όρισες ;)

 

Ευχαριστώ, καλώς σας βρήκα...

  • Απαντ. 34
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοφιλείς Ημέρες

Συχνή συμμετοχή στο θέμα

Δημοφιλείς Ημέρες

Δημοσ.

Υπάρχουν διάφορες ιδιαιτερότητες με την κύρια είσοδο με τη στάνταρ βιβλιοθήκη της C.

 

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

Δημοσ.

το μόνο που μου έρχεται με scanf είναι κάτι τέτοιο

 

>
                case '1': // Epilogi 1: Diavasma tou stoixeiou kai prosthiki stin lista me tin voitheia tis sinartisis insert.    
                     printf ("Dose ta stoixeia tis lista(gramma gia telos):");
                     while(scanf ("%d",&item))
                         insert (&startptr, item);
                     break;


 

δώσε σαν είσοδο π.χ. ----> 1 3 5 6 77 88 99 102 e enter

και δες την λίστα σου

Δημοσ.

Υπάρχουν διάφορες ιδιαιτερότητες με την κύρια είσοδο με τη στάνταρ βιβλιοθήκη της C.

 

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

Όχι απλά μου αρέσει να ψάχνομαι... Τρελένομαι να ψάχνομαι απλώς είμαι νέος προγραμματιστής και πέραν από το πρώτο εξάμηνο δεν έχω ξαναδεί την λέξη βιβλιοθήκη... Επομένως, πέρα από τις στανταρ βιβλιοθήκες που έχει η C δεν έχω δουλέψει με καμία άλλη και δεν ξέρω ούτε καν πως θα την συμπεριλάβω στον κώδικα μου άρα, για αρχή μου είναι λίγο δύσκολο να αρχίσω τόσο διάβασμα για να το καταννοήσω εφόσον με απασχολούν άλλα... (Μαθαίνουμε C++ σε αυτό το εξάμηνο και ήθελα να μάθω τρόπους για να πετύχω το παραπάνω στην C πριν συνεχίσω...) :)

 

Έχει μπει στους σελιδοδείκτες μου βέβαια και όταν βρω χρόνο για περαιτέρω εξέταση θα το δω... :)

 

το μόνο που μου έρχεται με scanf είναι κάτι τέτοιο

 

>
                case '1': // Epilogi 1: Diavasma tou stoixeiou kai prosthiki stin lista me tin voitheia tis sinartisis insert.    
                     printf ("Dose ta stoixeia tis lista(gramma gia telos):");
                     while(scanf ("%d",&item))
                         insert (&startptr, item);
                     break;


 

δώσε σαν είσοδο π.χ. ----> 1 3 5 6 77 88 99 102 e enter

και δες την λίστα σου

Μάλιστα... Κοίτα να δεις τι γίνεται...

12029477.png

 

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

Δημοσ.

το μόνο που μου έρχεται με scanf είναι κάτι τέτοιο

 

>
    			case '1': // Epilogi 1: Diavasma tou stoixeiou kai prosthiki stin lista me tin voitheia tis sinartisis insert.    
                     printf ("Dose ta stoixeia tis lista(gramma gia telos):");
                     while(scanf ("%d",&item))
                         insert (&startptr, item);
                     break;


 

δώσε σαν είσοδο π.χ. ----> 1 3 5 6 77 88 99 102 e enter

και δες την λίστα σου

Αυτός είναι ο τρόπος, δεν νομίζω να υπάρχει άλλος ευκολότερος.

 

Απλώς καλό είναι η συνθήκη της while να αλλάξει σε...

 

>
while( scanf ("%d", &item) == 1 )

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

 

ΥΓ. Με την ησυχία σου φίλε iPantelis, αν και αυτά θα έπρεπε να σας τα έχουν εξηγήσει και αναλύσει στο εξάμηνο που κάνατε C.

 

 

 

Μάλιστα... Κοίτα να δεις τι γίνεται...

12029477.png

 

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

 

 

Διάβασε στην τεκμηρίωση της βιβλιοθήκης μου το κομμάτι που μιλάει για Line Buffering.

 

EDIT:

Διόρθωσα την ανισότητα σε ισότητα στη συνθήκη του while()... την είχα λάθος.

Δημοσ.

Όχι απλά μου αρέσει να ψάχνομαι... Τρελένομαι να ψάχνομαι απλώς είμαι νέος προγραμματιστής και πέραν από το πρώτο εξάμηνο δεν έχω ξαναδεί την λέξη βιβλιοθήκη... Επομένως, πέρα από τις στανταρ βιβλιοθήκες που έχει η C δεν έχω δουλέψει με καμία άλλη και δεν ξέρω ούτε καν πως θα την συμπεριλάβω στον κώδικα μου άρα, για αρχή μου είναι λίγο δύσκολο να αρχίσω τόσο διάβασμα για να το καταννοήσω εφόσον με απασχολούν άλλα... (Μαθαίνουμε C++ σε αυτό το εξάμηνο και ήθελα να μάθω τρόπους για να πετύχω το παραπάνω στην C πριν συνεχίσω...) :)

 

Έχει μπει στους σελιδοδείκτες μου βέβαια και όταν βρω χρόνο για περαιτέρω εξέταση θα το δω... :)

 

 

Μάλιστα... Κοίτα να δεις τι γίνεται...

12029477.png

 

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

Άκυρο αυτό με την εικόνα... Έκανα μια μαλακία... Μισο να κοιτάξω το πρόγραμμα και να βάλω τον κώδικα που μου έδωσες...

 

Αυτός είναι ο τρόπος, δεν νομίζω να υπάρχει άλλος ευκολότερος.

 

Απλώς καλό είναι η συνθήκη της while να αλλάξει σε...

 

>
while( scanf ("%d", &item) == 1 )

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

 

ΥΓ. Με την ησυχία σου φίλε iPantelis, αν και αυτά θα έπρεπε να σας τα έχουν εξηγήσει και αναλύσει στο εξάμηνο που κάνατε C.

 

 

Διάβασε στην τεκμηρίωση της βιβλιοθήκης μου το κομμάτι που μιλάει για Line Buffering.

 

EDIT:

Διόρθωσα την ανισότητα σε ισότητα στη συνθήκη του while()... την είχα λάθος.

Τι εννοείς με το πλήθος των αναμενόμενων τιμών προς ανάγνωση;

 

Την τεκμηρίωση την άρχισα δεν έχω τελειώσει όμως γιατί μίλαγα στο τηλ :Ρ... Θα την κοιτάξω πάντος...

Ευχαριστώ... :)

 

στείλε όλο τον κώδικα να στο φτιάξω

Μισό φίλε μου... Θα το προσπαθήσω μια μόνος μου να δω εάν θα δουλέψει... Δεν το διάβασα καλά το ποστ σου και μπερδεύτικα... Συγνώμη...

Δημοσ.

στείλε όλο τον κώδικα να στο φτιάξω

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

 

46270269.png

Δημοσ.

Α) Εάν είναι για C και σε Windows προτείνω LCC.

 

Β) Γιατί με scanf και όχι με κάποια άλλη, π.χ. getc; (migf1 σου έδωσα δεύτερη πάσα, μετά το LCC :P ) Θα μπορείς να ελέγχεις πότε ο char δεν είναι \n και θα αποθηκεύεις έναν έναν char όπως θες. Οπότε, θα κάνεις και διαχείριση εύκολα με μία function μετά.

 

Π.χ. (δεν κάνει compile)

 

>
while ( (n=getc()) != '\n')

 

Γ) Το μέγιστο πλήθος από char που μπορεί να πάρει η κονσόλα είναι 256, οπότε ξέρεις και το μέγιστο μήκος το string.

 

Κατά τα άλλα, είναι πολύ εύκολη άσκηση.

 

 

 

Τι εξάμηνο είσαι και έχετε τέτοια άσκηση;

Δημοσ.

Επίσης, θα πρότεινα να μην έχεις το loop για το διάβασμα μέσα στην main.

 

Θα μπορούσες κάλλιστα να καλείς από την main μία function που να κάνει την δουλειά του διαβάσματος της εισόδου και στην main να έχεις μόνο την διαχείριση της λογικής του προγράμματος.

Δημοσ.

>
   scanf ("%2s",choice); // Apothikeysi sto string mono ta 2 prota psifia apo ayto pou tha pliktrologisi o xristis.
   fflush(stdin);

 

Λεπτομέρεια αλλά μια και είπες ότι ψάχνεσαι, έχε υπόψην σου ότι το πρότυπο εγγυάται την λειτουργία της fflush μόνο σε αρχεία εξόδου. Πρακτικά, αν θυμάμαι καλά, η fflush(stdin) παίζει σε windows, linux, solaris αλλά όχι σε *BSD (που όμως παρέχουν μια άλλη συνάρτηση για αυτή τη δουλειά).

Δημοσ.

Α) Εάν είναι για C και σε Windows προτείνω LCC.

 

Β) Γιατί με scanf και όχι με κάποια άλλη, π.χ. getc; (migf1 σου έδωσα δεύτερη πάσα, μετά το LCC :P ) Θα μπορείς να ελέγχεις πότε ο char δεν είναι \n και θα αποθηκεύεις έναν έναν char όπως θες. Οπότε, θα κάνεις και διαχείριση εύκολα με μία function μετά.

 

Π.χ. (δεν κάνει compile)

 

>
while ( (n=getc()) != '\n')

 

Γ) Το μέγιστο πλήθος από char που μπορεί να πάρει η κονσόλα είναι 256, οπότε ξέρεις και το μέγιστο μήκος το string.

 

Κατά τα άλλα, είναι πολύ εύκολη άσκηση.

 

 

 

Τι εξάμηνο είσαι και έχετε τέτοια άσκηση;

Φίλε μου είμαι είναι άσκηση πρώτου εξαμήνου...

 

πριν tο break προσθεσε μία getchar();

Πρόσθεσα άλλα δεν βλέπω κάποια διαφορά...

 

Επίσης, θα πρότεινα να μην έχεις το loop για το διάβασμα μέσα στην main.

 

Θα μπορούσες κάλλιστα να καλείς από την main μία function που να κάνει την δουλειά του διαβάσματος της εισόδου και στην main να έχεις μόνο την διαχείριση της λογικής του προγράμματος.

Το αρχικό μου πρόγραμμα ήταν διαφορετικό... Το while για το διάβασμα ήταν μια διόρθωση που έκανα που μου είπε να δοκιμάσω ένα παιδί :)

 

Λεπτομέρεια αλλά μια και είπες ότι ψάχνεσαι, έχε υπόψην σου ότι το πρότυπο εγγυάται την λειτουργία της fflush μόνο σε αρχεία εξόδου. Πρακτικά, αν θυμάμαι καλά, η fflush(stdin) παίζει σε windows, linux, solaris αλλά όχι σε *BSD (που όμως παρέχουν μια άλλη συνάρτηση για αυτή τη δουλειά).

Αχα, οκ... Απλώς επειδή δουλεύω σε windows για να μου βγει σώστα η scanf για τον έλεγχο εγκυρότητας έπρεπε να το βάλω... :)

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα

  • Δημιουργία νέου...