//Ahmad Furqan Attari //P7.6 #include#include //for srand(), rand() #include //for time for srand() #include //for _getch() using namespace std; enum Suit { clubs, diamonds, hearts, spades }; //from 2 to 10 are integers without names const int jack = 11; const int queen = 12; const int king = 13; const int ace = 14; //////////////////////////////////////////////////////////////// class card { private: int number; //2 to 10, jack, queen, king, ace Suit suit; //clubs, diamonds, hearts, spades public: card() //constructor { } void set(int n, Suit s) //set card { suit = s; number = n; } void display(); //display card }; //-------------------------------------------------------------- void card::display() //display the card { if (number >= 2 && number <= 10) cout << number; else switch (number) { case jack: cout << "J"; break; case queen: cout << "Q"; break; case king: cout << "K"; break; case ace: cout << "A"; break; } switch (suit) { case clubs: cout << static_cast (5); break; case diamonds: cout << static_cast (4); break; case hearts: cout << static_cast (3); break; case spades: cout << static_cast (6); break; } } //////////////////////////////////////////////////////////////// void main(void) { card deck[52]; int j; cout << endl; for (j = 0; j<52; j++) //make an ordered deck { int num = (j % 13) + 2; //cycles through 2 to 14, 4 times Suit su = Suit(j / 13); //cycles through 0 to 3, 13 times deck[j].set(num, su); //set card } cout << "\nOrdered deck : \n"; for (j = 0; j<52; j++) //display ordered deck { deck[j].display(); cout << " "; if (!((j + 1) % 13)) //newline every 13 cards cout << endl; } srand(time(NULL)); //seed random numbers with time for (j = 0; j<52; j++) //for each card in the deck, { int k = rand() % 52; //pick another card at random card temp = deck[j]; //and swap them deck[j] = deck[k]; deck[k] = temp; } cout << "\nPlayers' Hands : \n"; cout << "Player 1:"; for (j = 0; j<52; j++) //display shuffled deck { deck[j].display(); cout << ", "; if (!((j + 1) % 13)) //newline every 13 cards { cout << endl; if (j<51) cout << "Player " << (j + 1) / 13 + 1 << ":"; } } _getch(); } //end main
Friday, 5 December 2014
Chapter 7,Problem 6:Object Oriented Programming by Robert Lafore in C++ Solution Manual
Chapter 7,Problem 5:Object Oriented Programming by Robert Lafore in C++ Solution Manual
//Ahmad Furqan Attari //p7.5 #include#include #include using namespace std; const int SIZE = 10; class fraction { private: int num, den; public: fraction() {} fraction(int n, int d) :num(n), den(d) { lowterms(); } void take_frac(void) { char ch; cin >> num >> ch >> den; } void show_frac(void) { cout << setw(2) << num << "/" << setw(2) << den; } void lowterms(void) // change ourself to lowest terms { long tnum, tden, temp, gcd; tnum = labs(num); // use non-negative copies tden = labs(den); // (needs cmath) if (tden == 0) // check for n/0 { cout << "Illegal fraction : division by 0"; exit(1); } else if (tnum == 0) // check for 0/n { num = 0; den = 1; return; } // this ‘while’ loop finds the gcd of tnum and tden while (tnum != 0) { if (tnum < tden) // ensure numerator larger { temp = tnum; tnum = tden; tden = temp; } // swap them tnum = tnum - tden; // subtract them } gcd = tden; // this is greatest common divisor num = num / gcd; // divide both num and den by gcd den = den / gcd; // to reduce frac to lowest terms } void add_frac(fraction a, fraction b) { num = a.num*b.den + a.den*b.num; den = a.den*b.den; lowterms(); } void sub_frac(fraction a, fraction b) { num = a.num*b.den - a.den*b.num; den = a.den*b.den; lowterms(); } void mul_frac(fraction a, fraction b) { num = a.num*b.num; den = a.den*b.den; lowterms(); } void div_frac(fraction a, fraction b) { num = a.num*b.den; den = a.den*b.num; lowterms(); } }; void main(void) { fraction f[SIZE],sum,divisor,result; char ch; int i=0; do { cout << "Enter a fraction: "; f[i].take_frac(); i++; cout << "Enter again?(y/n):"; ch = _getche(); cout << endl; } while (ch == 'y'&& i < SIZE); sum = { 0, 1 }; for (int j = 0; j < i; j++) { sum.add_frac(sum, f[j]); } divisor = { 1, i + 1 }; result.div_frac(sum, divisor); cout << "Average of entered fractions:"; result.show_frac(); _getch(); }
Subscribe to:
Posts (Atom)