COMP 220 DERVY Tutorial / Uoptutorial

COMP 220 ENTIRE COURSE

For more course tutorials visit

www.uoptutorial.com

COMP 220 iLab 1 Two-Dimensional Arrays Lab Report and Source Code
COMP 220 iLab 2 Resistor Lab Report and Source Code
COMP 220 iLab 3 Bank Account Lab Report and Source Code
COMP 220 iLab 4 Composition Lab Report and Source Code
COMP 220 iLab 5 Lab Report and Source Code
COMP 220 iLab 6 Overloaded Operators Lab Report and Source Code

COMP 220 iLab 7 Polymorphism Lab Report and Source Code

_____________________________________________________________

COMP 220 iLab 1 Two

For more course tutorials visit

www.uoptutorial.com

BlackJack Table

Specification: Include a brief description of what the program accomplishes, including its input, key processes, and output.

There is always a dealer in the game. At the start of the game, the dealer’s first card will not be shown or displayed. The second card will be displayed. The dealer may draw additional cards. The dealer must use a random-number generator to determine the maximum number of cards the dealer will draw--a value between 0 and 3. In other words, the dealer is a computer player. The dealer does not show all the cards or the total until all the players have either gone bust (over 21) or hold (no more cards drawn). There must be at least one other player (you) and up to a maximum of four other players (all played by you).

. On a player’s turn, that player may either draw a card or hold. Once a player holds, he or she should not be asked to draw another card during this game.

All the cards for each player, including the first card dealt, are displayed, along with the suit symbol: spades , clubs , hearts , or diamonds . Each game will start with a new, 52-card deck, which is modeled on a real deck of cards.

. The card deck has 52 cards with no jokers.

The card deck is represented by a two-dimensional array of data-type character, where the first dimension represents the suit and the second dimension represents the card in the suit, such as the following. i. char CardDeck[4][13]; At the start of each game, each element of the two-dimensional array is initialized to a value of "", or the "space" character. The deck has four suits, represented by the following dimension indices.

.

i. ii. iii. Each suit has 13 cards: 2, 3, 4, 5, 6, 7, 8,9 ,10, jack, queen, king, and ace. Each card in a suit is represented by the following dimension indices.

. 2 card

i. 3 card ii. 4 card iii. 5 card iv. 6 card v. 7 card vi. 8 card vii. 9 card viii. 10 card ix. jack x. queen xi. king xii. ace All the number cards are worth their face value (i.e., a 3 of diamonds is worth 3). All face cards are worth 10. An ace is worth either 1 or 11. Your final-score calculation must be able to handle this correctly for both the dealer and each player. A random-number generator must be used to select the suit and the card in the suit.

. Once a card and suit are selected, the program should check if the value of that array element is a "space."

If the array set the element equal to an integer, identifying the dealer or the player. 1 2 3 4 If the array element ! = "space," then the random-number and card-checking process should repeat until a "card" or an array element is selected that Once a card is drawn during a game, it cannot be drawn again. When the program first starts, it should prompt the user, asking if he or she wants to play a game of Blackjack or exit the program. If the user inputs to play the game, the next decision should be 1, 2, 3, or 4 players. At the start of the game, the dealer and each player should be dealt two cards. One of the dealer’s card's value and suit should not be displayed. The number of cards that the dealer will draw during a game should be determined by a random-number generator that will return a value of 0, 1, 2, or 3 cards to be drawn. Each player may then draw a card or hold. If, after drawing a card, any player or the dealer goes over a score of 21, he or she is not allowed to draw any more cards during the game. Once a player holds, he or she should not be asked to draw a card again during the game. The game continues until one of the following conditions occur:

. all players have declared hold;

all players and the dealer have gone over 21; a maximum of five cards total are held by any player at the end of a round of card draws; or any combination of the above. The display should show each player’s (and the dealer’s) hand and update the display after each round of card draws.

spades , clubs , hearts , and diamonds

Example

Card 1

Card 2

Card 3

Card 4 Card 5

Dealer:

?

10

Player 1:

A

2

Player 2:

J

Q

Player 3:

3

8

At the end of a game, the display should be repeated, with the addition of win or lose and an updated balance.

Example

Card 1

Card 2

Card 3

Card 4

Card 5

Total

Stats

Dealer:

J

10

20

Lose

Player 1:

K

2

5

1

5

23

Lose

Player 2:

J

Q

20

Lose

Player 3:

3

8

K

21

Win!

