Форум программистов, компьютерный форум CyberForum.ru

Упростить код - C++

Восстановить пароль Регистрация
 
ElRicko
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 5
16.04.2012, 21:01     Упростить код #1
Разработать рекурсивную функцию , возвращающую значение : для перевода числа из двоичной системы счисления в десятичную;

Как упростить код задачи?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include <cstdio>
using namespace std; 
char szBin[] = "101010111";
 
unsigned bin2dec( const char* szBin, const unsigned uCurrVal ){
  assert( 0 == *szBin || '0' == *szBin || '1' == *szBin );
  if( *szBin ){
    return bin2dec( szBin+1, uCurrVal*2 + (*szBin=='0'?0:1) ); 
  }else{
    return uCurrVal;
  }
}
 
int main(){
  printf( "%d", bin2dec( szBin, 0 ) );
}
Добавлено через 2 часа 22 минуты
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2012, 21:01     Упростить код
Посмотрите здесь:

Помогите упростить код? C++
C++ Упростить код
Упростить код C++
упростить код C++
C++ Упростить код
Упростить код C++
C++ Упростить код
Упростить код C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fragnat
 Аватар для fragnat
11 / 11 / 0
Регистрация: 17.12.2009
Сообщений: 77
16.04.2012, 23:24     Упростить код #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <conio.h>
 
int main () {
    char c[10] = "101010111";
    int result=0;
    for(int i=0;i<9;i++)
    {
        if( (c[i]<'0') || (c[i] > '1') ) break;
        result<<=1;
        result+=c[i]-'0';
    }
    printf("\n%d\n",result);
    getch();
};
Пожалуйста, код основан на: Перевод чисел из двоичной в десятичную систему счисления
Упс, видимо я ошибся с заданием.. оставлю пост тут вдруг кому пригодится.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
17.04.2012, 08:01     Упростить код #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
 
unsigned int binToDec( const unsigned int bin, const int powOfTwo = 1 ) {
   return ( bin > 0 ? bin % 10 * powOfTwo + binToDec( bin / 10, powOfTwo * 2 ) : 0 );
}
 
int main( ) {
   std::cout << binToDec( 1111 ) << std::endl;
 
   return 0;
}
Вывод.
Yandex
Объявления
17.04.2012, 08:01     Упростить код
Ответ Создать тему
Опции темы

Текущее время: 17:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru