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

Πρόγραμμα σε C


geodark

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

@migf1 επειδη δεν έχω ασχοληθει με tokenization ουτε με την strtok καθολου. Δηλαδη ένας browser την διευθυνση που του βάζεις για να την διαβάσει την σπάει σε tokens? 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν λεω τον Παυλακη. Τον Γιωργακη λεω. Χτυπατο στο google.

 

Τον έχω κτυπησει ενταξει. Ηταν προσβολη τωρα αυτο ειλικρινα. Τι σχεση εχω εγω με τον Δελαπορτα? ειπα ποτε οτι θα ανοιξω καμια υπερ-επιχειρηση σχετικα με ενα υπερ-προτζεκτ που σχεδιαζω να κανω???? ή μηπως εννοεις το symbio tech troll technology? 

 

Tωρα εγινε Pandoo Tech 

 

 

 
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ημαρτον.

 

459.gif

 

:lol:

 

 

 

Μη φανταστείς, την getkey() copy & paste την έκανα, από ένα crossplatform commandline user interface που είχα φτιάξει σε C++ παλαιότερα. Το άλλο το έγραψα from scratch, αλλά αφού πρόκειται για user friendliness χαλάλι τα 3/4 που αφιέρωσα :lol:

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

μιγφ1 αφου τον βλεπεις οτι ειναι πνευμα αντιλογιας τι το συνεχιζεις? σορρυ κιολας για την παρεμβαση. 

 

Σε παρακαλώ σημασια έχει MONO ο αλγοριθμος :P

 

ασχετα αμα αυτος που ανοιξε το θεμα το ζητησε σε C. Και ο φιλος του προτεινε συναρτηση η οποια δεν ειναι portable.

 

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

 

 

Να μην προτίθεσαι γιατι ειναι ηλίθιος. Οποτε Λήξις συζήτησης. Ετσι εκτελείς κάτι τέτοιους δεν ειναι για πολλες κουβέντες.

 

 

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

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

 

Καλώς ή κακώς όλοι οι φοιτητές διδάσκονται την scanf ως συνάρτηση εισόδου ίσως επειδή λόγω των format μπορείς εύκολα να διαβάσεις ό,τι θέλεις. Ως εκ τούτου, το 99% των ασκήσεων που βλέπουμε είναι λυμένες με scanf. Με αυτό το σκεπτικό η συνάρτηση του migf1 αποτελεί λύση γιατί διορθώνει κάποια από τα προβλήματα της scanf (δεν είδα καθόλου τον κώδικα αλλά διαβάζοντας για fgets / sscanf συμπεραίνω τι θέλει να κάνει).

 

 

