Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Liczenie ile cyfr jest w liczbie

Ostatnio zmodyfikowano 2019-04-14 23:10
Autor Wiadomość
nanoant20
» 2019-04-13 20:06:31
tak długo dopóki jest ona większa od jeden
Chyba lepiej sprawdzać czy jest większa od dziewięciu (bo wtedy na końcu zawsze wystąpi liczba jednocyfrowa).
Hmmmm? Bo mozna. (taka wskazówka).
Mozna tak napisać pętlę, że wcale nie musi być tego założenia warunku [tzn. 1 czy 9)
zgodzisz się za mną @jankowalski25, prawda?
//edit to ja błędnie założyłem , że trzeba skorzystać z pętli for a przecież są inne pętle
P-174401
jankowalski25
» 2019-04-13 20:49:42
wcale nie musi być tego założenia warunku [tzn. 1 czy 9)
Jasne, że można. Ale akurat dziewiątka jest tutaj szczególna, bo to największa liczba jednocyfrowa (więc jeśli coś jest większe, to ma co najmniej dwie cyfry). Zresztą sprawdź sobie wyniki dla 0, 1 i 2 przy kodzie sprawdzającym w warunku pętli, czy liczba jest większa od jedynki. A bez takiego warunku z dziewiątką, to pewnie albo algorytm jest inny (jakieś stringi, logarytmy i inne podejścia), albo gdzieś masz ify, które w szczególny sposób traktują zero i jedynkę. Bo przy klasycznym podejściu chodzi o redukcję liczby cyfr, a poniżej jednej cyfry nie da się już zejść, więc algorytm powinien się zatrzymać na liczbie jednocyfrowej. Inaczej wykonasz jedno dzielenie więcej i uzyskasz zero (jako wynik dzielenia przez 10) lub jedynkę (bo nie jest większa od jedynki i wyjdziesz z pętli).

to ja błędnie założyłem , że trzeba skorzystać z pętli for a przecież są inne pętle
Myślę, że tutaj akurat najprościej użyć
while
, ale nawet jeśli użyjesz
for
, to przecież wystarczy trzymać licznik cyfr poza pętlą i też będzie dobrze. Pętle są zamienne, a wewnątrz
for
 do obliczenia prawdziwości warunku nie musisz używać licznika (czyli nie musisz z góry wiedzieć, ile razy pętla ma się wykonać).
P-174402
nanoant20
» 2019-04-13 21:03:07
tutaj akurat najprościej użyć
while
 zgadza się i jedna powtarzana instrukcja inkrementacja licznika. bez kombinowania


sprawdź sobie wyniki dla 0, 1 i 2 przy kodzie sprawdzającym w warunku pętli
//edit sprawdzam
dla liczby 0 wyniki są błędne daje wynik 0, (dla n>1 czy n>9)
dla liczby 1 wyniki są błędne daje wynik 0, (dla n>1 czy n>9)
dla liczby 2 dla
przy założeniu
; liczba > 1; licznik++
 ok
przy założeniu
; liczba > 9; licznik++
 zong daje 0

test zrobiłem używając clang++, FreeBSD, i Code::Blocks'a 17
clang++ -v
FreeBSD clang version 6.0.1 (tags/RELEASE_601/final 335540) (based on LLVM 6.0.1)
Target: i386-unknown-freebsd12.0
Thread model: posix
InstalledDir: /usr/bin

może na innym systemie i kompilatorze wychodzą inne wyniki?

//edit
@jankowalski25 Dziękuję, za uwagę, będę bardziej dociekliwy i uważny


P-174403
Kubaa321
Temat założony przez niniejszego użytkownika
» 2019-04-13 21:32:45
co w tym jest zle

#include <iostream>

using namespace std;



int main()
{


double x;
cin>>x;
    for(int i=0; x<1; i++)
{
    cout << x/10 << i;
}



}
P-174404
nanoant20
» 2019-04-13 21:37:10
co w tym jest źle
a co chcesz osiągnąć?
P-174405
Kubaa321
Temat założony przez niniejszego użytkownika
» 2019-04-13 21:42:19
Żeby program liczył ile cyfr jest w liczbie
np
wejscie 123
wyjscie 3
P-174406
nanoant20
» 2019-04-13 21:48:06
jak będziesz czytał z uwagą powyższe posty to masz już program napisany
user @jankowalski25 podał Ci linki na talerzu wystarczy przeczytać
C/C++
cfor( int i = 0; x < 1; i++ )
{
    cout << x / 10 << i;
}

- warunek w petli zły
- co w
cout
 robi to
i
, tam go nie powinno byc


P-174407
Kubaa321
Temat założony przez niniejszego użytkownika
» 2019-04-13 21:55:49
No ale ja sie chce dowiedziec co w tym jest zle
P-174408
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona