Εργαστήριο Τεχνολογίας Λογισμικού
0 votes
378 views

Καλησπέρα! Καλή χρονιά, με υγεία και χαρές σε όλους! Έχω μαζέψει με τον καινούργιο χρόνο κάποιες απορίες λύνοντας ασκήσεις του βιβλίου τις οποίες θα θέσω σε λίγα διαδοχικά threads, ξεκινώντας από αυτό. Έχω έναν κώδικα από άσκηση του βιβλίου (συγκεκριμένα του Χατζηγιαννάκη, σελ. 497, άσκηση 14.21) η οποία θέλει να δημιουργήσουμε μια τράπουλα με 52 κάρτες. Ο κώδικας που έφτιαξα δίνεται παρακάτω ωστόσο κολλάω σε δύο πράγματα στα οποία θα ήθελα μια μικρή(?) βοήθεια:

α) Θέλω αυτά που έχει στη main, όπου δίνουν τιμές στις μεταβλητές μέλη για τη δημιουργία των καρτών, να τα βάλω στον constructor της κλάσης trapoula. Μια ιδέα πως να το κάνω αυτό και να δουλέψει; Επίσης, έχω μπλέξει λίγο τον constructor της κλάσης trapoula αφού χρησιμοποιώ μεν τις κάρτες από την κλάση card ωστόσο τον αριθμό των καρτών τον έχω βάλει (αδίκως?) στον contructor της κλάσης trapoula.

β) Θέλω αντί να χρησιμοποιήσω strings να χρησιμοποιήσω enums, ωστόσο δεν ξέρω πως να δημιουργήσω getters και setters, αλλά και πως να φτιάξω τον constructor με τη xρήση των enum. Κάποια βοήθεια;

// Headers 
#include <iostream>
#include <string>

// Namespace
using namespace std;


class card_deck {
    
    int cards{};

public:
    card_deck() {};
    card_deck(int n) : cards(n) {};
    card cards[52];

    // Card shuffle method 
    void cardshuffle(card cards[52]) {    
       for (int i = 0; i < 52; i++)
        {
            // Random for remaining positions
            int r = i + (rand() % (52 - i));  
            // Swap cards within the card deck
            swap(cards[i], cards[r]);    
        }
    };
    void display(card cards[52]) {
        for (int i = 0; i < 52; i++)
            cout << cards[i].get_ctype() << " " << cards[i].get_cfigure() << " ";   //Print card deck cards 
        cout << endl;
    };
    
}carddeck[2];

class card {
    
    string card_type{};
    string card_figure{};

public:
    card() {};
    card(string t, string f) : card_type(t), card_figure(f) {};
    void set_prop(string t, string f) { card_type = t; card_figure = f; };
    string get_ctype() { return card_type; };
    string get_cfigure() { return card_figure; };
}cards[52];


int main()
{
 // Απο εδώ και κάτω θέλω να μεταφερθεί στον constructor της κλάσης trapoulas
    int i;
    
    for (i = 0; i < 52; i++) {                  
        string k, l;
        cout << " Give card type" << endl;
        cards[i].set_prop(k,l);
    }
    for (i = 0; i < 52; i++) {
        cout << " Card type is" << endl;
        cards[i].get_ctype();
        cards[i].get_cfigure();
    }


    return 0;
}
  
in progintro by (820 points)
edited by | 378 views

Please log in or register to answer this question.

301 questions

289 answers

288 comments

899 users