Есть символьный массив, в которые вводятся числа 0 и 1. Нужно с помощью функции перевести элементы символьного массива из двоичной системы счисления в 10-ную.
Код:
#include <stdio.h>
#include <stdlib.h>
# include <math.h>
int sys2to10(char str);
int main() {
int result = sys2to10(str);
printf("Введите последовательность:");
char str[10] = {0};
scanf("%6s", str);
printf("%d", result);
return (0);
}
int sys2to10(char str) {
int psum = 0;
for(int i = 6; i > 0; i --) {
psum += (int str[i] * (pow(2, i-1)));
}
return (psum);
}
Но компилятор ругается, не могу понять в чём ошибка.
Ощущение, что вы начитались какой-то фантастики о путешествиях во времени - сначала вычисляете, потом спрашиваете, что вычислять...
Сначала вычисляем неизвестно что (str
- неизвестно!) "Шофер, домой! - а где вы живете? - не твое дело!"...
int result = sys2to10(str);
Потом просим ввести последовательность
printf("Введите последовательность:");
Наконец, объявляем str
и читаем...
char str[10] = {0};
scanf("%6s", str);
И выводим нечто, вычисленное не пойми из чего...
printf("%d", result);
Вобщем, вот ваш код. Без проверок и защит от дурака.
#include <stdio.h>
#include <stdlib.h>
# include <math.h>
int sys2to10(char * str);
int main()
{
char str[10] = {0};
printf("Введите последовательность: ");
scanf("%6s", str);
int result = sys2to10(str);
printf("%d", result);
}
int sys2to10(char * str)
{
int psum = 0;
for(int i = 0; str[i]; i++)
psum = psum*2 + (str[i] - '0');
return psum;
}
Данное объявление функции
int sys2to10(char str);
является некорректным, так как в функцию передается строка, а не символ.
Поэтому функцию следует объявить как
int sys2to10( const char *str );
В функции используется, не понятно, откуда взявшееся магическое число 6
:
for(int i = 6; i > 0; i --) {
^^^
Данное выражение
psum += (int str[i] * (pow(2, i-1)));
синтаксически неверное,
В функции main
вы сначала должны объявить и инициализировать символьный массив str
и лишь затем вызывать функцию
int result = sys2to10(str);
Функция может выглядеть следующим образом, как показано ниже в демонстрационной программе, написанной на C.
#include <stdio.h>
int sys2to10( const char *s )
{
const int Base = 2;
int result = 0;
for ( ; *s; ++s )
{
result = Base * result + ( *s - '0' );
}
return result;
}
int main(void)
{
const char *s = "1101";
printf( "%d\n", sys2to10( s ) );
return 0;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Использую RapidjsonВозникла нужда изменять строку
Хочу вас спросить, я недавно увидел на википедии, что Kaspersky написан на c++, скажите пожалуйста, как они создали интерфейс? WinApi, Qt, или что-то другое?
В классе ObjectInput есть метод available(), который, как написано в java docs, возвращает количество байт, доступных для чтения без блокировкиВ классе FileInputStream...
При свайпе вправо не отображается иконка, хотя при свайпе влево она естьЯ смог пофиксить это, деля итоговое число на 10, но иконка получается...