#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 сообщает, что:
- слева от ‘.length’ должен быть тип class / struct / union ‘char’
- для нижнего индекса требуется тип массива или указателя
- для ‘ ‘ требуется l-значение
- синтаксическая ошибка: отсутствует ‘;’ перед идентификатором ‘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’ используется без инициализации…