Question: getting an error in following code Error: terminate called after throwing an instance of 'std::invalid_argument' what(): stoi can you fix it. #include #include #include using

getting an error in following code

Error: terminate called after throwing an instance of 'std::invalid_argument' what(): stoi

can you fix it.

#include #include #include using namespace std;

const int MAX_SIZE = 20;

// Card struct to store card information struct Card { char suit; string rank; };

// SortedList class using dynamic allocated arrays class SortedList { private: Card* cards; int size; int capacity; public: SortedList() { capacity = MAX_SIZE; cards = new Card[capacity]; size = 0; }

~SortedList() { delete[] cards; }

// Add new card to list in sorted order void putItem(Card card) { // If list is full, resize if (size == capacity) { capacity *= 2; Card* newCards = new Card[capacity]; for (int i = 0; i < size; i++) { newCards[i] = cards[i]; } delete[] cards; cards = newCards; }

int i = size - 1; while (i >= 0 && compareTo(card, cards[i]) < 0) { cards[i + 1] = cards[i]; i--; } cards[i + 1] = card; size++; }

// Remove card from list void deleteItem(Card card) { int i = 0; while (i < size && compareTo(card, cards[i]) != 0) { i++; } if (i < size) { for (int j = i; j < size - 1; j++) { cards[j] = cards[j + 1]; } size--; } }

// Get card from list Card getItem(Card card) { int i = 0; while (i < size && compareTo(card, cards[i]) != 0) { i++; } if (i < size) { return cards[i]; } else { return {' ', ""}; } }

// Print all cards in list void printAll() { for (int i = 0; i < size; i++) { cout << cards[i].suit << cards[i].rank; if (i < size - 1) { cout << ","; } } cout << endl; }

// Compare two cards based on their suit and rank int compareTo(Card c1, Card c2) { if (c1.suit < c2.suit) { return -1; } else if (c1.suit > c2.suit) { return 1; } else { if (c1.rank == "2") { return -1; } else if (c2.rank == "2") { return 1; } else if (c1.rank == "A") { return 1; } else if (c2.rank == "A") { return -1; } else if (c1.rank == "K") { return 1; } else if (c2.rank == "K") { return -1; } else if (c1.rank == "Q") { return 1; } else if (c2.rank == "Q") { return -1; } else if (c1.rank == "J") { return 1; } else if (c2.rank == "J") { return -1; } else { return stoi(c1.rank) - stoi(c2.rank); } } } };

int main() { string fileName; cout << "Enter a file name: "; cin >> fileName; // Create new SortedList instance SortedList* myList = new SortedList();

// Read cards from file and add them to list ifstream inputFile; inputFile.open(fileName); if (!inputFile) { cout << "Error: Could not open file." << endl; return 1; } char suit; string rank; while (inputFile >> suit >> rank) { Card card = {suit, rank}; myList->putItem(card); } inputFile.close();

// Print all cards in list myList->printAll();

// Delete card from list cout << "Enter a card to delete: "; cin >> suit >> rank; Card cardToDelete = {suit, rank}; myList->deleteItem(cardToDelete);

// Print all cards in list after deletion myList->printAll();

delete myList;

return 0; }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!