簡體   English   中英

C ++程序錯誤

[英]Error with C++ Program

我目前正在參加C ++課程,所以請耐心等待。 我並不是要您解決我的作業,而只是幫助我弄清楚我所忽略的是什么,我正在將用戶輸入的羅馬數字轉換為十進制數字,然后顯示該數字。 我尚未完成轉換功能。 現在,我只是將數字轉換為數字並加起來(尚未考慮訂單上的內容)。 每當我運行程序時,我總是得到0,而不是正確的數字。 這是我的頭文件代碼:

class romanType
    {
    public:
        void setNumeral(string);
        string getNumeral();
        double convertToNumber();
        double printNumber();
    private:
        string input;
        double num;
    };

void romanType::setNumeral(string s)
{
    string input = s;
}

string romanType::getNumeral()
{
    return input;
}

double romanType::convertToNumber()
{
    num = 0;
    for(int i = 0; i < input.length(); i++)
    {
        switch (input.at(i))
        {
        case 'M':
            num += 1000;
            break;
        case 'D':
            num += 500;
            break;
        case 'C':
            num += 100;
            break;
        case 'L':
            num += 50;
            break;
        case 'X':
            num += 10;
            break;
        case 'V':
            num += 5;
            break;
        case 'I':
            num += 1;
            break;
        }
    }
    return num;
}

double romanType::printNumber()
{
    return num;
}

這是我的cpp文件代碼:

#include "stdafx.h"
#include "romanType.h"
#include <string>
#include <cstring>
#include <iostream>

using namespace std;

int main()
{
    romanType roman;
    string input;
    string output;
    double number = 0;
    cout << "Enter a Roman numeral." << endl;
    cin >> input;
    roman.setNumeral(input);
    number = roman.convertToNumber();
    cout << number << endl;

    system("pause");
    return 0;
}

在您的romanType :: setNumeral()中,在輸入之前刪除“字符串”一詞:

錯誤的:

 romanType::setNumeral(string s)
 {
      string input=s;
 }

對 :

romanType::setNumeral(string s)
{
    input=s;
}

在錯誤的示例中,您使用相同名稱的局部變量隱藏了成員變量。

在這里:

void romanType::setNumeral(string s)
{
    string input = s;
}

使用字段名稱,而不是使此類中的字段名稱黯然失色的局部變量“ input”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM