aleka_gates Δημοσ. 8 Αυγούστου 2017 Δημοσ. 8 Αυγούστου 2017 Έτρεξα το πρόγραμμα και φαίνεται σωστό. Επιστρέφει αποτέλεσμα. Δεν έχω καταλάβει τι θές να κάνει ακριβώς...;; Edit: Το αποτέλεσμα μου φαίνεται λίγο "κουλό". Τέσπα ελπίζω να βρείς άκρη. Αυτό που θέλω να κάνει είναι να κάνει περιστροφή στα στοιχεία προς τα δεξιά όσες φορές του δώσεις.Π.χ. του δίνεις [5,9,2,6,7] και κ=2 τότε επιστρέφει [6,7,5,9,2] ενώ για κ=3 επιστρέφει [2,6,7,5,9]. Είμαι πολύ περίεργος να δω ποιος compiler αφήνει αυτό και γιατί. int n; int a[n]; Σε τι το κάνατε compile και πέρασε; EDIT: Το βρήκα. Κεφάλαιο 3.9, σημείωση 5. http://cpp.sh/6fqxsn
Moderators Kercyn Δημοσ. 8 Αυγούστου 2017 Moderators Δημοσ. 8 Αυγούστου 2017 Αυτό που κάνεις print είναι το b[5] (αν υποθέσουμε ότι το n είναι 5), το οποίο δεν υπάρχει. Τυχερός είσαι που δε σου πετάει segfault. The system uses GCC 4.9.2, with Boost 1.55 available. GCC 4.9.2 October 30, 2014
aleka_gates Δημοσ. 8 Αυγούστου 2017 Δημοσ. 8 Αυγούστου 2017 (επεξεργασμένο) Υπάρχει κάποια συγκεκριμένη διόρθωση που μπορώ να κάνω πάνω στον κώδικα αυτό για να βγάλω αυτό που θέλω ; Προχωράω έτσι κ αλλιώς με vector. edit: #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> myVector; myVector.push_back(3); myVector.push_back(5); myVector.push_back(7); myVector.push_back(9); myVector.push_back(2); for(unsigned i=0;i<myVector.size();i++) { cout<<myVector[i]<<" "; } cout<<endl; int k; cout<<"Insert the times of right rotation:"; cin>>k; rotate(myVector.rbegin(),myVector.rbegin()+k, myVector.rend()); for(unsigned i=0;i<myVector.size();i++) { cout<<myVector[i]<<" "; } } Επεξ/σία 8 Αυγούστου 2017 από aleka_gates
GReaperEx Δημοσ. 9 Αυγούστου 2017 Δημοσ. 9 Αυγούστου 2017 Αν ο μεταγλωττιστής σου υποστηρίζει C++11, πχ GCC 4.4 και πάνω, μπορείς να κάνεις τον κώδικα πιο απλό, έτσι: #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> myVector = { 3, 5, 7, 9, 2 }; for(int num : myVector) { cout << num << " "; } cout << endl; int k; cout << "Insert the times of right rotation:"; cin >> k; rotate(myVector.rbegin(), myVector.rbegin()+k, myVector.rend()); for(int num : myVector) { cout << num << " "; } return EXIT_SUCCESS; }
aleka_gates Δημοσ. 9 Αυγούστου 2017 Δημοσ. 9 Αυγούστου 2017 Αν ο μεταγλωττιστής σου υποστηρίζει C++11, πχ GCC 4.4 και πάνω, μπορείς να κάνεις τον κώδικα πιο απλό, έτσι: #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> myVector = { 3, 5, 7, 9, 2 }; for(int num : myVector) { cout << num << " "; } cout << endl; int k; cout << "Insert the times of right rotation:"; cin >> k; rotate(myVector.rbegin(), myVector.rbegin()+k, myVector.rend()); for(int num : myVector) { cout << num << " "; } return EXIT_SUCCESS; } Ευχαριστώ!Αυτά τα τεστάκια που κάνω υποστηρίζουν C++14 ,φαντάζομαι υποστηρίζει όλες τις προηγούμενες.Που μπορώ να βρω τα πρότυπα,συναρτήσεις κλπ;
GReaperEx Δημοσ. 9 Αυγούστου 2017 Δημοσ. 9 Αυγούστου 2017 Ευχαριστώ!Αυτά τα τεστάκια που κάνω υποστηρίζουν C++14 ,φαντάζομαι υποστηρίζει όλες τις προηγούμενες.Που μπορώ να βρω τα πρότυπα,συναρτήσεις κλπ; Εδώ θα βρεις τα πάντα. Έχει όλη την πρότυπη βιβλιοθήκη ταξινομημένη σε αρχεία. http://www.cplusplus.com/reference/
aleka_gates Δημοσ. 10 Αυγούστου 2017 Δημοσ. 10 Αυγούστου 2017 Εδώ θα βρεις τα πάντα. Έχει όλη την πρότυπη βιβλιοθήκη ταξινομημένη σε αρχεία. http://www.cplusplus.com/reference/ Σ'ευχαριστώ!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα