Please to check the following solution.

Aug 2, 2018 at 11:45pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*HEllo everybody. i would like to see your recommendations and your quotes.

how can i optimize this code?
what is wrong into the code?
what can it be improved?*/

/*4.28 (Printing the Decimal Equivalent of a Binary Number)
Input an integer containing only 0s and 1s (i.e., a “binary” integer)
and print its decimal equivalent. Use the remainder and division
operators to pick off the “binary” number’s digits one at a time from
right to left. Much as in the decimal number system, where the
rightmost digit has a positional value of 1, the next digit left has a
positional value of 10, then 100, then 1000, and so on, in the
binary number system the rightmost digit has a positional value of
1, the next digit left has a positional value of 2, then 4, then 8, and
so on. Thus the decimal number 234 can be interpreted as 2 * 100
+ 3 * 10 + 4 * 1. The decimal equivalent of binary 1101 is 1 * 1 + 0
* 2 + 1 * 4 + 1 * 8 or 1 + 0 + 4 + 8, or 13.*/


//my answer
//from a binary to a decimal type.
//luis Fernando Pinzon.
//02/08/2018.

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
	//Initial variables.
	int number;
	int counter = 0;
	int holodeckResidue = 0;
	int holodeckQuotient;
	int baseTen = 10;
	
	//variables to  determine the potential  or  the number to multiplying in accordance with the position of the digit. 
	int holodeckPotentialOne = 0;
	int holodeckPotentialTwo = 1;
	int potential = 0;
	
	//store and join the value of  the digits
	int holodeckNumber = 0;
	
	//amount variables
	int combiner = 0;
	int totalAmount = 0;
	
	
	cout << "Conversion of binary to decimal" << endl;
	cout << "Introduce a binary number: ";
	cin >> number;
	
	holodeckQuotient = number;
	
	while(holodeckQuotient > counter)
	{
		//Separates the number in individual digits.
		holodeckResidue = holodeckQuotient %  baseTen;
		holodeckQuotient = holodeckQuotient / baseTen;
		cout << holodeckResidue << "    "; //inverse input
		
		//finds the  potential or number for each location
		potential = holodeckPotentialOne + holodeckPotentialTwo;
		holodeckPotentialOne = potential;
		holodeckPotentialTwo = potential;
		cout << potential << "    ";
		
		
		//store the multiplication of the  potential or number location.
		holodeckNumber =  holodeckResidue * potential;
		cout << holodeckNumber << "    ";
		cout << "\n";
		
		//add multiplitions up
		combiner += holodeckNumber;
		
		//cout << combiner ;
		
		counter++;	

	}
	
	//last location or position
	
	//to add another position, therefore the last.
	potential = holodeckPotentialOne + holodeckPotentialTwo;
	
	//initialaze again
	holodeckNumber = 0;
	
	//last calculate
	holodeckNumber =  holodeckQuotient * potential;
	
	
	cout << holodeckQuotient << "    ";//first number...last location
	cout << potential << "    "; // last potential for last location 
	cout << holodeckNumber << endl; //last  multiplication
	
	totalAmount = combiner + holodeckNumber; //total amount, finally from binary to decimal type.

	cout << "\n"  << "you get  in decimal system the next value: " << totalAmount << " back" << endl;	
	
	
	return 0;
}

Last edited on Aug 2, 2018 at 11:46pm
Aug 3, 2018 at 3:20am
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>

int main()
{
    unsigned int number ;
    std::cout << "enter a binary number (an integer containing only 0s and 1s): " ;
    std::cin >> number ;

    unsigned int decimal_result = 0 ;
    unsigned int positional_value = 1 ;

    while( number > 0 ) // as long as there are digits remaining
    {
        const unsigned int digit = number%10 ; // extract the right most digit
        if( digit > 1 ) // sanity check
        {
            std::cout << "invalid binary digit " << digit << '\n' ;
            return 1 ; // failure, give up; return non-zero from the program
        }

        // add the positional value of the digit to the result
        if( digit == 1 ) decimal_result += positional_value ;
        number /= 10 ; // and discard the rightmost digit
        positional_value *= 2 ; // get the positional value of the next digit
    }

    std::cout << "decimal value: " << decimal_result << '\n' ;
}
Aug 3, 2018 at 3:30am
waoo man that code style is very simple and held, i need to go over it closely, i don't want anything goes out so i f i got doubts i'm gonna ask you.

thank you so much, gracias bro.
Last edited on Aug 3, 2018 at 3:30am
Aug 3, 2018 at 1:31pm
His name is JLBorges, but you can call him Sir! Damn it!
Aug 3, 2018 at 2:35pm
sure! thank you!
Aug 3, 2018 at 2:59pm
You can call me whatever you feel comfortable with.
Topic archived. No new replies allowed.