joanna1990 Δημοσ. 14 Ιανουαρίου 2012 Δημοσ. 14 Ιανουαρίου 2012 Καλησπέρα και καλή χρονιά, Καταρχάς να σας ενημερώσω πως ξέρω απειροελάχιστα πράγματα για τη c++. Θέλω να φτιάξω έναν πίνακα 20 θέσεων(σωρό μεγίστων). Κάθε στοιχείο του σωρού είναι ένα ζεύγος που αποτελείται από έναν χαρακτήρα και μία ακέραια τιμή από 1 έως 99 η οποία καθορίζει την προτεραιότητα του χαρακτήρα πχ. (j, 56). Πως μπορώ να φτιάξω έναν τέτοιο πίνακα; Γίνεται με χρήση αντικειμένων όπως στη java;
defacer Δημοσ. 15 Ιανουαρίου 2012 Δημοσ. 15 Ιανουαρίου 2012 Πρώτα πρέπει να φτιάξεις μια struct (ή class, είναι πρακτικά το ίδιο) που αντιπροσωπεύει το ζεύγος τιμών που θέλεις: >struct char_and_priority { char character; int priority; } Μετά θέλεις να κάνεις ένα πίνακα από τα παραπάνω. Παρόλο που όταν λέμε πίνακα εννοούμε κάτι του στυλ int arr[20], στην πράξη καλύτερα θα ήταν να χρησιμοποιήσεις ένα std::vector, που είναι το αντίστοιχο του java.util.ArrayList. Aυτό γίνεται ως εξής: >#include <vector> std::vector<char_and_priority> my_vector; // και στη συνέχεια το χρησιμοποιείς ως char_and_priority cap; my_vector.push_back(cap); if(my_vector[0].character == 'a') // κλπ Για τη συγκεκριμένη περίπτωση ίσως θα ήταν καλύτερα ακόμα να χρησιμοποιήσεις κάτι άλλο όπως για παράδειγμα std::map, αλλά δε θέλω να σε μπερδέψω οπότε ξεκίνα με κάτι κοντά σ' αυτά που ξέρεις.
erimitis Δημοσ. 15 Ιανουαρίου 2012 Δημοσ. 15 Ιανουαρίου 2012 Για κοίταξε αυτή την λύση #include <iostream> using namespace std; #include <iomanip> using std::setw; //ÁÖÇÍÅÉ ÊÁÌÐÏÓÏ ÊÅÍÏ #include <cstring> #include <list> class Player { public: string s1; int s2 ; }; ///////////////////////////////DayWeekCove; list<Player> players; void Vprint(){cout << "Stoixeia\n"; list<Player>::iterator i; for(i=players.begin(); i != players.end(); ++i) {cout << (*i).s1 << " "<< (*i).s2 ; // print member cout << endl; } cout << endl; } int main( ) { Player temp; temp.s1="B"; temp.s2=15; players.push_back( temp ); temp.s1="A"; temp.s2=5; players.push_back( temp ); temp.s1="C"; temp.s2=7; players.push_back( temp ); Vprint(); system("pause"); }
παπι Δημοσ. 16 Ιανουαρίου 2012 Δημοσ. 16 Ιανουαρίου 2012 Ποιος κομπλαϊλερ δεν δεχεται Ελληνικα ;;;;;;
joanna1990 Δημοσ. 16 Ιανουαρίου 2012 Μέλος Δημοσ. 16 Ιανουαρίου 2012 Για κοίταξε αυτή την λύση #include <iostream> using namespace std; #include <iomanip> using std::setw; //ÁÖÇÍÅÉ ÊÁÌÐÏÓÏ ÊÅÍÏ #include <cstring> #include <list> class Player { public: string s1; int s2 ; }; ///////////////////////////////DayWeekCove; list<Player> players; void Vprint(){cout << "Stoixeia\n"; list<Player>::iterator i; for(i=players.begin(); i != players.end(); ++i) {cout << (*i).s1 << " "<< (*i).s2 ; // print member cout << endl; } cout << endl; } int main( ) { Player temp; temp.s1="B"; temp.s2=15; players.push_back( temp ); temp.s1="A"; temp.s2=5; players.push_back( temp ); temp.s1="C"; temp.s2=7; players.push_back( temp ); Vprint(); system("pause"); } Το ετρεξα αυτο αλλα μου βγαζει λαθος στο "{cout << (*i).s1 << " "<< (*i).s2 ;" Συγκεκριμενα μου βγαζει binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion) 24 HelloJoanna
erimitis Δημοσ. 16 Ιανουαρίου 2012 Δημοσ. 16 Ιανουαρίου 2012 Το έτρεξα στον Dev-C++ 5.0 beta 9.2 (4.9.9.2) (9.0 MB) Θα το βρείς http://www.bloodshed.net/dev/devcpp.html Αν πάλι υπάρχει πρόβλημα τα λέμε
defacer Δημοσ. 17 Ιανουαρίου 2012 Δημοσ. 17 Ιανουαρίου 2012 "Προφανώς" από το error message απλά λείπει #include <string>. Δεν ξέρω τι καταλαβαίνετε με τα copy paste όπου ο ένας δε λέει ούτε καν τι κάνει αυτό που δίνει (πόσο μάλλον γιατί) και ο άλλος δεν μπορεί ούτε να το κάνει να τρέξει.
monkey90 Δημοσ. 17 Ιανουαρίου 2012 Δημοσ. 17 Ιανουαρίου 2012 Γίνεται να το κάνεισ και κάπως έτσι. > static const int MAXSIZE=20; char_and_priority array[MAXSIZE]; class char_and_priority { public: char character; int priority; }; int main(int argc, char** argv) { . . . }
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα