упрощение и переписывание моего кода

#c

#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;
}
  

Я пытаюсь ПЕРЕПИСАТЬ / УПРОСТИТЬ IT..to:

 {
    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;
  

По какой-то причине он не работает .. visual Studio сообщает, что:

  1. слева от ‘.length’ должен быть тип class / struct / union ‘char’
  2. для нижнего индекса требуется тип массива или указателя
  3. для ‘ ‘ требуется l-значение
  4. синтаксическая ошибка: отсутствует ‘;’ перед идентификатором ‘j’

Я хочу переписать и упростить его .. помогите с ошибками, пожалуйста .. спасибо!

Комментарии:

1. Я предполагаю, что ваш вопрос заключается в том, чтобы определить error..no его нет

2. Я спрашивал, является ли это задание домашним заданием, поэтому я могу добавить тег домашнего задания к вашему вопросу

Ответ №1:

1: Вы не можете этого сделать inp.length() , потому что вы объявили inp как символ. А символ — это не строка.

Попробуйте объявить inp как string :

 string inp;
  

2: «для нижнего индекса требуется тип массива или указателя»

Та же причина, что и выше. inp это символ, а не массив или строка.

3/4: «‘ ‘ нуждается в l-значении»

Вы пропускаете точку с запятой после: dec=dec (x*y)

Комментарии:

1. должен ли я также использовать string base ?? ty!

2. Нет. Для этого вы должны использовать: char base; (это правильно так, как оно есть)

3. Вы уверены, что с base все в порядке? Разве это не нужно «исправлять» с base -= '0'; помощью?

4. @Джонатан Леффлер: Я понимаю (float)base-48 . Так что все выглядит нормально, если предположить char -> float , что приведение совпадает с int -> float приведением.

5. получение: ошибка проверки во время выполнения # 3 — переменная ‘dec’ используется без инициализации…