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 |
|
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ć). |
|
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 sprawdzamdla 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 0test 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 |
|
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; }
}
|
|
nanoant20 |
» 2019-04-13 21:37:10 |
|
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 |
|
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ć 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 |
|
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 |
|
1 « 2 » 3 4 |