Pytanie teoretyczne od wiecznie początkującego amatora-hobbysty c++.
Program ma określić z ilu cyfr składa się liczba. Poszperałem w symfonii J.Grębosza i stworzyłem taki kod:
#include <iosream>
#include <string>
int main()
{
string ile;
std::cin >> ile;
std::cout<<"\n";
std::cout<<ile.size();
return 0;
}
Autorzy zadania zamieścili je w dziale iteracje. Czy istnieje pętla for która działałaby tak:
Przy każdej kolejnej iteracji zwiększałaby dzielnik o wielokrotność 10 tj. pierwszy obrót pętli dzielimy liczbę podana przez użytkownika przez 10, następnie o 100, 1000 i tak dalej, aby dojść do momentu gdy liczba/dzielnik<1
Np. 120/10>1 100/10>1 1/10<1
120/100>1 100/100=1
120/1000<1 100/1000 <1
Trzy iteracje pętli, czyli liczba składa się z trzech cyfr. Jedna iteracja jedna cyfra
Na końcu wyświetliłbym komunikat:
cout<< „liczba składa się z: ” <<i<< „cyfr”;
Jak to jednak ogarnąć w c++ ?
Próbowałem coś takiego, ale nie działa. Dodatkowo, gdy liczba jest jedynka petla nie wykona sie ani razu 1/10<1
#include <iostream>
using namespace std;
main()
{
int i;
int dzielnik=10;
int liczba;
std::cout<<"podaj liczbe: "<<std::"\n";
std::cin>>liczba;
std::cout<<"\n";
for (i=0;(liczba/dzielnik)>=1;i++)
{
if(liczba/dzielnik<1)
{
std::cout<<"liczba sklada sie z: "<<i<<"cyfr";
}
dzielnik=dzielnik*10;
}
return 0;
}
Z góry dziękuję za wszelką pomoc