nickathens Δημοσ. 14 Μαρτίου 2012 Δημοσ. 14 Μαρτίου 2012 Hello, I need your help.. λοιπόν έχω μία συνάρτηση σε c++ όπου μου έχουν δώσει για να απαντήσω κάποιες ερωτήσεις πάνω σε αυτή (είναι κάποιο είδος τεστ για δουλειά στο εξωτερικό και όχι κάποια εργασία για σχολή)... με ρωτάνε τι κάνει, πολυπλοκότητα κτπ κτπ... πρώτα απόλα το τι κάνει η συνάρτηση νομίζω πως είναι ταξινόμηση, δεν ξέρω εάν μπορείτε να μου το επιβεβαιώσετε και εσείς και να μου πείτε εάν είναι κάποιο γνωστό είδος ταξινόμησης γιατί εγώ ακόμα έχω θολό κεφάλι.. δεύτερον μπορείτε να μου εξηγήσετε λίγο το κομμάτι του κώδικα που έχει το "||" γιατί δεν κατάλαβα πως ακριβώς δουλεύει σε εκείνο το σημείο... ευχαριστωωωωώ ... η συνάρτηση είναι: > vοid funcτiοn(inτ *pαrαm1, inτ pαrαm2) { inτ i, j, χ, y, ζ, τemp, τesτ; fοr(i=pαrαm2-1; i>0; --i) { τesτ = 0; χ = y = j = 0; ζ = 1; fοr (; j<i; χ++, ζ++) { if (*(inτ*)(pαrαm1+j) > *(inτ*)(pαrαm1+ζ)) { χ = y + *pαrαm1 - *(pαrαm1+j+1); τemp = *(pαrαm1+j); *(pαrαm1+j) = *(pαrαm1+j+1); y = χ?++χ:χ-2; *(pαrαm1+j+1) = τemp; τesτ=1; if (χ > y) y = τemp+χ || τemp == ++χ; } ++j; } if (!τesτ) breακ; } } ps: Υπάρχει λόγος που χρησιμοποιήθηκαν ελληνικοί χαρακτήρες.. :Ρ ps2: Η συνάρτηση είναι ατόφια όπως μου την έστειλαν (εκτός από κάποιους χαρακτήρες που τους έχω αλλάξει σε ελληνικούς) και δεν παίζει κάποιο λάθος... ps3: εάν κάποιος είναι σίγουρος για την πολυπλοκότητα please let me know
Timonkaipumpa Δημοσ. 14 Μαρτίου 2012 Δημοσ. 14 Μαρτίου 2012 (επεξεργασμένο) Hello, I need your help.. λοιπόν έχω μία συνάρτηση σε c++ όπου μου έχουν δώσει για να απαντήσω κάποιες ερωτήσεις πάνω σε αυτή (είναι κάποιο είδος τεστ για δουλειά στο εξωτερικό και όχι κάποια εργασία για σχολή)... με ρωτάνε τι κάνει, πολυπλοκότητα κτπ κτπ... πρώτα απόλα το τι κάνει η συνάρτηση νομίζω πως είναι ταξινόμηση, δεν ξέρω εάν μπορείτε να μου το επιβεβαιώσετε και εσείς και να μου πείτε εάν είναι κάποιο γνωστό είδος ταξινόμησης γιατί εγώ ακόμα έχω θολό κεφάλι.. δεύτερον μπορείτε να μου εξηγήσετε λίγο το κομμάτι του κώδικα που έχει το "||" γιατί δεν κατάλαβα πως ακριβώς δουλεύει σε εκείνο το σημείο... ευχαριστωωωωώ ... η συνάρτηση είναι: ps: Υπάρχει λόγος που χρησιμοποιήθηκαν ελληνικοί χαρακτήρες.. :Ρ Σε αυτή τη συνάρτηση, δεν βλέπω κάτι περίεργο. Εάν την μελετήσεις λίγο, τότε θα καταλάβεις τι κάνει. By the way, άλλαξα όλους τους χαρακτήρες σε αγγλικούς (included λέξεις όπως function, void, temp) για να είναι 100% ΟΚ. Επεξ/σία 15 Μαρτίου 2012 από Hal9000
nickathens Δημοσ. 14 Μαρτίου 2012 Μέλος Δημοσ. 14 Μαρτίου 2012 Σε αυτή τη συνάρτηση, δεν βλέπω κάτι περίεργο. Εάν την μελετήσεις λίγο, τότε θα καταλάβεις τι κάνει. By the way, άλλαξα όλους τους χαρακτήρες σε αγγλικούς (included λέξεις όπως function, void, temp) για να είναι 100% ΟΚ. σβήσε στο post σου την συνάρτηση φίλε μου. την άλλαξα για να μην βρίσκεις το post με copy paste στο google και εσύ πήγες και την έφτιαξες? σβήσε την συνάρτηση σε παρακαλώ ευχαριστώ
Timonkaipumpa Δημοσ. 14 Μαρτίου 2012 Δημοσ. 14 Μαρτίου 2012 (επεξεργασμένο) σβήσε στο post σου την συνάρτηση φίλε μου. την άλλαξα για να μην βρίσκεις το post με copy paste στο google και εσύ πήγες και την έφτιαξες? σβήσε την συνάρτηση σε παρακαλώ ευχαριστώ Φυσικά και την έφτιαξα. Δεν σε καταλαβαίνω. Γιατί να μην μπορεί κάποιος να την βρει μέσω google; Δεν θες να την βρει κάποιος και να σου δώσει βοήθεια; Για να βρεις βοήθεια δεν έγραψες εδώ; Ξανακάνω copy paste την συνάρτηση και εδώ, εκτός code tags μήπως μπορέσει κανείς να την βρει πιο εύκολα από Google >void function(int *param1 , int param2) { int i, j, x, y, z, temp, test; for(i=param2-1; i>0; --i) { test = 0; x = y = j = 0; z = 1; for (; j<i; x++, z++) { if (*(int*)(param1+j) > *(int*)(param1+z)) { x = y + *param1 - *(param1+j+1); temp = *(param1+j); *(param1+j) = *(param1+j+1); y = x?++x:x-2; *(param1+j+1) = temp; test=1; if (x > y) y = temp+x || temp == ++x; } ++j; } if (!test) break; } } Επεξ/σία 15 Μαρτίου 2012 από Timonkaipumpa
GKNSB Δημοσ. 14 Μαρτίου 2012 Δημοσ. 14 Μαρτίου 2012 Χαχαχαχα τον αγαπώ τον κύριο από πάνω. Φτιάξε και το void function(inτ *param1 , int param2) ξέμεινε ελληνικό
virxen75 Δημοσ. 15 Μαρτίου 2012 Δημοσ. 15 Μαρτίου 2012 φτιάξε και αυτό for(i=param-1; i>0; --i) σε > for(i=param2-1; i>0; --i)
Timonkaipumpa Δημοσ. 15 Μαρτίου 2012 Δημοσ. 15 Μαρτίου 2012 Thnx για τις υποδείξεις. Τα διόρθωσα. Ελπίζω τώρα να βρίσκεται εύκολα ο κώδικας μέσω google για να βρει πιο εύκολα ο φίλος βοήθεια.
virxen75 Δημοσ. 15 Μαρτίου 2012 Δημοσ. 15 Μαρτίου 2012 διορθωσε και το if (!test) breaκ;//<------------το κ είναι στα ελληνικά }
Timonkaipumpa Δημοσ. 15 Μαρτίου 2012 Δημοσ. 15 Μαρτίου 2012 Ωραίος! Έτοιμο και αυτό! Οπότε, έτσι πρέπει να είναι ΟΚ: void function(int *param1 , int param2) { int i, j, x, y, z, temp, test; for(i=param2-1; i>0; --i) { test = 0; x = y = j = 0; z = 1; for (; j<i; x++, z++) { if (*(int*)(param1+j) > *(int*)(param1+z)) { x = y + *param1 - *(param1+j+1); temp = *(param1+j); *(param1+j) = *(param1+j+1); y = x?++x:x-2; *(param1+j+1) = temp; test=1; if (x > y) y = temp+x || temp == ++x; } ++j; } if (!test) break; } }
virxen75 Δημοσ. 15 Μαρτίου 2012 Δημοσ. 15 Μαρτίου 2012 και για να μην μεινει αναπαντητο το τι κανει ο παραπάνω κώδικας.... αρκεί να αφαιρέσουμε τα "σκουπίδια" που μας "παραπλανούν" έτσι έχουμε > #include <stdio.h> void function(int *param1 , int param2) { int i, j, z, temp, test; for(i=param2-1; i>0; --i) { test = 0; j = 0; for (z=1; j<i; z++) { if (param1[j] > param1[z]) { temp = param1[j]; param1[j] = param1[j+1]; param1[j+1] = temp; test=1; } ++j; } if (!test) break; } } int main(){ int param[]={20,15,10,1,2,3,9,8,7,6,5}; function(param,11); for (int i=0;i<11;i++) printf("%d ",param[i]); getchar(); } το οποίο όντως κάνει ταξινόμηση!
migf1 Δημοσ. 15 Μαρτίου 2012 Δημοσ. 15 Μαρτίου 2012 Εμένα εξαρχής η απορία μου ήταν γιατί δεν δοκιμάστηκε πρώτα η συνάρτηση σε μια main() (όπως έκανε πριν λίγο ο virxen) πριν καν τεθεί ως ερώτηση! Σίγουρα θα είχε βρει την απάντηση ο ts σε χρόνο υπο-εκατονταπλάσιο από τον χρόνο που σπατάλησε για να γεμίσει τον κώδικα με ελληνικούς χαρακτήρες! EDIT: On a 2nd thought, με search & replace έγιναν οι αντικαταστάσεις, αλλά η απορία παραμένει
Stavros_Ribo Δημοσ. 16 Μαρτίου 2012 Δημοσ. 16 Μαρτίου 2012 Όσο για την πολυπλοκότητα νομίζω: Αν πάρουμε σαν βασική πράξη την param1[j] > param1[z], τότε: O(param22) i<=param2-1...............j<i Σ(..................Σ(O(1)........) = ... = O(param22) i=1...........................j=0 (Δεν μπορούμε να γράψουμε σε LATEX ......?)
Timonkaipumpa Δημοσ. 16 Μαρτίου 2012 Δημοσ. 16 Μαρτίου 2012 (Δεν μπορούμε να γράψουμε σε LATEX ......?) Αρκετά καλή ιδέα!!! Γιατί δεν το προτείνεις στην ενότητα για τις προτάσεις για το site; Θα ήταν αρκετά καλό να μπορεί κανείς να εισάγει "κώδικα" από LaTeX και να τυπώνεται. Ίσως σε τίποτα tags, π.χ. [latex] ο κώδικας latex[/latex]
Stavros_Ribo Δημοσ. 16 Μαρτίου 2012 Δημοσ. 16 Μαρτίου 2012 Ίσως σε τίποτα tags, π.χ. [latex] ο κώδικας latex[/latex] Αυτό ακριβώς. Υπάρχει σε πολλά μαθηματικά και μη forums, απλά προσπαθώ να σκεφτώ αν θα ήταν τόσο χρήσιμο στο insomnia. Μία στις τόσες όμως ίσως χρειαστεί, και δεν νομίζω ότι θα ήταν τόσο δύσκολο να μπει μία τέτοια επιλογή.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα