Инструкция: Хорошо, я работаю над кодом, в котором я делаю преобразования чисел. Я предлагаю пользователю дать мне базу и ввод битов с математическим символом, таким как «+», «-», «*» и т. Д., И я делаю расчет, если у вас есть стратегия для этого, тогда чувствуюсвободно дать мне идею.
Проблема: Несмотря на это, я работаю над некоторой стратегией, как это сделать, но у меня проблемы с моим персонажем, строками, указателями на символы. Я не знаю, как решить это. Я не понимаю, что такое указатели, кроме места в памяти. Мне нужна помощь в решении этой проблемы.
baseToDec Функция: В любом случае, у меня есть метод / функция с именем baseToDec, где я выполняю преобразование битов в десятичную и возвращаю int. Внутри этих параметров у меня есть char *, который принимает значение. например, «1001», что является значением 9.
Способы: Однако, когда я помещаю строку «first» внутри этого параметра внизу в моем main, я получаю сегментацию ошибок. Я не знаю, как объявить это строковое значение, когда я не получу предупреждения или ошибку сегментации. Я попытался сначала изменить переменную на char *, я попытался сделать адрес. Я не понимаю этоЯ хотел бы знать, как я могу сделать это, чтобы я не получил предупреждение, и оно возвращает целое число плавно.
int baseToDec(int base, char* value)
{
int len = strlen(value);
int power = 1, result = 0,i, j, num;
if(base > 2) //not binary
{
for (i = len - 1; i >= 0; i--)
{
result += number(value[i]) * power;
power = power * base;
}
}
else if(base = 2)
{
while(value[i] == '0' || value[i] == '1' )// (2) remove the most significant binary digit(leftmost) and add it to the result.
{
if(value[i] == '1')
{
result = result * 2 + 1;
}
else if(value[i] == '0')
{
result *= 2;
}
i++;
} // (3) If all binary digits have been removed, you're done. Stop.
}
return result;
}
int main()
{
int base, i = 0, j =0, dec; // dec is declared here.
char input[100], first[100], second[100];
char option;
instructions();
scanf("%s", &option);
while(option != 'q')
{
i = 0;
printf("Base: ");
scanf("%d", &base);
printf("Input: ");
scanf("%s", input);
while(input[i] != '+' && input[i] != '-' && input[i] != '*' && input[i] != '/')
{
i++;
}
printf("%d", i);
if(input[i] == '+')
{
for(j = 0; j < i; j++)
{
first[j] = input[j];
}
first[i] = 0;
dec = baseToDec(base, first); // Error takes place here.
}
}
Я знаю, что это много написано, но я перечислил, где происходят ошибки и метод, который я передаю.