PROGRAM 27
// FILE NAME: PROG27.CPP PROGRAMMER NAME: ANTHONY F. ORTIZ
// THIS PROGRAM USES A CLASS CALLED ARRYLIST. THE MEMBER FUNCTIONS OF
// ARRAYLIST WILL INITIALIZES THE SIZE OF A FLOATING POINT ARRAY, ADD
// A FLOATING POINT NUMBER TO THE ARRAY, SHOW A SUB-TOTALS OF THE
// ARRAY, DISPLAY ALL FLOATING POINT ITEMS, AND CHANGE A FLOATING POINT
// ITEM.
#include "a2.h"
print_menu ();
char get_selection (arraylist & expenses);
pause_program ();
int main ()
{
char choice;
arraylist expenses;
do
{
print_menu ();
choice = get_selection (expenses);
}
while (choice != 'Q');
return 0;
}
print_menu ()
{
clrscr ();
gotoxy (25, 1);
cout << "MENU OPTIONS";
gotoxy (30, 3);
cout << "E -- ENTER EXPENSES";
gotoxy (30, 4);
cout << "T -- PRINT TOTAL EXPENSES";
gotoxy (30, 5);
cout << "C -- CHANGE EXPENSES";
gotoxy (30, 6);
cout << "D -- DISPLAY EXPENSES";
gotoxy (30, 7);
cout << "Q -- QUIT PROGRAM";
gotoxy (25, 9);
cout << "ENTER SELECTION ";
return 0;
}
char get_selection (arraylist & expenses)
{
char choice;
cin >> choice;
choice = toupper (choice);
switch (choice)
{
case ('E'): {
expenses.enteritem ();
break;
}
case ('T'): {
expenses.printtotal ();
pause_program ();
break;
}
case ('C'): {
expenses.changelist ();
pause_program ();
break;
}
case ('D'): {
expenses.viewlist ();
pause_program ();
break;
}
case ('Q'): {
clrscr ();
break;
}
}
return (choice);
}
pause_program ()
{
cout << endl << "PRESS ENTER KEY TO CONTINUE ..... ";
getch ();
return 0;
}
// FILE NAME: A2.H
// THIS FILE CONTAINS THE DECLARTION OF THE ARRAYLIST CLASS.
#ifndef arraylist_h
#define arraylist_h
#include
#include
#include
class arraylist
{
public:
arraylist :: arraylist ();
// POST: CONSTRUCTOR.
arraylist :: ~arraylist ();
// POST: DESTRUCTOR.
void arraylist :: initcount (void);
// POST: INITIALIZE COUNT TO 0.
void arraylist :: enteritem (void);
// POST: ENTER FLOATING POINT NUMBER.
void arraylist :: printtotal (void);
// POST: CALCULATE AND PRINT THE TOTAL.
void arraylist :: viewlist (void);
// POST: VIEW THE LIST OF FLOATING POINT NUMBERS.
void arraylist :: changelist (void);
// POST: CHANGE OR DELETE A FLOATING POINT NUMBER FROM THE LIST.
private:
int count;
float * list;
};
#include "a2.cpp"
#endif
// FILE NAME: A2.CPP
// THIS FILE CONTAINS THE IMPLEMENTATION OF THE ARRAYLIST CLASS.
#include "a2.h"
arraylist :: arraylist ()
{
list = new float [100];
count = 0;
cout.setf (ios :: showpoint);
cout.setf (ios :: fixed);
cout << setprecision (2);
}
arraylist :: ~arraylist ()
{
delete [] list;
}
void arraylist :: initcount (void)
{
count = 0;
}
void arraylist :: enteritem (void)
{
clrscr ();
cout << "ENTER A FLOATING POINT NUMBER. ";
cin >> list [count];
count++;
}
void arraylist :: printtotal (void)
{
float total = 0;
clrscr ();
for (int a = 0; a < count; a++)
{
total = total + list [a];
}
cout << "THE TOTAL IS " << total << " AND THE SIZE OF THE ARRAY IS ";
cout << count << endl;
}
void arraylist :: viewlist (void)
{
clrscr ();
cout << "HERE IS THE FLOAT OBJECT ARRAY: " << endl << endl;
for (int a = 0; a < count; a++)
{
cout << "FLOAT OBJECT " << (a + 1) << ": " << setw (8) << list [a];
cout << endl;
}
}
void arraylist :: changelist (void)
{
char choice, ans;
int position, flag;
float change;
clrscr ();
gotoxy (25, 1);
cout << "MENU CHOICES";
gotoxy (30, 3);
cout << "D -- DELETE AN ITEM";
gotoxy (30, 4);
cout << "C -- CHANGE AN ITEM";
gotoxy (25, 6);
cout << "ENTER A CHOICE: ";
cin >> choice;
choice = toupper (choice);
if (choice == 'D' || choice == 'C')
{
clrscr ();
do
{
cout << "ENTER A # FROM 1 .. " << count;
cout << " TO CHANGE AN ITEM. ";
cin >> position;
cout << endl;
}
while (position < 1 || position > count);
}
switch (choice)
{
case ('D'): {
clrscr ();
cout << "DELETE FLOATING OBJECT " << position;
cout << " " << list [position - 1] << " (Y/N)? ";
cin >> ans;
ans = toupper (ans);
if (ans == 'Y')
{
flag = 0;
for (int a = 0; a < count; a++)
{
if (a == (position - 1) || flag == 1)
{
list [a] = list [a + 1];
flag = 1;
}
}
count--;
cout << endl << "FLOATING POINT OBJECT DELETED ";
cout << endl;
}
else
{
cout << endl << "FLOATING POINT OBJECT NOT DELETED";
cout << endl;
}
break;
}
case ('C'): {
clrscr ();
cout << "ENTER NEW FLOATING OBJECT " << position;
cout << ": ";
cin >> change;
cout << endl << "CHANGE FLOATING OBJECT ";
cout << position << " " << list [position - 1] << " (Y/N)? ";
cin >> ans;
ans = toupper (ans);
if (ans == 'Y')
{
for (int a = 0; a < count; a++)
{
if (a == (position - 1))
{
list [a] = change;
}
}
cout << endl << "FLOATING POINT OBJECT CHANGED";
cout << endl;
}
else
{
cout << endl << "FLOATING POINT OBJECT NOT CHANGED";
cout << endl;
}
break;
}
}
}
// OUTFILE: PROG27.OUT
MENU OPTIONS
E -- ENTER EXPENSES
T -- PRINT TOTAL EXPENSES
C -- CHANGE EXPENSES
D -- DISPLAY EXPENSES
Q -- QUIT PROGRAM
ENTER SELECTION q
BACK TO COMP251 PAGE.