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

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

Δημοσ.

Έτρεξα το πρόγραμμα και φαίνεται σωστό. Επιστρέφει αποτέλεσμα. Δεν έχω καταλάβει τι θές να κάνει ακριβώς...;;

 

 

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
Δημοσ.

Αυτό που κάνεις 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  
Δημοσ. (επεξεργασμένο)

Υπάρχει κάποια συγκεκριμένη διόρθωση που μπορώ να κάνω πάνω στον κώδικα αυτό για να βγάλω αυτό που θέλω ; Προχωράω έτσι κ αλλιώς με 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]<<" ";
  }
}

Επεξ/σία από aleka_gates
Δημοσ.

Αν ο μεταγλωττιστής σου υποστηρίζει 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++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 ,φαντάζομαι υποστηρίζει όλες τις προηγούμενες.Που μπορώ να βρω τα πρότυπα,συναρτήσεις κλπ;

Δημοσ.

Ευχαριστώ!Αυτά τα τεστάκια που κάνω υποστηρίζουν C++14 ,φαντάζομαι υποστηρίζει όλες τις προηγούμενες.Που μπορώ να βρω τα πρότυπα,συναρτήσεις κλπ;

 

Εδώ θα βρεις τα πάντα. Έχει όλη την πρότυπη βιβλιοθήκη ταξινομημένη σε αρχεία.

http://www.cplusplus.com/reference/

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα
  • Δημιουργία νέου...