#include <iostream>
using namespace std;
int licznik = 0; int petlaIle = 0;
int add( unsigned int a, unsigned int b )
{
if( b == 0 )
return a;
return add( a ^ b,( a & b ) << 1 );
}
void compare( unsigned int & a, unsigned int & b, const int & abegin2, unsigned int tab1[ ], unsigned int tab2[ ] )
{
b -= 1;
for( int i = 0; i <= 30; i++ )
{
petlaIle++;
int abegin = abegin2;
if( b >= tab1[ i ] + 1 )
{
licznik++;
a += abegin <<= tab2[ i ];
b -=( tab1[ i ] );
if( b <= 0 )
return;
}
}
while( b >= 1 )
{
licznik++;
a += abegin2;
b -= 1;
if( b <= 0 )
return;
}
}
int main()
{
unsigned int a;
unsigned int b;
unsigned int tab1[ 31 ] = { 2147483648, 1073741824, 536870912, 268435456, 134217728, 67108864, 33554432, 16777216, 8388608, 4194304, 2097152, 1048576, 524288, 262144, 131072, 65536, 32768, 16384, 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2 };
unsigned int tab2[ 31 ] = { 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
cin >> a;
cin >> b;
const int abegin2 = a;
compare( a, b, abegin2, tab1, tab2 );
cout << "a = " << a << "\n";
cout << "licznik = " << licznik << "\n";
cout << "petla = " << petlaIle << "\n";
}
Witam z powrotem oto poprawiony program. Jakby coś było nie tak lub da się to zrobić lepiej z moją wiedzą z kursu jestem otwarty na wszelkie sugestie. Jeszcze raz dziękuje za poświęcony mi czas. Ogólnie ja sobie wypisałem te liczby do tablic z 2 pętli for i skopiowałem to co stworzyły i je usunąłem aby program lepiej działał i nie program musiał tego wykonywać za każdym razem.