nanoant20 |
» 2019-04-13 22:00:04 No ale ja sie chce dowiedziec co w tym jest zle |
wytłuściłem Ci to |
|
pekfos |
» 2019-04-13 22:03:19 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. |
|
Kubaa321 Temat założony przez niniejszego użytkownika |
» 2019-04-13 22:05:27 To co zamiast double. Sorry ale ucze sie dopiero |
|
pekfos |
» 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++. |
|
jankowalski25 |
» 2019-04-14 00:04:46 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. 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. |
|
nanoant20 |
» 2019-04-14 00:08:54 Nie. Jeśli program jest poprawnie napisany |
//edit o.k przetestowałem sobie wszystkie uwagi 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 |
|
Kubaa321 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; } } |
|
pekfos |
» 2019-04-14 12:00:52 Nie masz funkcji main(), nie dołączasz <string>. |
|
1 2 « 3 » 4 |