Χωρίς να θέλω να σε προσβάλλω, αν η scanf το 2013 είναι μία φορά γελοία, το get ένα ένα πλήκτρο και parse είναι 10 φορές γελοίο. Εννοείται πως ένας φοιτητής στο πλαίσιο μιας άσκησης δεν τον ενδιαφέρει να τρέξει ο κώδικας σε QNX αλλά ο κώδικάς σου ούτε καν στις "1-2 πλατφόρμες" που είπες ότι στοχεύεις δεν θα λειτουργήσει. Οι console.τάδε υποθέτω είναι συναρτήσεις του WinAPI ή κάτι για Windows τέλος πάντων, το fflush(stdin) θα παίξει μόνο σε windows και όχι σε *nix και η θεώρηση πως Backspace == 8 πάλι δεν θα παίξει σε *nix (Συνήθως οι terminal drivers στέλνουν για το Backspace το κωδικό 0x7F του Delete και για το Delete στέλνουν Escape Code [3~. Το 0x08 συνήθως στέλνεται πατώντας μόνο το Ctrl+H). Με λίγα λόγια ο κώδικας δεν στοχεύει τις 1-2 μεγάλες πλατφόρμες αλλά μόνο μία.

 

Χωρίς να το γνωρίζω στα σίγουρα, υποθέτω πως και στα Windows ακόμη έχουμε buffered είσοδο, οπότε λόγω της getchar δεν θα παίξει ούτε καν σε Windows μια και η getchar θα επιστρέψει αφού πατηθεί Enter. Για να γίνει αυτό που θέλεις θα πρέπει να χρησιμοποιήσεις την συνάρτηση _getch ή κάποια συνάρτηση του WinAPI που κάνει αυτή τη δουλειά.

 

Καταλαβαίνω ότι τον έγραψες στο χέρι χωρίς compiler όπως είπες αλλά ακόμη και με τις απαραίτητες αλλαγές για να τρέχει, πάλι ο κώδικας του migf1 θα είναι (ανάμεσα στους δύο) πιο εύκολος στην κατανόηση και θα ενδείκνυται περισσότερο για ένα νέο που μαθαίνει.

 

Λοιπόν ας τα πάρουμε ένα-ένα.

Καταρχήν κακώς δεν μαθαίνουν να φτιάχνουν κάτι καλύτερο σαν input. Εγώ όταν ήμουν φοιτητής τους έφτιαχνα συνέχεια πραγματάκια έξω από τα καθιερωμένα, ακόμη και για input, και οι καθηγητές πάντα εντυπωσιάζονταν. Μέχρι και windows forms τους έφτιαχνα αντί για command line. Δεν φάνηκε κανείς να ανησυχεί για το portabiltity. Ίσα ίσα όλοι θαύμαζαν ότι μπορούσα να κάνω windows forms ενώ οι άλλοι φοιτητές scanf.

 

Όσον αφορά την getchar έχεις δίκιο. Δεν θυμόμουν ότι πατάς εντερ. Για αυτό και μετά είπα να χρησιμοποιήσει την getch.

 

Όσον αφορά της πλατφόρμες που θα παίζει. Δεν νομίζω να είπα ότι το συγκεκριμένο πρόγραμμα θα παίζει σε 2 πλατφόρμες.Είπα ότι γενικά πρέπει να προγραμματίζεις για 1-2 πλατφόρμες. Υπάρχει κάποιο μεγάλο πρόγραμμα που να παίζει σε οποιαδήποτε πλατφόρμα; Σχεδόν σε όλα πρέπει να κάνεις αλλαγές. Στην ρουτίνα για το πάτημα του πλήκτρου θα κολήσουμε;

 

Όσον αφορά την κατανόηση, το παλικάρι είπε ότι το κατάλαβε αμέσως. Τι να πω.

 

@migf1

Κοίτα έγραψα κάτι μικρό. για να καθοδηγήσω τον άλλον πως να πάει με τον συγκεκριμένο τρόπο. Δεν μπορούσα και δεν ήθελα να γράψω ούτε κάτι μεγάλο ούτε κάτι πολύπλοκο χωρίς compiler. Ο κώδικας που έβαλες δεν μου λέει τίποτα. Δεν είναι κάτι generic. Επειδή έφτιαξες μία ρουτίνα που ζητάει ένα αριθμό σε ένα όριο;

Generic είναι αυτό πχ. http://digitalbush.com/projects/masked-input-plugin/.

Το κακό εδώ μέσα είναι ότι δεν μπορείς να βάλεις προχειροκώδικα να δείξεις στο περίπου σε κάποιον τι να κάνει. Πρέπει να είναι τέλειος.

Θεωρώ χαζό να μπω στην διαδικασία ότι από αυτό που έφτιαξες για να μου αποδείξεις τι καλός προγραμματιστής είσαι (γιατί ας μην γελιόμαστε αυτό γίνεται στην ουσία) μπορώ να το φτιάξω καλύτερο. Να φανταστείς ότι όταν σε είδα να αργείς να απαντήσεις ήμουν σίγουρος 100% ότι θα καθίσεις να φτιάξεις κάτι.

Εν το μεταξύ βλέπω ξενυχτάς. :P

 

@ΠΑΠΙ

Έχεις δίκιο φίλε.

Επεξ/σία από Retromaniac
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

...

@migf1

Κοίτα έγραψα κάτι μικρό. για να καθοδηγήσω τον άλλον πως να πάει με τον συγκεκριμένο τρόπο. Δεν μπορούσα και δεν ήθελα να γράψω ούτε κάτι μεγάλο ούτε κάτι πολύπλοκο χωρίς compiler. Ο κώδικας που έβαλες δεν μου λέει τίποτα. Δεν είναι κάτι generic. Επειδή έφτιαξες μία ρουτίνα που ζητάει ένα αριθμό σε ένα όριο;

Generic είναι αυτό πχ. http://digitalbush.com/projects/masked-input-plugin/.

Δεν το έδειξα ως καθολικά generic, αλλά ως στοιχειωδώς generic για το θέμα του συγκεκριμένου νήματος (δηλαδή για την εισαγωγή ενός long uint οποιουδήποτε πλήθους ψηφίων) ως αντιπαράθεση του... αλγόριθμου που έδωσες εσύ. Και το έκανα ΜΟΝΑΧΑ όταν με τσίγκλησες.

 

Ξεκαθάρισα εξαρχής πως τη συγκεκριμένη προσέγγιση τη θεωρώ εντελώς άστοχη ως απάντηση στην ερώτηση του TS κι επιμένω.

 

Πέρα από τη διαφωνία μας για την καταλληλότητα της πρότασής σου, στα δικά μου μάτια ο.... αλγόριθμος που πρότεινες αντιστοιχεί πάνω-κάτω στο να σου ζητάνε να τυπώσεις ένα string str χωρητικότητας 5 χαρακτήρων και να το τυπώνεις έτσι...

if (str[0]) putchar(str[0]);
if (str[1]) putchar(str[1]);
...
if (str[5]) putchar(str[5]);
αντί για έτσι...

while( *str ) putchar( *str++ );
ή αντί για έτσι...

puts(s);
Η ειλικρινής απορία μου είναι: αν ο δικός μου κώδικας δεν σου λέει τίποτα, τότε ο δικός σου τι ακριβώς σου λέει;

 

Το κακό εδώ μέσα είναι ότι δεν μπορείς να βάλεις προχειροκώδικα να δείξεις στο περίπου σε κάποιον τι να κάνει. Πρέπει να είναι τέλειος.

Θεωρώ χαζό να μπω στην διαδικασία ότι από αυτό που έφτιαξες για να μου αποδείξεις τι καλός προγραμματιστής είσαι (γιατί ας μην γελιόμαστε αυτό γίνεται στην ουσία) μπορώ να το φτιάξω καλύτερο. Να φανταστείς ότι όταν σε είδα να αργείς να απαντήσεις ήμουν σίγουρος 100% ότι θα καθίσεις να φτιάξεις κάτι.

Θα σου πρότεινα έτσι για δοκιμή να ποστάρεις τον κώδικα που πρότεινες σε οποιδήποτε στοιχειωδώς σοβαρό φόρουμ προγραμματισμού, είτε της ημεδαπής είτε της αλλοδαπής, και να μας δώσεις τα links να παρακολουθήσουμε τις αντιδράσεις των υπολοίπων συμμετεχόντων :P

 

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

 

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

 

Το κακό γενικώς (όχι μόνο εδώ μέσα αλλά και σε άλλα φόρουμ προγραμματισμού) είναι πως υπάρχει κόσμος όπως εσύ καλή ώρα στο νήμα, που στα λόγια έχει πολύ εύκολη την κριτική, τις εξυπνάδες και την απρόκλητη υποτίμηση των άλλων (πράσινα γραμματάκια, 2013, κλπ), αλλά από κώδικα άστο καλύτερα.

 

Εν το μεταξύ βλέπω ξενυχτάς. :P

Yeap! Ευτυχώς (για τις μέρες που ζούμε) φτιάχνω ταυτόχρονα 2 websites και μέχρι την περασμένη βδομάδα έφτιαχνα 3. Οπότε όπως καταλαβαίνεις δεν μένει χρόνος για ύπνο παραπάνω από 3-4 ώρες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ρε φίλε πραγματικά πρέπει να μου κάνεις πλάκα αλλιώς δεν μπορώ να το εξηγήσω γιατί δεν το καταλαβαίνεις.

Όπως ξαναείπα έγραψα αυτό

 

         if ((i == 0 && key <= '2') ||

             (i == 1 && time[0] < '2') ||

             (i == 1 && time[0] == '2' && key <= '3') ||

             (i == 3 && key <= '5') ||

             (i == 4))

          {

            time[i++] = key;

            if (i == 2)

              time[i++] = ':';

          }

 

γιατί είχα μόνο 4 χαρακτήρες να ελέγξω. Αν είχα 50 ΠΡΟΦΑΝΩΣ και δεν θα το έκανα ένα ένα. ΤΙ ΔΕΝ ΚΑΤΑΛΑΒΑΙΝΕΙΣ;

Δεν μπήκα στο κόπο να κάνω κάτι generic για 4 χαρακτήρες. ΚΑΤΑΝΟΗΤΟ;

Και ναι το δικό σου δεν μου λέει τίποτα. Επειδή ελέγχεις τους χαρακτήρες 2-2 και έφτιαξες μια ρουτίνα για έλεγχο ενός ακεραίου. Σιγά τα αυγά ρε συ. Ναι και ο δικός μου κώδικας δεν μου λέει ΤΙΠΟΤΑ. Είναι ένας απλός κώδικας για 4 γαμωψηφία.

Και επίσης ο δικός σου κώδικας δεν μου λέει απολύτως τίποτα γιατί μπαίνεις σε πολύ μεγαλύτερο κόπο να κάνεις κάτι που τελικά δεν είναι generic, και είναι απλά λίγο πιο generic για 4 ψηφία του time που ήθελε η άσκηση. Δηλαδή το θέμα ποιο είναι, ότι μου έφτιαξες το int range validator και μπορείς να το ξαναχρησιμοποιήσεις κάπου αλλού; Ρε φίλε πραγματικά αν μετά από τόσα χρόνια προγραμματισμού καθόμαστε και ασχολούμαστε αν μπορούμε να κάνουμε for και αν μπορούμε να κάνουμε range validation ρουτίνα, τότε κάνουμε πλάκα. Αυτά είναι αυτονόητα ότι θα μπορούσαν να γίνουν αν είχαν κάποιο νόημα όταν έγραφα το παραδειγματάκι. Αλλά δεν ήξερα ότι αργότερα θα χρειαστεί να αποδείξω ότι ξέρω να κάνω for.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Άλλα λόγια να αγαπιόμαστε!

 

...

Δεν μπήκα στο κόπο να κάνω κάτι generic για 4 χαρακτήρες. ΚΑΤΑΝΟΗΤΟ;

...

Κακώς τότε μπήκες μετά στον κόπο να σχολιάσεις υποτιμητικά και με ειρωνείες κώδικα που (σε αντίθεση με τον δικό σου): α) δουλεύει β) δουλεύει παντού (cross-platform) και γ) είναι ο κατά γενική ομολογία ενδεδειγμένος για την ερώτηση του TS.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

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

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