Liczenie ile cyfr jest w liczbie
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Liczenie ile cyfr jest w liczbie

AutorWiadomość
» 2019-04-13 22:00:04
No ale ja sie chce dowiedziec co w tym jest zle
wytłuściłem Ci to
P-174409
» 2019-04-13 22:03:19
C/C++
double x;
cin >> x;
for( int i = 0; x < 1; i++ )
{
    cout << x / 10 << i;
}
x się nie zmienia, warunek w pętli jest zły. Najwyraźniej nie mówimy w tym samym języku - 'dziel przez 10 aż' znaczy, że masz modyfikować liczbę, a nie tylko wykonywać działanie. Zakładając liczby dodatnie, liczby większe równe 10 mają więcej niż jedną cyfrę. Każda liczba ma co najmniej jedną cyfrę. Więc zaczynaj liczenie od 1 i dziel przez 10, dopóki liczba jest większa równa 10.
Jeśli użyłeś double umyślnie, to trzeba by zapytać, czy chcesz też liczyć cyfry po przecinku. Jeśli tak, powinieneś wczytywać liczbę jako tekst, bo żaden typ ułamkowy wbudowany w C++ nie zachowa liczby cyfr po przecinku.
P-174410
Temat założony przez niniejszego użytkownika
» 2019-04-13 22:05:27
To co zamiast double. Sorry ale ucze sie dopiero
P-174411
» 2019-04-13 22:08:53
int, na przykład. double też może być, tylko że jeśli używasz tego typu dlatego, że może trzymać ułamki, bo chcesz w 123.45 policzyć 5 cyfr, a nie 3, to wiedz że do tego nie nadaje się żaden typ liczbowy wbudowany w C++.
P-174412
» 2019-04-14 00:04:46
daje wynik 0
Zwróć uwagę na to, że nie istnieje liczba zerocyfrowa. Jak startujesz od zera, to porównanie z dziewiątką od razu zatrzyma pętlę, więc w wyniku dostaniesz zero. Dlatego lepiej jest od razu wystartować od jedynki w liczniku cyfr.

(dla n>1 czy n>9)
Jeśli weźmiesz n>1, to wynik dla zera i jedynki będzie inny niż dla wartości od 2 do 9. Porównanie z dziewiątką jest właśnie po to, aby nie było takich problemów i dla wszystkich wartości od 0 do 9 pętla się zatrzymywała (bo mają tyle samo cyfr).

może na innym systemi i kompilatorze wychodzą inaczej?
Nie. Jeśli program jest poprawnie napisany, to wyniki będą takie same. Właśnie o to mi chodziło, aby pokazać, dlaczego tam dziewiątka pasuje, a porównanie z jedynką działa błędnie.
P-174413
» 2019-04-14 00:08:54
Nie. Jeśli program jest poprawnie napisany

//edit o.k przetestowałem sobie wszystkie uwagi

  • wszystko zależy od wartości startowej jakią przyjmuje licznik i warunku jaki jest stawiany
  • racja - lepiej jest stawiać warunek (n>9) i licznik = 1;
  • racja - kompilator oraz system nie mają wpływu na wynik  (sprawdziłem)

najbezpieczniej i najprościej jest to napisać w
while
 z licznik = 1;


Dzięki serdeczne za zwrócenie uwagi, nie zauważyłem tego problemu wcześniej, ponieważ nie podstawiałem liczb 1-cyfrowych, a na pewno nie podstawiałem wartości 0 i 1 D




P-174414
Temat założony przez niniejszego użytkownika
» 2019-04-14 10:59:32
Poprawi ktos ten kod zeby bylo wszystko dobrze?

#include <iostream>

using namespace std;
{


int n;
{


std::cin >> n;
int nToString = std::to_string(n).length();
std::cout << nToString;
}
}
P-174415
» 2019-04-14 12:00:52
Nie masz funkcji main(), nie dołączasz <string>.
P-174417
1 2 « 3 » 4
Poprzednia stronaStrona 3 z 4Następna strona