fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm> // Include this for std::find
  4.  
  5. class unorderedArrayListType {
  6. protected:
  7. std::vector<int> elements;
  8.  
  9. public:
  10. virtual void insertAt(int index, int value) {
  11. if (index >= 0 && index <= elements.size()) {
  12. elements.insert(elements.begin() + index, value);
  13. } else {
  14. std::cout << "Index " << index << " is out of bounds." << std::endl;
  15. }
  16. }
  17.  
  18. virtual void insertEnd(int value) {
  19. elements.push_back(value);
  20. }
  21.  
  22. virtual void replaceAt(int index, int value) {
  23. if (index >= 0 && index < elements.size()) {
  24. elements[index] = value;
  25. } else {
  26. std::cout << "Index " << index << " is out of bounds." << std::endl;
  27. }
  28. }
  29. };
  30.  
  31. class unorderedSetType : public unorderedArrayListType {
  32. public:
  33. void insertAt(int index, int value) override {
  34. if (std::find(elements.begin(), elements.end(), value) != elements.end()) {
  35. std::cout << value << " is already in the set." << std::endl;
  36. } else {
  37. unorderedArrayListType::insertAt(index, value);
  38. }
  39. }
  40.  
  41. void insertEnd(int value) override {
  42. if (std::find(elements.begin(), elements.end(), value) != elements.end()) {
  43. std::cout << value << " is already in the set." << std::endl;
  44. } else {
  45. unorderedArrayListType::insertEnd(value);
  46. }
  47. }
  48.  
  49. void replaceAt(int index, int value) override {
  50. if (index < elements.size() && std::find(elements.begin(), elements.end(), value) == elements.end()) {
  51. unorderedArrayListType::replaceAt(index, value);
  52. } else if (index >= elements.size()) {
  53. std::cout << "Index " << index << " is out of bounds." << std::endl;
  54. } else {
  55. std::cout << value << " is already in the set." << std::endl;
  56. }
  57. }
  58.  
  59. // Method to print the elements for testing
  60. void printElements() const {
  61. for (int elem : elements) {
  62. std::cout << elem << " ";
  63. }
  64. std::cout << std::endl;
  65. }
  66. };
  67.  
  68. // Test Program
  69. int main() {
  70. unorderedSetType mySet;
  71. mySet.insertEnd(10);
  72. mySet.insertEnd(20);
  73. mySet.insertEnd(10); // Should say "10 is already in the set."
  74. mySet.insertAt(1, 20); // Should say "20 is already in the set."
  75. mySet.replaceAt(1, 30); // Should work if 30 isn't in the set
  76. mySet.replaceAt(1, 10); // Should say "10 is already in the set."
  77. mySet.printElements();
  78.  
  79. return 0;
  80. }
Success #stdin #stdout 0.01s 5264KB
stdin
45
stdout
10 is already in the set.
20 is already in the set.
10 is already in the set.
10 30