简化和重写我的代码

时间:2011-10-04 00:45:43

标签: c++

我将尽可能具体...... 我有这段代码:

// bintodec.cpp : Defines the entry point for the console application.

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

using namespace std;

int main(){
    string inp;
    int dec = 0;
    char base;
    cout << "Input a number: ";
    cin >> inp;
    cout << "Input the base your number is in: ";
    cin >> base;
    for (int i = inp.length()-1, j = 0; i >= 0; i--, ++j)
        dec += (inp[i]-48) * pow((float)base-48, j);
    cout << "Your number in base 10 is: " << dec <<endl;
    system("pause");
    return 0;
}

我正在尝试重新/简化它......

{
    int j=0,x;
    double dec,y;
    for(int i = inp.length()-1; i >= 0; i--) 
    {
    x=(inp[i]-48);
    y=pow((float)base-48, j);
    dec=dec + x * y;
    ++j;
    }
}

我有:

int j=0,x;
    double dec, y;
        char base, inp;

        cout << "Input a number: ";
    cin >> inp;
    cout << "Input the base your number is in: ";
    cin >> base;


        {
            for (int i = inp.length()-1; i>=0; --i)
            x=(inp[i]-48);
            y=pow((float)base-48, j);
            dec=dec + (x*y)
                ++j;
            {
             return 0;

由于某种原因,它不起作用..视觉工作室报道:

    '。length'的左边必须有class / struct / union类型'char'
  1. 下标需要数组或指针类型
  2. '++'需要l-value
  3. 语法错误:缺少';'在标识符'j'之前
  4. 我想重写并简化它..有错误请帮助..谢谢!

1 个答案:

答案 0 :(得分:6)

1:您无法执行inp.length(),因为您将inp声明为char。而char不是字符串。

尝试将inp声明为string

string inp;

2:“下标需要数组或指针类型”

与上述相同的原因。 inp是一个字符,而不是数组或字符串。

3/4:“'++'需要l值”

您在dec=dec + (x*y)

之后错过了分号