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

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

Δημοσ.

Γεια σας  παιδια..!! Εαν τυχαινει καποιος να γνωριζει απο c++ θα ηθελα να μου προτεινει καποιο καλο site με ασκησεις για καθημερινη εξασκηση. Εχω βρει 2 site αλλα ειναι ψηλο κλαιν και ψαχνω καποιο αλλο..!

 

Ευχαριστω για το χρονο σας!!

  • 6 μήνες μετά...
Δημοσ.

Καλημέρα!Για να μην ανοίγω άλλο θέμα ας συνεχίσω εδώ..Προσπαθώ να γράψω ένα πρόγραμμα που περιστρέφει κυκλικά μια γραμμή ..για να μην γράφω όλο τον κώδικα σε κάποιο μέρος βάζω αυτό :(τα έχω δηλώσει όλα )

for (int i=0;i<n;i++){

b[(i+k)%n]=a

}

όπου κ οι περιστροφές και n το μέγεθος του πίνακα.Δεν μπορεί όμως να μου τον εμφανίσει τον πίνακα b όταν βάζω την εντολή.Μπορεί να δημιουργήσει τον πίνακα b[n] μ' αυτήν την εντολή που του δίνω;

  • Moderators
Δημοσ.

Αποκλείεται αυτή η μία γραμμή κώδικα να είναι ό,τι χρειάζεται κάποιος για να σου απαντήσει. Δοκίμασε για αρχή να βάλεις όλη τη συνάρτηση που γυρνάει τη "γραμμή" και εξήγησέ μας τι ακριβώς είναι αυτή η "γραμμή".

Δημοσ.

Αποκλείεται αυτή η μία γραμμή κώδικα να είναι ό,τι χρειάζεται κάποιος για να σου απαντήσει. Δοκίμασε για αρχή να βάλεις όλη τη συνάρτηση που γυρνάει τη "γραμμή" και εξήγησέ μας τι ακριβώς είναι αυτή η "γραμμή".

Οπότε κάνω επικόλληση όλο τον κώδικα.

 
#include <iostream>
using namespace std;
int n,k;
int main()
    int n;
    cout<<"Dose to megethos tis grammis:";
    cin>>n;
    int a[n];
    for (int i=0; i<n; i++)
    {
        cout<<"Dose to "<<i+1<<" stoixeio tou pinaka:";
        cin>> a;
    }
    cout<<"Dose tin kykliki peristrofi:";
    cin>>k;
    int b[n];
    for (int j=0; j<n; j++)
    {
        b[(j+k)%n]=a[j];
    }
    cout<<b[n];
return 0;
}
 
Το πρόγραμμα δέχεται έναν πίνακα-γραμμή και τον περιστρέφει κατά κ φορές προς τα δεξιά.π.χ. του δίνεις [1,2,3,4,5] με κ=3 και σου δίνει [3,4,5,1,2]. Δεν μου βγάζει όμως έτσι όπως το έχω γράψει τον πίνακα b[n].
  • Moderators
Δημοσ.

Μπορείς να δεις το std::rotate.

Δες τον παρακάτω κώδικα.

#include <vector>
#include <algorithm>
 
int main()
{
    std::vector<int> Sequence = { 1, 2, 3, 4, 5 };

    for (const auto Element : Sequence)
    {
        std::cout << Element << " ";
    }
    std::cout << std::endl;

    std::rotate(Sequence.begin(), Sequence.begin() + 3, Sequence.end());

    for (const auto Element : Sequence)
    {
        std::cout << Element << " ";
    }
    std::cout << std::endl;

    return 0;
}

Μπορείς να διαβάζεις το πόσες θέσεις θα γυρίσει ο container σου και προς ποια κατεύθυνση.

Δημοσ.

Μπορείς να δεις το std::rotate.

Δες τον παρακάτω κώδικα.

#include <vector>
#include <algorithm>
 
int main()
{
    std::vector<int> Sequence = { 1, 2, 3, 4, 5 };

    for (const auto Element : Sequence)
    {
        std::cout << Element << " ";
    }
    std::cout << std::endl;

    std::rotate(Sequence.begin(), Sequence.begin() + 3, Sequence.end());

    for (const auto Element : Sequence)
    {
        std::cout << Element << " ";
    }
    std::cout << std::endl;

    return 0;
}

