Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

romanType.h ---------------------------------------- #pragma once #include using std::string; class romanType { public : //constructors romanType(); romanType( const string& r); //accessors string getRoman() const ; //mutators void

image text in transcribedimage text in transcribed

romanType.h

----------------------------------------

#pragma once

#include

using std::string;

class romanType

{

public:

//constructors

romanType();

romanType(const string& r);

//accessors

string getRoman() const;

//mutators

void setRoman(const string& r);

//custom methods

int romanToDecimal() const;

protected:

//shared custom methods

static const int n_atoms = 8;

static int indexToDecimalAtom(int index);

static int decimalAtomToIndex(int Decimal_atom);

static char indexToRomanAtom(int index);

static int romanAtomToIndex(char atom);

private:

//data

string roman;

romanType.cpp

----------------------------------------

#include "romanType.h"

//constructors

romanType::romanType()

{

roman = "I";

}

romanType::romanType(const string& new_roman)

{

setRoman(new_roman);

}

//accessors

string romanType::getRoman() const

{

return roman;

}

//mutators

void romanType::setRoman(const string& new_roman)

{

roman = new_roman;

}

//custom methods

int romanType::romanToDecimal() const

{

int decimal = 0;

int pos = roman.length() - 1;

int maximum = indexToDecimalAtom(romanAtomToIndex(roman[pos]));

decimal += maximum;

for (pos = pos - 1; pos >= 0; pos--)

{

int number = indexToDecimalAtom(romanAtomToIndex(roman[pos]));

if (number > maximum)

{

maximum = number;

decimal += maximum;

}

else if (number == maximum)

decimal += number;

else

decimal -= number;

}

return decimal;

}

int romanType::indexToDecimalAtom(int index)

{

int decimalAtom;

switch (index)

{

case 0:

decimalAtom = 0;

break;

case 1:

decimalAtom = 1;

break;

case 2:

decimalAtom = 5;

break;

case 3:

decimalAtom = 10;

break;

case 4:

decimalAtom = 50;

break;

case 5:

decimalAtom = 100;

break;

case 6:

decimalAtom = 500;

break;

case 7:

decimalAtom = 1000;

break;

default:

decimalAtom = 0;

}

return decimalAtom;

}

char romanType::indexToRomanAtom(int index)

{

char romanAtom;

switch (index)

{

case 0:

romanAtom = '\0';

break;

case 1:

romanAtom = 'I';

break;

case 2:

romanAtom = 'V';

break;

case 3:

romanAtom = 'X';

break;

case 4:

romanAtom = 'L';

break;

case 5:

romanAtom = 'C';

break;

case 6:

romanAtom = 'D';

break;

case 7:

romanAtom = 'M';

break;

default:

romanAtom = '\0';

}

return romanAtom;

}

int romanType::decimalAtomToIndex(int atom)

{

int index;

switch (atom)

{

case 0:

index = 0;

break;

case 1:

index = 1;

break;

case 5:

index = 2;

break;

case 10:

index = 3;

break;

case 50:

index = 4;

break;

case 100:

index = 5;

break;

case 500:

index = 6;

break;

case 1000:

index = 7;

break;

default:

index = 0;

}

return index;

}

int romanType::romanAtomToIndex(char atom)

{

int index;

switch (atom)

{

case '\0':

index = 0;

break;

case 'I':

index = 1;

break;

case 'V':

index = 2;

break;

case 'X':

index = 3;

break;

case 'L':

index = 4;

break;

case 'C':

index = 5;

break;

case 'D':

index = 6;

break;

case 'M':

index = 7;

break;

default:

index = 0;

}

return index;

}

};

main-3.cpp

----------------------------------------

#include

#include

#include

#include

#include

#include

#include "romanType.h"

using std::cout;

using std::ifstream;

using std::istringstream;

using std::ofstream;

using std::endl;

using std::string;

using std::system;

int main()

{

string roman_numbers_file_name = "roman_numbers.txt";

string decimal_numbers_file_name = "decimal_numbers.txt";

string roman;

romanType r;

ifstream spring(roman_numbers_file_name.c_str());

ofstream sink(decimal_numbers_file_name.c_str());

while (getline(spring, roman))

{

r.setRoman(roman);

sink

}

spring.close();

sink.close();

system("pause");

return 0;

}

roman_numbers.txt is provided to us, but too long to upload all of it.

-----------------------------------------

I II III IV V VI VII VIII IX X XI XII XIII XIV XV XVI XVII XVIII XIX XX XXI XXII XXIII XXIV XXV XXVI

romanType.h romanType.cpp main.cpp roman numbers.txt The file roman_numbers.txt, contains, in order, the roman numerals from I to MMMMCMXCIX. The program translates each roman number in the file to its decimal number. Add the following array definitions to romanType.h static const char roman_atoms[n_atoms); static const int decimal_atoms[n_atoms); Add the following array initializations to romanType.cpp const char romanType::roman_atoms[romanType::n_atoms] = {"\OTV.X"L)CD"M'}; const int romanType::decimal_atoms[romanType::n_atoms] = {0,1,5,10,50,100,500,1000); Replace all or almost all of the switch statements in romanType.cpp with statements that read array elements , write array elements, or search arrays. simple class rubric Criteria Ratings Pts class rubric 10 pts Full Marks O pts No Marks 1) the program solves the problem 2) the program uses constructors, destructors appropriately 3) the program uses mutators appropriately 4) the program uses accessors appropriately 5) the program uses custom methods appropriately 10 pts 1. Data is almost always private. 2. No error message in constructors. The proper way to handle errors in constructors is to throw exceptions. Since we cannot throw exceptions, we replace bad values with good ones. 3. Avoid the "this" pointer. You can avoid it by using parameter names and local variable names that are not the same as class member names. 4. Constructors and mutators should not be interactive

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions

Question

8. Explain the contact hypothesis.

Answered: 1 week ago

Question

7. Identify four antecedents that influence intercultural contact.

Answered: 1 week ago