Dziwny problem występujący w pętli

0

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 :)

2

jeśli chodzi Ci o to, ile liter jest w Twoim stringu to wystarczy prosty sposób :

 
string str;
cout  << "Znakow w stringu: " << str.length();
1

binarnie=binarnie+x;
oczywiście, że długości się dodają. zmienna binarnie jest globalna, więc jeśli odpalasz zamien() w pętli, to binarnie

 rośnie i rośnie…
0
Azarien napisał(a)

binarnie=binarnie+x;
oczywiście, że długości się dodają. zmienna binarnie jest globalna, więc jeśli odpalasz zamien() w pętli, to binarnie

 rośnie i rośnie…


No tak... Nie pomyślałem o tym...

Gość: Generalnie potrzebowałem dalej wykorzystać długość tego łańcucha, a nie tylko go wyświetlić. Poradziłem sobie w ten sposób że zmieniłem typ funkcji zmiana na string, i tam dalej to już obrabiałem jak chciałem.

Dzięki za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1