nav Δημοσ. 11 Νοεμβρίου 2011 Δημοσ. 11 Νοεμβρίου 2011 migf1 με μια πρωτη ματια που του εριξα με βοηθησε πολυ το "σουλουπωμα" σου ! Θα τον επεξεργαστω καλυτερα το σκ που θα εχω χρονο. Εχεις δικιο γι αυτα που λες περι readability του κώδικα .Αυτος ο κωδικας ηταν μια δουλεια του ποδαριου,λογω πιεσης χρονου
migf1 Δημοσ. 11 Νοεμβρίου 2011 Δημοσ. 11 Νοεμβρίου 2011 migf1 με μια πρωτη ματια που του εριξα με βοηθησε πολυ το "σουλουπωμα" σου ! ... Χαίρομαι, καλό κουράγιο & καλή επιτυχία εύχομαι
Timonkaipumpa Δημοσ. 11 Νοεμβρίου 2011 Δημοσ. 11 Νοεμβρίου 2011 Οι 3ς γραμμές. Printf("to maxairi to exei o %d/n", indx); Else{ printf("zwntanos einai o %d", indx);} Δεν νομίζω αφενός ότι είναι τόσο πολύπλοκη όση παρουσιάζεται και αφετέρου ότι οι3ς αυτές γραμμές είναι κάτι το ιδιαίτερο.
migf1 Δημοσ. 11 Νοεμβρίου 2011 Δημοσ. 11 Νοεμβρίου 2011 Timon, νομίζω δεν έχεις καταλάβει τι ακριβώς ζητάει η άσκηση... οι φυλακισμένοι βρίσκονται σε κύκλο και όχι σε ευθεία
migf1 Δημοσ. 12 Νοεμβρίου 2011 Δημοσ. 12 Νοεμβρίου 2011 Κοιτάζοντας ξανά την λύση που πρότεινα στην προηγούμενη σελίδα διαπιστώνω πως δεν είναι κατανοητή σε όσους δεν έχουν εμπειρία με τη γλώσσα. Επειδή δεν με αφήνει πλέον να την επεξεργαστώ, την παραθέτω ξανά με σχόλια και ελαφρώς αλλαγμένα ονόματα μεταβλητών, με την ελπίδα πως θα φανεί πιο χρήσιμη από την προηγούμενη... > #include <stdio.h> #define ISEVEN(n) ( (n) % 2 == 0 ) int main( void ) { int n = 0; /* total number of prisoners */ register int nalive = 0; /* remaining alive prisoners */ register int i = 1; /* raw id for current prisoner with knife */ register int curr = i; /* adjusted id for current prisoner with knife */ register int step = 2; /* adjustable iteration step for the main loop */ printf("How many prisoners? "); scanf("%d", &n); nalive = n; for(; { printf( "%d has the knife\n", curr ); if ( i >= n ) /* 2nd cycle? */ step = 4; /* ... adjust step */ nalive -= (step / 2); /* calc remaining alive */ if ( nalive < 1 ) /* all dead? */ break; /* ... stop the loop */ /* id of prisoner to get the knife (i: raw number, curr: adjusted) */ i += step; curr = i > n ? ( ISEVEN(n) ? i % n : (i % n )-1 ) : i; } printf("\nPrisoner %d survived!\n\n", curr); return 0; } Και για τον φίλο μου timonkaipumpa που του αρέσουν οι... μινιμάλ υλοποιήσεις, 4 γραμμές καθαρού κώδικα > #include <stdio.h> int main( void ) { int n, r, i=1,j=i, step=2; /* r:nalive, j:curr */ scanf("%d", &n); for(r=n; r>0; step=i>=n?4:2, j=i>n?(n%2==0?i%n:(i%n)-1):i, i+=step, r-=step/2 ) ; printf("%d\n", j); return 0; }
pavlos1908 Δημοσ. 25 Οκτωβρίου 2014 Δημοσ. 25 Οκτωβρίου 2014 Εχω την ιδια ασκηση και εχω κολλησει αρκετα μπορω να πω. Μπορουμε να την λυσουμε ειτε με πινακες ειτε με οχι. Εχω την εντυπωση οτι η ασκηση μας λεει οτι γινονται συνεχεια κυκλοι μεχρι να μεινει καποιος τελευταιος, αυτο κανουν τα παραπανω κομματια κωδικα ή μονο για δευτερο κυκλο; Επισης εχω παρατηρησει οτι ισχυει step = 2^gyros, και εχουμε αγνωστους Ν μελλοθανατους. Εχω κολλησει καθως δεν ξερω τι συνθηκη να βαλω στις εντολες επαναληψεις ή/και πως θα "σκοτωνω" καθε φορα τους μελλοθανατους ωστε να μου μεινει καποιος τελευταιος. Το step = 2^gyros μπορω να το χρησιμοποιησω καπως; Αν ναι πως;
Dr.Fuzzy Δημοσ. 26 Οκτωβρίου 2014 Δημοσ. 26 Οκτωβρίου 2014 Έχεις προσέξει ότι η τελευταία δημοσίευση ήταν 12/09/2011, ε;
pavlos1908 Δημοσ. 26 Οκτωβρίου 2014 Δημοσ. 26 Οκτωβρίου 2014 Φυσικα αλλα ειμαι σε forum προγραμματισμου, φανταζομαι δεν ειναι δυσκολο για καποιον εμπειρο να διαβασει το 1ο ποστ, το τελευταιο του mig ( ο οποιος ειναι ενεργος απο οσο ξερω εδω μεσα ) και μεσα σε 5 λεπτα να δωσει την χ βοηθεια.
migf1 Δημοσ. 31 Οκτωβρίου 2014 Δημοσ. 31 Οκτωβρίου 2014 Εχω την ιδια ασκηση και εχω κολλησει αρκετα μπορω να πω. Μπορουμε να την λυσουμε ειτε με πινακες ειτε με οχι. Εχω την εντυπωση οτι η ασκηση μας λεει οτι γινονται συνεχεια κυκλοι μεχρι να μεινει καποιος τελευταιος, αυτο κανουν τα παραπανω κομματια κωδικα ή μονο για δευτερο κυκλο; Έχει περάσει καιρός και αυτή την στιγμή δεν έχω την ευχέρεια να δω τον κώδικα με ησυχία, αλλά νομίζω πως ναι... αυτό κάνει. Τον δοκίμασες και δεν σου βγάζει σωστά αποτελέσματα; Επισης εχω παρατηρησει οτι ισχυει step = 2^gyros, και εχουμε αγνωστους Ν μελλοθανατους. Εχω κολλησει καθως δεν ξερω τι συνθηκη να βαλω στις εντολες επαναληψεις ή/και πως θα "σκοτωνω" καθε φορα τους μελλοθανατους ωστε να μου μεινει καποιος τελευταιος. Το step = 2^gyros μπορω να το χρησιμοποιησω καπως; Αν ναι πως; Γιατί να υψώσεις σε δύναμη από την στιγμή που μπορείς να το κάνεις με απλό incremental;
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα