c++ - 罗马到数字的最后一个for循环问题
问题描述
有人可以帮我找出我的代码有什么问题吗?
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main(){
ifstream roman("C:/OT2015/Rimski.txt");
ofstream arabic("C:/OT2015/Arapski.txt");
string line;
int sum = 0;
int count = 0;
getline( roman,line);
int numbers[line.length()] = {0};
for(int i = 0; i < line.length(); i++){
if(line[i] == 'I'){
numbers[i] = 1;
}
if(line[i] == 'V'){
numbers[i] = 5;
}
if(line[i] == 'X'){
numbers[i] = 10;
}
if(line[i] == 'L'){
numbers[i] = 50;
}
if(line[i] == 'C'){
numbers[i] = 100;
}
if(line[i] == 'D'){
numbers[i] = 500;
}
if(line[i] == 'M'){
numbers[i] = 1000;
}
count++;
}
for(int i = 0; i < count; i++){
if(numbers[i] >= numbers[i+1]){
sum = sum + numbers[i];
}
else{
sum = sum - numbers[i];
}
}
cout << sum;
arabic << sum;
}
问题在于最后一个 for 循环,它错误地将数字相加。当我使用调试器时,它会变得混乱并将我的断点错放在其他地方。它还会跳过第一个条件 if 并直接跳转到 else 并加起来为 -10。我修复了它,但它仍然输出数字 -10。
我测试的罗马数字:LXXIV 正确的输出:74 我的输出(不正确):-10
请帮忙
解决方案
好吧,当我添加乔治的评论时,我添加了另一个 if 循环并且它起作用了
#include <iostream>
#include <string>
using namespace std;
int main(){
ifstream roman("C:/OT2015/Rimski.txt");
ofstream arabic("C:/OT2015/Arapski.txt");
string line;
int sum = 0;
int count = 0;
getline( roman,line);
int numbers[line.length()] = {0};
for(int i = 0; i < line.length(); i++){
if(line[i] == 'I'){
numbers[i] = 1;
}
if(line[i] == 'V'){
numbers[i] = 5;
}
if(line[i] == 'X'){
numbers[i] = 10;
}
if(line[i] == 'L'){
numbers[i] = 50;
}
if(line[i] == 'C'){
numbers[i] = 100;
}
if(line[i] == 'D'){
numbers[i] = 500;
}
if(line[i] == 'M'){
numbers[i] = 1000;
}
count++;
}
for(int i = 0; i < count; i++){
if(i != count - 1){
if(numbers[i] >= numbers[i+1]){
sum = sum + numbers[i];
}
else{
sum = sum - numbers[i];
}
}
else{
sum = sum + numbers[i];
}
}
cout << sum;
arabic << sum;
只需要等待 2 天标记为答案
推荐阅读
- c# - 如何从外部结构的对象访问嵌套结构的属性
- amazon-web-services - AWS HTTP Gateway:相同路由的多种方法,不包括使用无服务器框架的选项
- laravel - Laravel 自定义邮箱验证
- r - R计算日期差异时的函数错误
- c++ - Boost Python - 对`_Py_NoneStruct'的未定义引用
- python - txt 中的数据格式。文件
- javascript - Javascript:什么是 Http 服务中的 reportProgress?
- testng - TestNG-每次运行后都会覆盖结果
- javascript - WebAudio 音频上下文内存泄漏
- node.js - 使用nodejs进行http post请求时出错