Star_Light Δημοσ. 15 Ιουνίου 2012 Δημοσ. 15 Ιουνίου 2012 Δεν κοίταξα καν το συγκεκριμένο ποστ γιατί θεώρησα πως δεν θα χρειαστεί περαιτέρω ανάλυση μετά την ανάγνωση του link που δώσαμε κι εγώ κι ο direct-x. Είναι δηλαδή προφανές μετά την ανάγνωση του link πως κάθε νέα κλήση συνάρτησης αυξάνει το stack-space και κάθε τερματισμός κλήσης το μειώνει. Και ομως αυτο εδω http://www.sparknotes.com/cs/recursion/whatisrecursion/section1.html που βρηκα μολις τωρα εχει πολυ καλυτερο διαγραμμα απο αυτο της Wikipedia και ειναι πιο κατανοητο επειδη το παραδειγμα του εχει έκταση . Κοιταξε να δεις ωρες ωρες βολευουν περισσοτερο και τα διαγραμματα . ΔΙαφωνεις ? το αρθρο της wikipedia δεν έκατσα να το διαβασω γιατι ηταν ολοκληρο κατεβατο μονο το διαγραμμα ειδα. ΕΠειδη μ αρεσει να ειμαι ειλικρινης και εμενα.
migf1 Δημοσ. 15 Ιουνίου 2012 Δημοσ. 15 Ιουνίου 2012 Δεν διαφωνώ, αλλά δεν μπορούμε σε κάθε απάντηση να παραθέτουμε 5-6 links ώστε να καλύψουμε όλες τις περιπτώσεις για το ποιο από όλα θα βολέψει καλύτερα όποιον διαβάσει την απάντηση. Το αυτονόητο είναι να δώσουμε 1-2 links ως έναυσμα να ψάξει ο ενδιαφερόμενος για τα υπόλοιπα. Η ερώτηση που έκανες αφορούσε το stack, οπότε δώσαμε link που εξηγεί εμπεριστατωμένα το call stack. Αυτό που δίνεις τώρα ξεκινάει με recursion ως βασικό key.
Directx Δημοσ. 15 Ιουνίου 2012 Δημοσ. 15 Ιουνίου 2012 Και ομως αυτο εδω http://www.sparknotes.com/cs/recursion/whatisrecursion/section1.html που βρηκα μολις τωρα εχει πολυ καλυτερο διαγραμμα απο αυτο της Wikipedia και ειναι πιο κατανοητο επειδη το παραδειγμα του εχει έκταση . Κοιταξε να δεις ωρες ωρες βολευουν περισσοτερο και τα διαγραμματα . ΔΙαφωνεις ? το αρθρο της wikipedia δεν έκατσα να το διαβασω γιατι ηταν ολοκληρο κατεβατο μονο το διαγραμμα ειδα. ΕΠειδη μ αρεσει να ειμαι ειλικρινης και εμενα. Για αυτό λοιπόν εφεξής να βασίζεσαι στις δικές σου δυνάμεις ώστε με την βοήθεια του Google να βρίσκεις εκείνα τα άρθρα που ταιριάζουν περισσότερο στο στυλ διδασκαλίας που κατανοείς ή έχεις συνηθίσει --όπως και έκανες τελικά @migf1: .. No good deed goes unpunished
migf1 Δημοσ. 15 Ιουνίου 2012 Δημοσ. 15 Ιουνίου 2012 ... @migf1: .. No good deed goes unpunished ΥΓ. Πάντως το sparknotes έχει όντως όμορφα εισαγωγικά άρθρα. Το χρησιμοποιώ αρκετές φορές σε απαντήσεις μου περί hash-table (http://www.sparknote...s/section1.html)
Directx Δημοσ. 15 Ιουνίου 2012 Δημοσ. 15 Ιουνίου 2012 ΥΓ. Πάντως το sparknotes έχει όντως όμορφα εισαγωγικά άρθρα. Το χρησιμοποιώ αρκετές φορές σε απαντήσεις μου περί hash-table (http://www.sparknote...s/section1.html) Yeap! Τα οπτικοποιεί μεταξύ άλλων πολύ όμορφα (παραστατικά)
Re4cTiV3 Δημοσ. 20 Ιουνίου 2012 Δημοσ. 20 Ιουνίου 2012 Πως θα μπορούσα να έχω πρόσβαση σε αυτό εδώ; > void eraseLetters(vector <char> *remainLetters, const char token) { for(int i=0; i<remainLetters->size(); i++) { if(remainLetters[i] == token) remainLetters->erase(remainLetters->begin()+i); } } Μου βγάζει πρόβλημα στο remainLetters. Μπορώ κάπως να το φτιάξω; no match for 'operator==' in '(&remainLetters->std::vector<_Tp, _Alloc>::begin [with _Tp = char, _Alloc = std::allocator<char>]())->__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator+ [with _Iterator = char*, _Container = std::vector<char, std::allocator<char> >](((const ptrdiff_t&)((const ptrdiff_t*)(&i)))) == token' SOLVED: > void eraseLetters(vector <char> &remainLetters, const char token) { for(int i=0; i<remainLetters.size(); i++) { if(remainLetters[i] == token) remainLetters.erase(remainLetters.begin()+i); } }
παπι Δημοσ. 21 Ιουνίου 2012 Δημοσ. 21 Ιουνίου 2012 > #include <iostream> #include <algorithm> int main() { std::string vector = "abcdabcdabcd"; std::remove(vector.begin(),vector.end(),'a'); return 0; }
migf1 Δημοσ. 21 Ιουνίου 2012 Δημοσ. 21 Ιουνίου 2012 Πόσο αξιόπιστος είναι ο compiler σας; The Little C Function From Hell: http://blog.regehr.org/archives/482
Re4cTiV3 Δημοσ. 21 Ιουνίου 2012 Δημοσ. 21 Ιουνίου 2012 > #include <iostream> #include <algorithm> int main() { std::string vector = "abcdabcdabcd"; std::remove(vector.begin(),vector.end(),'a'); return 0; } είναι πιο αποδοτικό έτσι;Επίσης επιστρέφει true ή false?
ennoeitai Δημοσ. 21 Ιουνίου 2012 Δημοσ. 21 Ιουνίου 2012 Ξέρει κανείς αν υπάρχει κάποιο e-book, ή κάποιο πρόγραμμα, που να έχει όλες τις εντολές της C# και τι κάνει η καθεμιά; edit: εννοώ να περιέχει και τις μορφές π.χ. οτι το >float[,] onoma= new float[5,4]; δημιουργεί πίνακα
Directx Δημοσ. 21 Ιουνίου 2012 Δημοσ. 21 Ιουνίου 2012 Ξέρει κανείς αν υπάρχει κάποιο e-book, ή κάποιο πρόγραμμα, που να έχει όλες τις εντολές της C# και τι κάνει η καθεμιά; edit: εννοώ να περιέχει και τις μορφές π.χ. οτι το >float[,] onoma= new float[5,4]; δημιουργεί πίνακα Υπάρχει εδώ (C# Language Specification Version 4.0) σε μορφή DOC ή HTML, προσοχή όμως διότι είναι μεν λεπτομερές αλλά και πολύ τεχνικό.
Star_Light Δημοσ. 21 Ιουνίου 2012 Δημοσ. 21 Ιουνίου 2012 > #include <stdio.h> #include <stdbool.h> #include <stdlib.h> #include <time.h> int roll_dice(void); bool play_game(void); int main(void) { char ans = 'n' ; int mres; // main result for(; { mres= play_game(); if (mres != true && mres !=false) play_game(); if (mres == true || mres == false) { printf(" Play again?"); scanf(" %c" , &ans); if( 'y' == ans ) play_game(); else break; } } return 0; } //---------------------------------------------------------------------- int roll_dice(void) { int froll , sroll , sum; // first roll , second roll srand ( time(NULL) ); froll= rand() % 6 + 1; sroll= rand() % 6 + 1; sum= froll + sroll; return sum; } //---------------------------------------------------------------------- bool play_game(void) { int res; for(; { res= roll_dice(); if( 7 == res || 11 == res ) { printf(" You win with : %d score " , res); return true; } else if( 2 == res || 3 == res || 12 == res) { printf(" You lose with : %d score " , res); return false; } else printf(" You rolled: %d " , res); return 2; } } //---------------------------------------------------------------------- > kostas@kostas-SSL:~/PROGRAMS$ ./tests4 You rolled: 10 Play again?y You lose with : 12 score You lose with : 12 score Play again? Γιατι με ξαναβαζει να παιξω εφοσον δεν εχω κερδισει ή χασει??? ( 7 , 11 / 2 , 3 , 12 ) το res ειναι 10 αρα δεν επιστρεφω ουτε true ουτε false . Υ.Γ Ψιλο χαλια μου φαινεται ο κωδικας οπως εχει γραφτει.
ennoeitai Δημοσ. 21 Ιουνίου 2012 Δημοσ. 21 Ιουνίου 2012 Υπάρχει εδώ (C# Language Specification Version 4.0) σε μορφή DOC ή HTML, προσοχή όμως διότι είναι μεν λεπτομερές αλλά και πολύ τεχνικό. Φίλε Directx, σε ευχαριστώ για την απάντηση, αλλά δεν είναι αυτό που θέλω. Το "CSharp Language Specification" (που έκανες λινκ) είναι οι σχεδόν πλήρεις οδηγίες για όλη τη γλώσσα C#. Σου εξηγεί και τι μπορείς να κάνεις και πώς να το κάνεις. Εγώ αυτό που θέλω, είναι κάτι απλά σαν μια λίστα με δυο στήλες ας πούμε. Η μια στήλη να έχει τις εντολές, και η άλλη να λέει συνοπτικά, σε μια φράση, τι κάνει η εντολή. Αυτό που είχα ακούσει ότι υπάρχει, είναι ένα πρόγραμμα, που όταν γράψεις την εντολή, την αναγνωρίζει και σου λέει τη γενική της μορφή και τι κάνει.. κάπως έτσι. Δε θυμόταν και καλά, το παιδί που μου το λεγε, πώς ακριβώς ήταν το πρόγραμμα εκείνο. Υ.Γ. πολύ καλό βέβαια κατά τα άλλα το αρχείο που έκανες λίνκ. Θα μου χρειαστεί αλλού.
akisk Δημοσ. 21 Ιουνίου 2012 Δημοσ. 21 Ιουνίου 2012 Star_Light true θεωρείται οτιδήποτε μη μηδενικό αν θυμάμαι καλά! Γράψε λάθος. Είδα την stdbool.h. edit: στον κώδικα έχεις την play_game() να επιστρέφει bool, δηλαδή μόνο 0 ή 1, αλλά βλέπω στον κώδικα return 2. χμμ... > else printf(" You rolled: %d " , res); return 2; Μήπως αυτό φταίει που το παιχνίδι δε συμπεριφέρεται όπως θέλεις; Δοκίμασε αν θέλεις αυτό. Έβαλα κάποια printf και άλλαξα την play_game να επιστρέφει int. Δυστυχώς δεν μπορώ να το δοκιμάσω τώρα αλλά πιστεύω ότι θα σε βοηθήσει! > #include <stdio.h> #include <stdbool.h> #include <stdlib.h> #include <time.h> #define DEBUG 1 int roll_dice(void); int play_game(void); int main(void) { char ans = 'n' ; int mres; // main result for(; { mres= play_game(); if (mres != true && mres !=false) play_game(); if(DEBUG) printf("mres = %d\n", mres); if (mres == 1 || mres == 0) { printf(" Play again?"); scanf(" %c" , &ans); if( 'y' == ans ) play_game(); else break; } } return 0; } //---------------------------------------------------------------------- int roll_dice(void) { int froll , sroll , sum; // first roll , second roll srand ( time(NULL) ); froll= rand() % 6 + 1; if(DEBUG) printf("froll=%d\n",froll); sroll= rand() % 6 + 1; if(DEBUG) printf("sroll=%d\n",sroll); sum= froll + sroll; return sum; } //---------------------------------------------------------------------- int play_game(void) { int res; for(; { res= roll_dice(); if( 7 == res || 11 == res ) { printf(" You win with : %d score " , res); return true; } else if( 2 == res || 3 == res || 12 == res) { printf(" You lose with : %d score " , res); return false; } else printf(" You rolled: %d " , res); return 2; } } //----------------------------------------------------------------------
Star_Light Δημοσ. 21 Ιουνίου 2012 Δημοσ. 21 Ιουνίου 2012 Ευχαριστω akisk θα το κοιτάξω... edit: Οντως οτι και να τις βαλεις στο return θα το λάβει υποψιν ειτε σαν 0 ειτε σαν 1... αναλογα. Το τεσταρα και μονος μου.
Προτεινόμενες αναρτήσεις