Cześć, dopiero uczę się programować w c++ i ostatnio zacząłem bawić się tablicami. Mam jednak problem ponieważ gdy chcę obliczyć ilość elementów w tablicy raz wychodzi mi dobry wynik a czasami zły . Program ma za zadanie wydrukowac liczbe zmienno przecinkowo w taki sposob, że cyfry przed przecinkiem będą linie wyzej niz te po przecinku. Tutuaj umieszczam kod:
#include <iostream>
using namespace std;
int ile(double k,unsigned long long liczba)
{
int N=0;
while(k>=1)
{
k/=10;
}
for(long long m=1; liczba != k*m;)
{
m*=10;
liczba=k*m;
N++;
cout << m;
if(liczba==k*m)
return N;
}
return N;
}
int main()
{
double k=675.56;
unsigned long long liczba=0;
int N;
N=ile(k,liczba);
cout<<"Wielkosc tablicy : "<<N<<endl<<endl;
int i=N-1,licznik=0;
int cyfry[N]= {};
for(int m=1; liczba!= k*m;)
{
m*=10;
liczba=k*m;
licznik++;
}
while(liczba > 0)
{
cyfry[i]= liczba %10;
liczba /= 10;
i--;
}
for(int j=0; j<N; j++)
{
cout<<cyfry[j]<<" ";
if(j==N-1-licznik)
cout << "\n";
}
cout <<"\n\nMiejsca po przecinku : " <<licznik ;
return 0;
}
""
Błędny fragment :
""
int ile(double k,unsigned long long liczba)
{
int N=0;
while(k>=1)
{
k/=10;
}
for(long long m=1; liczba != k*m;)
{
m*=10;
liczba=k*m;
N++;
if(liczba==k*m)
return N;
}
return N;
}
""
który nie dziala dla np. k= 675.31, a działa dla np k=675.56 nie wiem dlaczego tak jest, gdyż wydaje mi się, że napisałem dobrze? Proszę o pomoc z góry dziękuję.