Anzahl der Nummern in einer mehrstelligen Zahl auslesen
-
Hallo!
Ich bin neu in C++ und bin grade über das "Hello World" hinaus.
Ich schreibe grade eine mini Consolen Anwendung, in der über cin eine Zahl abgefragt wird, die aber 4 Stellen haben soll. Ich versuche über eine if Abfrage die Eingabe abzufangen. Leider weiß ich nicht, wie ich die im Array speicher[0] gespeicherten Wert auf die Anzahl der Zeichen zu überprüfen. Gibt es da irgend eine Möglichkeit die Anzahl auszulesen?
mein Ansatz war bisher so:
#include <iostream.h>
#include <algorithm>int main()
{int speicher[4];
std::cout<<"Geben Sie eine 4stellige Zahl ein:"<<endl;
std::cin>>speicher[0];
std::cout<<count(speicher[0]);if(sizeof(speicher[0]<4))// das geht so nicht
{
std::cout<<speicher[0]<<"kleiner 4"<<endl;
}if(sizeof(speicher[0]>4))// auch nicht
{
std::cout<<speicher[0]<<"großer 4"<<endl;
}}
-
Wo ist meine Antwort hin??? Ich hasse denjenigen der verantwortlich ist dass sie gelöscht ist!
int main() { int num; cin >> num; cout << "Stellen: " << ceil(log10(static_cast<double>(num))); }int main() { int num; cin >> num; int stellen = 0; while(num) { ++stellen; num /= 10; } cout << "Stellen: " << stellen; }
-
Du könntest auch einfach überprüfen, ob die eingegebene Zahl zwischen 1000 und 9999 (einschließlich) liegt.
-
Grgrgr schrieb:
Wo ist meine Antwort hin??? Ich hasse denjenigen der verantwortlich ist dass sie gelöscht ist!
schlimm, wenn antworten einfach verschwinden. sag bescheid, wenn das öfters vorkommt, ich werde mich dann drum kümmern. ich hab letztens hier nur einen von so einem KennerDer...-troll gelöscht, die haben in fachforen nix zu suchen.
-
Grgrgr schrieb:
int main() { int num; cin >> num; cout << "Stellen: " << ceil(log10(static_cast<double>(num))); }bei log10(1) = 0, das gleiche Problem hat man bei allen 10er Potenzen, dass das Ergebniss um eins zu klein ist
-
Ich danke euch!
Wegen der Null, das kann man ja abfangen!
#include <iostream.h> #include <algorithm> int main() { int speicher[4], check; while (check != 4) { std::cout<<"Geben Sie eine 4stellige Zahl ein:"<<endl; std::cin>>speicher[0]; check = ceil(log10(static_cast<double>(speicher[0]))); std::cout<<check<<endl; if(check != 4) { if(check == 0) { check = 1; } std::cout<<"Sie haben eine "<<check<<"stellige Zahl eingegeben!"<<endl<<"bitte eine 4stellige Zahl eingeben!"<<endl; } } }//Edit: Codetags korrigiert (evilissimo)
-
hand hoch, wer packt hier freiwillig nen log aus?
int stellen(int zahl){ if(zahl==0) return 1; int anzahl=0; for(;zahl;zahl/=10) ++anzahl; return anzahl; } int main() { int speicher[4], check; while (check != 4) { std::cout<<"Geben Sie eine 4stellige Zahl ein:"<<endl; std::cin>>speicher[0]; check = stellen(speicher[0]); std::cout<<check<<endl; if(check != 4) { std::cout<<"Sie haben eine "<<check<<"stellige Zahl eingegeben!"<<endl<<"bitte eine 4stellige Zahl eingeben!"<<endl; } } }
-
Was meinst du damit?
ps: dumme frage wie mache ich das mit dem
test?
-
RaoulVB schrieb:
Was meinst du damit?
Wegen dieser Frage höhere Gleitkomma-Arithmetik (Logarithmus) auszupacken, dürfte in die Kategorie "mit Kanonen auf Spatzen schießen" fallen

PS: Wenn es dir nur um die Frage "ist es eine 4stellige Zahl?" geht, dürfte selbst die Schleifenkonstruktion zu viel sein:
cin>>speicher[0]; while(speicher[0]<1000||speicher[0]>9999) { cout<<"Die Zahl war zu "<<(speicher[0]<1000?"kurz":"lang")<<endl; cout<<"Bitte 4stellige Zahl eingeben:"; cin>>speicher[0]; }
-
Mir geht es primär dadrum die Programierlogik zu verstehen, das ist nur ein Beispiel, dass ich nachvollziehen kann, wie ich bestimmte Sachen abfangen bzw ermitteln kann.
Ist schon klar das es viel Aufwand ist für das wenige, soviel zu tippen, aber es hilft mir es zu verstehen

zb jetzt das hier:
#include <iostream.h> #include <algorithm> int main() { int speicher[6], check, var; while (check != 4) { std::cout<<"Geben Sie eine 4stellige Zahl ein:"<<endl; std::cin>>speicher[0]; if(speicher[0] == 0000) { speicher[0] = 1; } check = ceil(log10(static_cast<double>(speicher[0]))); std::cout<<check<<endl; if(check != 4) { if(check == 0) { check = 1; } std::cout<<"Sie haben eine "<<check<<"stellige Zahl eingegeben!"<<endl<<"bitte eine 4stellige Zahl eingeben!"<<endl; } } speicher[1]= speicher[0]%10; //* lezte Zahl speicher[2]= speicher[0]%100; // * vor- und letze speicher[3]= speicher[2]/10;//* vorletze speicher[4]= speicher[0]/100;//*erste und zweite speicher[5]= speicher[4]%10;//* zweite Zahl speicher[6]= speicher[0]/1000;//* erste Zahl std::cout<<"erste Zahl:"<<speicher[6]<<endl<<"zweite Zahl:"<<speicher[5]<<endl<<"dritte Zahl:"<<speicher[3]<<endl<<"vierte Zahl:"<<speicher[1]<<endl; var=speicher[6]+speicher[5]+speicher[3]+speicher[1]; std:cout<<"Die Quersummer der 4 Zahlen lautet: "<<var<<endl; }alles nur übungen ums lernen willen
-
Achso - dann gib deinem Programm mal die Eingabe 10000 und beobachte, was passiert