The program should then ask each player if he or she wants to play again or leave the game. The game continues with a new round, as long as there is one player remaining. If there are no remaining players, the program should exit.

_____________________________________________________________COMP 220 iLab 2 Resistor Lab Report and Source Code

For more course tutorials visit

www.uoptutorial.com

Scenario and Summary


This lab requires you to create a multifile C++ project in order to design and implement an object-oriented program using a class to model the characteristics and function of a resistor.

Deliverables

Submit a single Notepad file containing the source code for Exercise 1 to the Dropbox for Week 2. Your source code should use proper indentation and be error free. Be sure that your last name and the lab number are part of the file name; see the following example: YourLastName_Lab1.txt.

Each program should include a comment section that includes (at a minimum) your name, the lab and exercise number, and a description of what the program accomplishes. Submit a lab report (a Word document) containing the following information to the Dropbox for Week 2. Include your name and the exercise number. Specification: Include a brief description of what the program accomplishes, including its input, key processes, and output. Test Plan: Include a brief description of the method you used to confirm that your program worked properly. If necessary, include a clearly labeled table with test cases, predicted results, and actual results. Summary and Conclusions: Include a summary of what the lab demonstrated and any conclusions drawn from the testing of the lab program. Answers to Lab Questions: Answer any and all lab questions included in the lab steps.

Summary: Write a statement summarizing your predicted and actual output. Identify and explain any differences.

Conclusions: Write at least one nontrivial paragraph that explains, in detail, either a significant problem you had and how you solved it or, if you had no significant problems, something you learned by doing the exercise.

Each lab exercise should have a separate section in the lab-report document.

Your lab grade will be based upon

the formatting of your source code; the use of meaningful identifiers; the extent of internal documentation; the degree to which an exercises’ specifications are met; and the completeness of your lab report.

i L A B S T E P S

STEP 1: Create a Multifile Project

Objective: Create a C++ console application that will model the characteristics of a resistor.

Create a multifile project. Create and add to the project an h file containing the resistor-class definition. Create and add to the project a cpp file containing the implementation of the class-member functions. Create and add to the project a ccp file containing the main() function, which will instantiate a resistor object and test its member functions.

STEP 2: Required Class Members

The resistor class will, at minimum, have members that do the following.

store the nominal resistance value of a resistor store the tolerance of a resistor initialize any and all nominal-resistance values to correct, EIA, nonzero values that are greater than 0 and less than 1,000,000 ohms initialize any and all resistance-tolerance values to correct, E12, E24, E48, or E96 resistance-tolerance values allow the nominal-resistance and tolerance values of a resistor object to be changed by the user All member functions should have a test message stating the name of the function. All the test messages should be displayed or not displayed, depending on the value of a Boolean variable declared in main(). If the Boolean , display the message. If the Boolean , do not display the message.

STEP 3: Program Operations

Function main() should instatiate two objects of class resistor. Function main() should display the current values of all resistor objects. Function main() should also calculate and display the minimum and maximum in-tolerance resistance values of each resistor object from the resistor data members. Function main() should allow the user to change the values of the nominal resistance and the resistor tolerance of both resistor objects, and it should also correctly handle out of numeric-range input. Main() is also responsible for making sure that the user can successfully enter only correct, EIA resistance and tolerance values. The user should be given the following data-entry choices: accept current EIA values for resistance and tolerance; The function main() should display the new, modified values of the resistor object, including the new min and max in-tolerance resistance values. The function main() should be executed twice: once with the test messages displayed and once without.

STEP 4: Lab Questions

You are not required to copy the question text into your document, but all answers should be listed with the question number they answer.

List the complete reference-source information for where you found the EIA standard resistor value and tolerance information. How was this reference discovered and where? The constructor requires the initialization values for the nominal resistance and the tolerance when an object is instantiated to be a correct E-series resistance and tolerance combination. Describe how this was accomplished in your program design and implementation. In the lab, you were required to provide mutator functions to change the nominal-resistance and tolerance values of a resistor object. Describe how this was accomplished so that the user could not enter an invalid nominal-resistance and E-series tolerance combination. Describe how this process was different and/or similar to how you implemented this validation in the class constructor.

_____________________________________________________________COMP 220 iLab 3 Bank Account Lab Report and Source Code

For more course tutorials visit

www.uoptutorial.com

This lab introduces you to writing a C++ program to implement the concept of class inheritance using different types of bank accounts as a model. In this lab, you will create a base class, called CBankAccount, and two additional classes (each derived from CBankAccount), called CSavingsAccount and CCheckingAccount. You will then test the operations of each class in function main() to simulate the transactions of both a checking account and a savings account.

