#include <iostream>
#include <vector>
#include <string>
#include <iomanip>
class Spreadsheet {
private:
std::vector<std::vector<std::string>> data;
size_t rows, cols;
public:
Spreadsheet(size_t r, size_t c) : rows(r), cols(c) {
data.resize(rows, std::vector<std::string>(cols, ""));
}
void setValue(size_t row, size_t col, const std::string& value) {
if (row < rows && col < cols) {
data[row][col] = value;
} else {
std::cerr << "Invalid cell coordinates!" << std::endl;
}
}
std::string getValue(size_t row, size_t col) const {
if (row < rows && col < cols) {
return data[row][col];
} else {
std::cerr << "Invalid cell coordinates!" << std::endl;
return "";
}
}
void display() const {
for (const auto& row : data) {
for (const auto& cell : row) {
std::cout << std::setw(10) << cell << " ";
}
std::cout << std::endl;
}
}
};
int main() {
size_t rows, cols;
std::cout << "Enter the number of rows and columns: ";
std::cin >> rows >> cols;
Spreadsheet sheet(rows, cols);
while (true) {
std::cout << "\n1. Set Value\n2. Get Value\n3. Display\n4. Exit\n";
int choice;
std::cin >> choice;
if (choice == 1) {
size_t r, c;
std::string value;
std::cout << "Enter row, column, and value: ";
std::cin >> r >> c >> value;
sheet.setValue(r, c, value);
} else if (choice == 2) {
size_t r, c;
std::cout << "Enter row and column: ";
std::cin >> r >> c;
std::cout << "Value at (" << r << ", " << c << ") is " << sheet.getValue(r, c) << std::endl;
} else if (choice == 3) {
sheet.display();
} else if (choice == 4) {
break;
} else {
std::cout << "Invalid choice!" << std::endl;
}
}
return 0;
}