Ilość liczb po przecinku

0

Witam, muszę napisać funkcje liczącą miejsca po przecinku np. w liczbie 2.876 ma mi policzyć, że są 3 miejsca. Napisałem program na wiele sposobów i ciągle pojawia się taki problem, że prawidłowo liczy mi dla liczb powiedzmy 0.22 , 0.2, 0.2222 a jak wpisze 0.222 to program się zawiesza. Nie mam pojęcia co źle robię.To tak jak by niektóre liczby mu się chciało liczyć a niektóre nie. Proszę o pomoc ;D

#include<iostream>
using namespace std;

int main()
{
int z;
double l;
cin >> l;
for (z = 0; l > (int)l; z++)
{
l *=10;
}

cout << "\n" << z;
system("PAUSE");

}

0

Wygląda na jakiś błąd przy porównywaniu (dodałem wyświetlanie l w pętli, i wygląda na to że nie uznaje 222 za równą int(222), starczy jednak jeśli jest zero na początku dodać do liczby jedność, i już działa dla 3 po przecinku.

to będzie coś takiego


#include<iostream>

using namespace std;

int main()
{
    int z;
    double l;
    cin >> l;
    if (int(l) == 0) l += 1;
    for (z = 0; l > (int)l; z++)
    {
        l *=10;
    }

    cout << "\n" << z;

}

1

Powiedz mi ile jest liczb po przecinku kiedy policzę 1.0/3 ?

unsigned cnt=0;
for(value=fmod(fabs(value),1);(value>0)&&(cnt<19);++cnt) value=fmod(10*value,1);
0

Ok kolejna wersja, tym razem czytająca po znaku

#include<iostream>
#include<stdio.h>

using namespace std;

int main()
{
    char znak = '0';
    bool czujka = false;
    int wynik = 0;
    while (znak != '\n')
    {
        if ( znak != '.' )
            if (znak < '0' || znak > '9')
                break;
        if (czujka == true) wynik += 1;
        if (znak == '.') czujka = true;
        znak = getchar();
    }
    cout << wynik;
}
 
0

Po wpisaniu 0.3345 dalej wyskakuje błąd ... Odpowiedź na ten problem znalazłem tutaj : http://www.dobreprogramy.pl/kubut/Czy-komputer-potrafi-liczyc,49207.html. Przynajmniej tak mi się wydaje. Jest może jakiś sposób z liczeniem wpisywanych znaków ?

0

Przepraszam, szybciej napisałem niż przeczytałem ;D Ta wersja ze znakami działa . Dziękuję bardzo

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