Μπορείς να διαβάζεις το πόσες θέσεις θα γυρίσει ο container σου και προς ποια κατεύθυνση.

Τέλεια ,οπότε θα το κάνω με vector. Ενώ σε java την έχω δει αυτή τη λύση γιατί στη c++ δεν τον βγάζει τον πίνακα;

  • Moderators
Δημοσ.

Αυτό που έχεις γράψει δεν κάνει καν compile. Όταν δηλώνεις ένα array, πρέπει το μέγεθός του να είναι γνωστό όταν πάει να γίνει το compilation. Εσένα η τιμή του n δεν είναι γνωστή (άσε που έχεις δηλώσει δύο n).

Δημοσ.

 

Οπότε κάνω επικόλληση όλο τον κώδικα.

 
#include <iostream>
using namespace std;
int n,k;
int main()
    int n;
    cout<<"Dose to megethos tis grammis:";
    cin>>n;
    int a[n];
    for (int i=0; i<n; i++)
    {
        cout<<"Dose to "<<i+1<<" stoixeio tou pinaka:";
        cin>> a;
    }
    cout<<"Dose tin kykliki peristrofi:";
    cin>>k;
    int b[n];
    for (int j=0; j<n; j++)
    {
        b[(j+k)%n]=a[j];
    }
    cout<<b[n];
return 0;
}
 
Το πρόγραμμα δέχεται έναν πίνακα-γραμμή και τον περιστρέφει κατά κ φορές προς τα δεξιά.π.χ. του δίνεις [1,2,3,4,5] με κ=3 και σου δίνει [3,4,5,1,2]. Δεν μου βγάζει όμως έτσι όπως το έχω γράψει τον πίνακα b[n].

 

Δεν τυπώνεται έτσι ένας πίνακας στην C++. Πρέπει να τυπώσεις τα στοιχεία ένα ένα.

Δημοσ.

Αυτό που έχεις γράψει δεν κάνει καν compile. Όταν δηλώνεις ένα array, πρέπει το μέγεθός του να είναι γνωστό όταν πάει να γίνει το compilation. Εσένα η τιμή του n δεν είναι γνωστή (άσε που έχεις δηλώσει δύο n).

Compile κάνει ,το τρέχω σ έναν online compiler, τον πίνακα δεν μου επιστρέφει.

Δεν τυπώνεται έτσι ένας πίνακας στην C++. Πρέπει να τυπώσεις τα στοιχεία ένα ένα.

Να βάλω το cout μέσα στο for;Και πάλι δεν τον βγάζει.

Δημοσ.

Compile κάνει ,το τρέχω σ έναν online compiler, τον πίνακα δεν μου επιστρέφει.

Να βάλω το cout μέσα στο for;Και πάλι δεν τον βγάζει.

 

 

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

 

 

Edit: Το αποτέλεσμα μου φαίνεται λίγο "κουλό". Τέσπα ελπίζω να βρείς άκρη.

  • Moderators
Δημοσ.

Είμαι πολύ περίεργος να δω ποιος compiler αφήνει αυτό και γιατί.

int n;
int a[n];

Σε τι το κάνατε compile και πέρασε;

 

EDIT: Το βρήκα.

 

Κεφάλαιο 3.9, σημείωση 5.

 

 

 

A class that has been declared but not defined, an enumeration type in certain contexts (7.2), or an array
of unknown size or of incomplete element type, is an incompletely-defined object type.44 Incompletelydefined
object types and the void types are incomplete types (3.9.1). Objects shall not be defined to have
an incomplete type.
  • Like 1
Δημοσ.

Είμαι πολύ περίεργος να δω ποιος compiler αφήνει αυτό και γιατί.

int n;
int a[n];

Σε τι το κάνατε compile και πέρασε;

 

EDIT: Το βρήκα.

 

Κεφάλαιο 3.9, σημείωση 5.

 

 

 

Εγώ σε Dev C++ IDE. Νομίζω όμως άλλο ζητάει ο TS. Αν μπορείς δώσε link.

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

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

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

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

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

Σύνδεση

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

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