Deliverables

Submit a single Notepad file containing the source code for all the files of the lab to the Dropbox for Week 3. Your source code should use proper indentation and be error free. Be sure that your last name and the lab number are part of the file name: for example, YourLastName_Lab3.txt.

Each program should include a comment section that includes (minimally) your name, the lab and exercise number, and a description of what the program accomplishes. Submit a lab report (a Word document) containing the following information to the Dropbox for Week 3. Include your name and the lab or lab-exercise number. Specification: Include a brief description of what the program accomplishes, including its input, key processes, and output. Test Plan: Include a brief description of the method you used to confirm that your program worked properly. If necessary, include a clearly labeled table with test cases, predicted results, and actual results. Summary and Conclusions: Includea summary of what the lab demonstrated and any conclusions drawn from the testing of the lab program. Provide a UML diagram showing the base and the derived class relationships, access specifiers, data types, and function arguments. Answers to Lab Questions: Answer any and all of the lab questions included in the lab steps.

Summary: Write a statement summarizing your predicted and actual output. Identify and explain any differences.

Conclusions: Write at least one nontrivial paragraph that explains, in detail, either a significant problem you had and how you solved it or, if you had no significant problems, something you learned by doing the exercise.

Each lab exercise should have a separate section in the lab-report document.

Your lab grade is based upon

the formatting of your source code; the use of meaningful identifiers; the extent of internal documentation; the degree to which an exercises’ specifications are met; and the completeness of your lab report.

i L A B S T E P S

STEP 1: Create the Multifile Project and the Main (Base) Class

Create a new project that consists of the base class BankAccount.

The BankAccount class should contain, at minimum, the following members.

It should contain data members to store a bank customer's balance and account number. These should be of different and appropriate data types. It should have function members that do the following: set the account number; return the account number; return the account balance; deposit money into the account; and withdraw money from the account.

STEP 2: Create the CheckingAccount Class Derived From the BankAccount Class

The class CheckingAccount should contain, at a minimum, the following members.

It should contain a data member to keep track of the number of withdrawal transactions made on the account. Whenever a withdrawal is made, this number should be incremented. Override the base class, withdraw-money function, and add the capability to deduct transaction fees from an account using the following guidelines. The checking account is allowed three free transactions. For each successful withdrawal transaction past the three free transactions, there will be a service fee of 50 cents per transaction. The service fee should be deducted from the account balance at the time the transaction is made. If there are insufficient funds in the account balance to cover the withdrawal plus the service fee, the withdrawal should be denied. The function should return a value to indicate whether the transaction succeeded or failed. Transaction fees should be deducted only from successful transactions, but the transaction count should be incremented in either case.

STEP 3: Create the SavingsingAccount Class Derived From the BankAccount Class

The class CheckingAccount should contain, at a minimum, the following members.

It should contain a data member to hold the daily interest rate. The daily interest rate can be calculated from a yearly interest rate by dividing the annual rate by 365. It should contain a data member to keep track of the number of days since the last transaction or balance inquiry. This should be updated using a random-number generator (reference Lab 1) that will return a value representing the number of days between 0 and 7, inclusive. We will assume that this bank is open every day of the year. It should contain a data member to hold the interest earned since the last transaction or balance inquiry. It should contain a function member to set the annual interest rate. Utilize the base-class functions for both withdrawal and deposit operations for the savings account. Override the base-class-balance inquiry function to add calculating and adding interest to the account based on the daily interest rate, the current balance of the account, and the number of days since the last balance inquiry. This should be called only when a balance inquiry is made, not when a deposit or withdrawal transaction or an account number inquiry is made. If there are insufficient funds in the account balance to cover a withdrawal, the withdrawal should be denied. The number of days since the last transaction or balance inquiry and the interest calculations should still be made. A value should be returned to indicate whether a withdrawal transaction succeeded or failed. It should contain a function member to return the interest earned since the last transaction or balance inquiry. It should contain a function member to return the number of days since the last transaction or balance inquiry.

STEP 4: Test Program Operation

All data-input and data-display operations (cin and cout) should be done in the function main() test program. The test program should create one checking account and one savings account with initial balances of $100 each using the functions defined in the class definitions. The test program should also assign a unique, five-digit account number to each account and assign an annual interest rate of 3% for the savings account. The test program should then display a menu that allows the user to select which option is to be performed on which account, including the following. Make a deposit and specify the amount to a selected or an entered account. Make a withdrawal and specify the amount to a selected or an entered account. Return the balance of a selected or an entered account. For deposit transactions, withdrawal transactions, and balance inquiries, the updated balance and any fees charged or interest earned should also be displayed. For the savings account, the number of days since last transaction should be displayed. Exit the program. Each account operation should display the account number and the account type.

