Welcome, Guest: Register On Nairaland / LOGIN! / Trending / Recent / NewStats: 3,143,492 members, 7,781,482 topics. Date: Friday, 29 March 2024 at 03:16 PM |
Nairaland Forum / Science/Technology / Programming / C++ Programmers Help!!!!!!!!!!!!!!!!!!!!!!!! (1312 Views)
Please Web Programmers Help Me On This / Pls Programmers Help With Similarities Of Pseudocode & Algorithm / Please, I Need Help?.....programmers,help A Nairalander? (2) (3) (4)
C++ Programmers Help!!!!!!!!!!!!!!!!!!!!!!!! by Sirnuel: 12:04pm On Oct 21, 2015 |
I can't seem to find the bug in this my program ==================================================================== roman_to_dec.h #include <string> using namespace std; int M, D, C, L, X, V, I; class romanType{ public: romanType(); void set_roman_type(string); int get_roman_type()const; int convert_rom_to_dec(); int get_answer_in_decimal()const; ~romanType(); private: int answer_in_decimal; string roman; }; ----------------------------------------------------------------------------------------------------------------------------- roman_to_dec.cpp #include <iostream> #include <string> #include <cstring> #include "roman_to_dec.h" int display_menu(); void switch_stat(int, romanType); using namespace std; int input; romanType::romanType(){ answer_in_decimal = 0; roman = " "; } void romanType::set_roman_type(string x){ for(int i = 0; i < 10; i++ ) x[i] = roman[i]; } int romanType::convert_rom_to_dec(){ int answer; int roman1, roman2; string::size_type i = 0; while (i < roman.length()){ switch(toupper(roman.at(i))){ case 'M': roman1 = 1000; break; case 'D': roman1 = 500; break; case 'C': roman1 = 100; break; case 'L': roman1 = 50; break; case 'X': roman1 = 10; break; case 'V': roman1 = 5; break; case 'I': roman1 = 1; break; default: roman1 = -1; } switch(toupper(roman.at(i + 1))){ case 'M': roman2 = 1000; break; case 'D': roman2 = 500; break; case 'C': roman2 = 100; break; case 'L': roman2 = 50; break; case 'X': roman2 = 10; break; case 'V': roman2 = 5; break; case 'I': roman2 = 1; break; default: roman2 = -1; } if ((roman1 == -1) || (roman2 == -1)){ cout <<"\n\n\tError incorrect input"; return -1; } else if (roman1 < roman2){ answer = roman2 - roman1; i +=2; } else if (roman1 >= roman2){ answer += roman[i]; i +=1; } } answer_in_decimal = answer; return answer; } int romanType::get_answer_in_decimal()const{ return answer_in_decimal; } romanType::~romanType(){ cout << "calling destructor"; } int display_menu(){ cout << "\n\t---------------------------------------------------------------------"; cout << "\n\t---------This program converts Roman Numerals to Decimals -----------"; cout << "\n\t| |"; cout << "\n\t| |"; cout << "\n\t| Press 1 to perform a new converstion |"; cout << "\n\t| |"; cout << "\n\t| |"; cout << "\n\t| Press 2 to view last result |"; cout << "\n\t| |"; cout << "\n\t| |"; cout << "\n\t| Or press 0 to exit |"; cout << "\n\t| |"; cout << "\n\t| |"; cout << "\n\t---------------------------------------------------------------------\n\n\t"; cin >> input; while ((input != 0) && (input > 2)){ cout << "error incorrect input\n try again"; cout << "\n\t---------------------------------------------------------------------"; cout << "\n\t---------This program converts Roman Numerals to Decimals -----------"; cout << "\n\t| |"; cout << "\n\t| |"; cout << "\n\t| Press 1 to perform a new converstion |"; cout << "\n\t| |"; cout << "\n\t| |"; cout << "\n\t| Press 2 to view last result |"; cout << "\n\t| |"; cout << "\n\t| |"; cout << "\n\t| Or press 0 to exit |"; cout << "\n\t| |"; cout << "\n\t| |"; cout << "\n\t---------------------------------------------------------------------\n\n\t"; cin >> input; } return input; } void switch_stat(int input, romanType roman_type){ string input_roman; switch(input){ case 0: cout <<"exiting the program\n\n"; break; case 1: cout << "input the numbers in roman figures:\t"; cin >> input_roman; roman_type.set_roman_type(input_roman); roman_type.convert_rom_to_dec(); cout << "\n\n\t" << input_roman << " = " << roman_type.get_answer_in_decimal()<< "in decimal"; cout << endl; break; case 2: cout << "testing case.......it works"; break; default: cout << "\n\tError 505....Incorrect input!!!"; break; } } -------------------------------------------------------------------------------------------------------------------------------- roman_to_dec_main.cpp #include <iostream> #include "roman_to_dec.cpp" int main(){ romanType roman_type; int input = display_menu(); switch_stat(input, roman_type); return 0; } ---------------------------------------------------------------------------------------------------------------------------------- this is the error i get whenever i try to run the program termincate called after throwing an instance of 'std::out_of_range' what(): basic_string::at _n (which is 1) >= this->size() (which is 1) this application has requested the Runtime to terminate it in an unusual way. Please contact he application's support team for more information. |
Re: C++ Programmers Help!!!!!!!!!!!!!!!!!!!!!!!! by codemarshal08(m): 2:41pm On Oct 21, 2015 |
hmm........your program structure is making it hard for me to scan through. Anyways, i tried to reproduce the error but your code kept giving me multiple errors different from the one you posted here this is the error i get whenever i try to run the programPlease are you sure you were able to pass the COMPILE stage to the RUN stage ? 1 Like |
Re: C++ Programmers Help!!!!!!!!!!!!!!!!!!!!!!!! by Sirnuel: 8:50pm On Oct 21, 2015 |
codemarshal08: .yes it compiled successfully |
Re: C++ Programmers Help!!!!!!!!!!!!!!!!!!!!!!!! by WhiZTiM(m): 9:21pm On Oct 21, 2015 |
I glanced over your code and can see a bug with the second switch statement. You are testing for roman.at(i + 1) under the premise that i < roman.size().... That's wrong cause when you reach the last element, i will go overboard. If you are ever testing i + x, then your condition should be i - x.... What i am saying is... Your while loop should be ..... while (i < roman.length() - 1){ ..... |
Re: C++ Programmers Help!!!!!!!!!!!!!!!!!!!!!!!! by liliian(f): 6:31pm On Oct 23, 2015 |
WhiZTiM: Please can i get help with this:https://www.nairaland.com/2685865/need-assignment-java-programming#39282992 |
Re: C++ Programmers Help!!!!!!!!!!!!!!!!!!!!!!!! by liliian(f): 6:31pm On Oct 23, 2015 |
codemarshal08: Please i need help:https://www.nairaland.com/2685865/need-assignment-java-programming#39282992 |
Re: C++ Programmers Help!!!!!!!!!!!!!!!!!!!!!!!! by Sirnuel: 10:44pm On Oct 23, 2015 |
WhiZTiM: Thanks.... I also found few bugs out on my own too. the program now runs smoothly |
Re: C++ Programmers Help!!!!!!!!!!!!!!!!!!!!!!!! by MOM1(m): 6:50pm On Oct 27, 2015 |
Does anyone knows how to use the Oracle Virtual Machine? |
(1) (Reply)
Oop Php / Guys What Is A Hackathon? / What Should I Do In This Situation
(Go Up)
Sections: politics (1) business autos (1) jobs (1) career education (1) romance computers phones travel sports fashion health religion celebs tv-movies music-radio literature webmasters programming techmarket Links: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) Nairaland - Copyright © 2005 - 2024 Oluwaseun Osewa. All rights reserved. See How To Advertise. 27 |