code not working to the end

N

net user

hi,

Anything to improve for someone learning in the code below...

/* 1- Compute a n*2 value for 64 iterations */
/* 2- Maximum integer variable iterations for n*2 */
/* 3- Computer the number of iteration needed to reach the value in
question 1 */
int main()
try
{
long double var_long_double = 1 ;
long double var_long_double2 = 1 ;
unsigned int var_integer = 1 ;
unsigned int var_integer2 = 1 ;
int i = 1 ;
int nb = 1 ;
// QUESTION 1
while (i < 64)
{
var_long_double *= 2 ;
i++ ;
}
cout << "\n1- Value for 64 iteration : " << var_long_double ;
//QUESTION 2
while (var_integer > 0)
{
cout << "\n" << nb << "\tvar_int : " << var_integer ;
var_integer *= 2 ;
nb++ ;
if (var_integer > 0)
var_integer2 = var_integer ;
}
cout << "\n\n2- Number as integer variable for " << nb << "
incrementations : " << var_integer2 ;
// QUESTION 3
i = 1 ;
while (var_long_double >= 0)
{
var_long_double /= 2 ;
if (var_long_double >= 0)
var_long_double2 = var_long_double ;
else
break ;
i++ ;
}
cout << "\n3-Number of maximum iteration for i as int " << i
<<
"\n" ;
cout << "\n\n" ;
system("pause") ;
return 0 ;
}

catch (runtime_error e)
{
cout << e.what() << '\n' ;
keep_window_open("~") ;
}

catch(...)
{
cout << "Exiting\n" ;
keep_window_open("~") ;
}

I am running this on a 64 bits computer using Windev.
Above the fact that I don't see the code above very reliable, I don't
understand why I get to -2 147 483 648 with an unsigned int variable.
From my understanding it should be 4 294 967 295...
 
I

Ian Collins

hi,

Anything to improve for someone learning in the code below...

It would have been helpful to have posted the real code!
/* 1- Compute a n*2 value for 64 iterations */
/* 2- Maximum integer variable iterations for n*2 */
/* 3- Computer the number of iteration needed to reach the value in
question 1 */
int main()
try
{
long double var_long_double = 1 ;
long double var_long_double2 = 1 ;
unsigned int var_integer = 1 ;
unsigned int var_integer2 = 1 ;
int i = 1 ;
int nb = 1 ;

Declaring these where they are used is better style.
// QUESTION 1
while (i< 64)

A for loop would have been clearer.
{
var_long_double *= 2 ;
i++ ;
}
cout<< "\n1- Value for 64 iteration : "<< var_long_double ;
//QUESTION 2
while (var_integer> 0)

A for loop would have been clearer.
{
cout<< "\n"<< nb<< "\tvar_int : "<< var_integer ;

This outputs 2^(n-1)).
var_integer *= 2 ;
nb++ ;
if (var_integer> 0)
var_integer2 = var_integer ;
}
cout<< "\n\n2- Number as integer variable for "<< nb<< "
incrementations : "<< var_integer2 ;
// QUESTION 3
i = 1 ;
while (var_long_double>= 0)

This will run for (almost) ever.
{
var_long_double /= 2 ;

var_long_double will never become zero.
if (var_long_double>= 0)
var_long_double2 = var_long_double ;
else
break ;
i++ ;
}
cout<< "\n3-Number of maximum iteration for i as int "<< i
<<
"\n" ;
cout<< "\n\n" ;
system("pause") ;
return 0 ;
}

catch (runtime_error e)

Catching exceptions by value is not a good idea, catch by const reference.
{
cout<< e.what()<< '\n' ;
keep_window_open("~") ;
}

catch(...)
{
cout<< "Exiting\n" ;
keep_window_open("~") ;
}

I am running this on a 64 bits computer using Windev.
Above the fact that I don't see the code above very reliable, I don't
understand why I get to -2 147 483 648 with an unsigned int variable.
From my understanding it should be 4 294 967 295...

Where do you get that value?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top