Lab Questions

Please answer all the lab questions in the text file that is to be turned into the Dropbox. You are not required to copy the question text into your document, but all answers should be listed with the question number they answer.

Were any base-class functions called or overloaded in either of the derived classes? If so, list which class and which function, and explain why they were either called or overloaded. Were any derived-class functions not explicitly called by the test program? If so, list which class and function, and explain why this was done. Which access attribute was used for each of the classes derived from the base class? Why was this access attribute chosen?

_____________________________________________________________COMP 220 iLab 4 Composition Lab Report and Source Code

For more course tutorials visit

www.uoptutorial.com

This lab requires you to use C++ class composition to implement a single pole-filter design program. The program will allow the user to specify resistor and capacitor values and filter type.

Once all the user parameters are specified, the program will return the cutoff frequency values for the filter. Composition may be thought of as a has-a relationship for objects, as compared to inheritance, which may be described as an is-a relationship for objects.

You are required to use two component classes: one for a resistor object and one for a capacitor object. You are then to define and implement a filter class that will contain one object of each the resistor and the capacitor classes in order to create the filter and its characteristics.

The Resistor class created in the Week 2 iLab may be used both as the class definition for the resistor object and as a template or a guide for the capacitor-class definition. The lab also requires you to implement your program in a multiple-file project and create both cpp and h files for each class defined. In addition, the program will have the capacity to save all filter parameters to a text file and read previously designed filter parameters from a text file.

_____________________________________________________________COMP 220 iLab 5 Lab Report and Source Code

For more course tutorials visit

www.uoptutorial.com

Assignment: Lab 5 Pointers and Pointer Operators

Description: This lab will explore the use of pointers in several ways. Pointers will be used to dynamically allocate memory for new class objects on demand from the user, and they will be used to access class-member functions. Pointer arithmetic will be used to access and sort class objects according to criteria explained in the lab.

Pointers are, essentially, address variables, or variables that hold as their value the address of other variables. In terms of memory management, they are very powerful devices, and they more closely and efficiently use the actual internal hardware registers of the microprocessor that the program operates on.

Pointers also have the requirement that the pointer type must be of the same data type as the variable, or the data that it points to or holds the address of. The power of pointers also hints at the potential complexity of their use, which is why this lab is focused almost entirely on several different aspects and uses of pointers. The lab also introduces pointer arrays and pointers to pointers.

The Resistor class created in the Week 2 lab will be used as the class that the pointer operations will be used upon. The lab also requires the use of accessor functions and static data members, which may need to be added to the Resistor class definition and implementation.

_____________________________________________________________COMP 220 iLab 6 Overloaded Operators Lab Report and Source Code

For more course tutorials visit

www.uoptutorial.com

Assignment: Lab 6 Overloaded Operators

Description: This lab is to introduce students to the concept of operator overloading as member functions of a class. This will be done in the context of creating a class that will perform four basic mathematical operations on complex numbers.

The C++ compiler has defined operators for all the arithmetic and assignment operations for its native data types, such as integer, float, double, and so forth. However, for user-defined data types, such as classes and structures, these operations are undefined.

C++ allows the programmer to create new definitions for these operators so that they can operate specifically on these user-defined data types. Which set of operators is actually called and implemented is decided during the compilation, and it is based on the data types of the operands involved in the operation.

The ability to define a new set of data-type, dependent operations on existing operators, or functions, is called operator overloading.

_____________________________________________________________COMP 220 iLab 7 Polymorphism Lab Report and Source Code

For more course tutorials visit

www.uoptutorial.com

Assignment: Lab 7 Polymorphism

Description: This lab introduces students to the concepts of polymorphism, early binding, late binding, abstract classes, and virtual class functions. This will be done in the context of performing calculations on basic geometrical shapes. Polymorphism is a very powerful extension of inheritance, and by using pointers to the base class, it allows access to derived class objects and their functions based on the context that they are called in.

The lab will require the creation of a base geometric class, called Shape, and two sub classes, Circle and Rectangle, that are derived public from the class Shape. From there, objects of both the Circle and the Rectangle classes will be created, as will an array of pointers to the base class Shape. By using the instantiated objects and the object pointers, both static and dynamic binding will be demonstrated.

Comment Stream