Witam!
Mam do napisania program na zajęcia z informatyki. Wszystko idzie ok, generalnie moim problemem jest funkcja licząca długość zmiennej typu string. Gdy kod wygląda w ten sposób:
#include <iostream>
#include <conio.h>
#include <sstream>
using namespace std;
string binarnie;
string x;
int zamien(int liczba)
{
int reszta = liczba%2;
x=(reszta+'0');
binarnie=binarnie+x;
while(liczba>1)
{
zamien(liczba/2);
break;
}
int dlugosc;
dlugosc=binarnie.size();
return dlugosc;
}
main()
{
int liczba1;
int badana;
cout<<"Podaj sprawdzana liczbe\n";
cin>>liczba1;
badana=zamien(liczba1);
cout<<badana;
getch();
}
wszystko działa w porządku (funkcja size zwraca prawidłową wartość - dla liczby 3 jej długość zapisu binarnego to 2, dla liczby 8 - 4, etc).
Problem zaczyna się gdy chcę do tego wszystkiego dołączyć pętlę - wtedy mam wrażenie że długości się dodają, ale w sumie nie wiem dlaczego. Kod wtedy wygląda w ten sposób:
#include <iostream>
#include <conio.h>
#include <sstream>
using namespace std;
string binarnie;
string x;
int zamien(int liczba)
{
int reszta = liczba%2;
x=(reszta+'0');
binarnie=binarnie+x;
while(liczba>1)
{
zamien(liczba/2);
break;
}
int dlugosc;
dlugosc=binarnie.size();
return dlugosc;
}
main()
{
int liczba1;
int badana=0;
cout<<"Podaj sprawdzana liczbe\n";
cin>>liczba1;
int i=0;
while (badana<=liczba1)
{
for (i;badana<=liczba1;i)
{
badana=zamien(i);
cout<<"i="<<i<<endl;
cout<<"b="<<badana<<endl;
i++;
}
}
getch();
}
Nie mam zielonego pojęcia co robię źle. Męczę się nad tym od kilku godzin, pewnie nie widzę jakiegoś błahego błędu... Proszę o pomoc...
P.S.
Witam na forum :)