72行代码做出来了
2025-07-16 20:42:47
发布于:上海
修改了十多次,老是忘记写大括号,没有在相应函数的命名空间里声明(早知道用万能头了)
以下是代码:
#include <iostream>
#include <string>
#include <limits>
#include <stdexcept>
#include <chrono>
#include <climits>
#include <cstdlib>
namespace InputUtils {
bool isInteger(const std::string& s) {
if(s.empty()) return false;
size_t i = (s[0] == '-') ? 1 : 0;
for(; i < s.size(); ++i) {
if(!isdigit(s[i])) return false;
}
return true;
}
int safeConvert(const std::string& s) {
try {
size_t pos = 0;
long val = std::stol(s, &pos);
if(pos != s.length() || val < INT_MIN || val > INT_MAX) {
throw std::out_of_range("");
}
return static_cast<int>(val);
} catch(...) {
throw std::invalid_argument("");
}
}
}
namespace MathUtils {
int safeAdd(int a, int b) {
if((b > 0 && a > INT_MAX - b) ||
(b < 0 && a < INT_MIN - b)) {
throw std::overflow_error("");
}
return a + b;
}
}
class Timer {
stdchronosteady_clocktime_point start;
public:
Timer() { start = stdchronosteady_clocknow(); }
long elapsed() const {
return stdchronoduration_caststd::chrono::microseconds(
stdchronosteady_clock::now() - start).count();
}
};
int main() {
Timer timer;
stdstring a_str, b_str;
stdcin >> a_str >> b_str;
if(!InputUtils::isInteger(a_str) || !InputUtils::isInteger(b_str)) {
return EXIT_FAILURE;
}
try {
int a = InputUtils::safeConvert(a_str);
int b = InputUtils::safeConvert(b_str);
int result = MathUtils::safeAdd(a, b);
std::cout << result;
} catch(...) {
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
全部评论 3
#include <iostream> #include <string> #include <vector> #include <algorithm> #include <functional> #include <memory> #include <stdexcept> #include <type_traits> #include <utility> #include <tuple> #include <array> #include <deque> #include <list> #include <forward_list> #include <set> #include <map> #include <unordered_set> #include <unordered_map> #include <stack> #include <queue> #include <iterator> #include <numeric> #include <limits> #include <cmath> #include <cctype> #include <cstdlib> #include <cstdio> #include <cstring> #include <ctime> #include <climits> #include <cwchar> #include <cwctype> #include <exception> #include <locale> #include <codecvt> #include <fstream> #include <iomanip> #include <ios> #include <iosfwd> #include <istream> #include <ostream> #include <sstream> #include <streambuf> #include <complex> #include <valarray> #include <bitset> #include <regex> #include <random> #include <chrono> #include <initializer_list> #include <system_error> #include <future> #include <thread> #include <mutex> #include <condition_variable> #include <atomic> #include <cfenv> #include <cinttypes> #include <cstdint> #include <cuchar> #include <new> #include <typeinfo> #include <ratio> #include <scoped_allocator> #include <ciso646> #include <clocale> #include <cstdarg> #include <cstdbool> #include <cstddef> #include <csetjmp> #include <csignal> #include <cfloat> #include <cerrno> class VM32{ public: using u32=uint32_t; enum Registers{EAX,EBX,ESP,EIP,REG_COUNT}; enum OpCode:u32{HALT=0x00000000,IN=0x0B000000,OUT=0x0C000000,ADD_REG=0x04000000}; static constexpr size_t MEM_SIZE=16*1024*1024; VM32(){ registers.fill(0); registers[ESP]=MEM_SIZE-4; memory.resize(MEM_SIZE,0); } void load_program(const std::vector<u32>&p,size_t s){ if(s>memory.size())throw std::runtime_error("Program too large"); for(size_t i=0;i<s;++i)memory[i]=p[i]; } void run(){ while(1){1周前 来自 上海
0u32 eip=registers[EIP]; if(eip>=memory.size())throw std::runtime_error("EIP out of bounds"); u32 inst=memory[eip];registers[EIP]+=1; u32 op=inst&0xFF000000;u32 args=inst&0x00FFFFFF; switch(op){ case HALT:return; case IN:{u32 r=args&0xFF;if(r>=REG_COUNT)throw std::runtime_error("Invalid reg");u32 v;std::cin>>v;registers[r]=v;break;} case OUT:{u32 r=args&0xFF;if(r>=REG_COUNT)throw std::runtime_error("Invalid reg");std::cout<<registers[r]<<std::endl;break;} case ADD_REG:{u32 s=(args>>16)&0xFF;u32 d=args&0xFF;if(s>=REG_COUNT||d>=REG_COUNT)throw std::runtime_error("Invalid reg");registers[d]+=registers[s];break;} default: throw std::runtime_error("Invalid opcode"); } } } private: std::array<u32,REG_COUNT>registers; std::vector<u32>memory; }; int main(){ try{ VM32 vm; std::vector<VM32::u32>p={0x0B000000|VM32::EAX,0x0B000000|VM32::EBX,0x04000000|(VM32::EBX<<16)|VM32::EAX,0x0C000000|VM32::EAX,0x00000000}; vm.load_program(p,5);vm.run(); }catch(const std::exception&e){ std::cerr<<"VM Error: "<<e.what()<<std::endl; return 1; } return 0; }真是太逊了
1周前 来自 上海
0
哈哈哈哈哈AI太好用了,不过我说的问题AI没发觉,问了他好几遍全是错的代码,飞鸿植物(1字与4字)AI,不好用
2025-10-10 来自 上海
0我直接复制的,结果出问题了,显示错误
2025-07-16 来自 上海
0











有帮助,赞一个