| Autor |
Nachricht |
Otz110
Mitglied
Benutzerprofil
Anmeldungsdatum: 12.03.2010
Beiträge: 85
|
Otz110 Mitglied
11:48:09 13.01.2012 Titel: |
einzelne Ziffern einer Zahl auslesen |
Zitieren |
Hallöchen
wie kann ich die einzelnen Ziffern einer int zahl auslesen?
also z.b. 235
z1 = 2;
z2 = 3;
z3 = 5;
ich habe bischen mit % rumprobiert aber da bekomme ich ja immer nur die letzte zahl oder?
vielen Dank |
|
|
|
 |
Eisflamme
Mitglied
Benutzerprofil
Anmeldungsdatum: 26.06.2009
Beiträge: 2876
|
Eisflamme Mitglied
11:51:15 13.01.2012 Titel: |
|
Zitieren |
Hi,
% 10 ist eine gute Idee. Wenn Du jetzt vorher noch durch 10 hoch (Stelle - 1) teilst, kannst Du auch die Stelle auswählen. |
_________________ www.mihahome.de - Texte zu Englisch, Geographie sowie Präsentationen und Lesenswertes
|
|
 |
cooky451
Mitglied
Benutzerprofil
Anmeldungsdatum: 16.10.2010
Beiträge: 6871
|
cooky451 Mitglied
11:52:49 13.01.2012 Titel: |
Re: einzelne Ziffern einer Zahl auslesen |
Zitieren |
| Otz110 schrieb: |
ich habe bischen mit % rumprobiert aber da bekomme ich ja immer nur die letzte zahl oder? | Der Ansatz ist schon mal nicht schlecht. Du hast recht, man bekommt nur die letzte Zahl. Wäre das nicht toll, wenn man die letzte Zahl jetzt abschneiden könnte? Dann könnte man nämlich gleich noch mal die letzte Zahl auslesen. Und so weiter. yay.
Edit @Eisflamme
Sag doch nicht gleich alles, ist doch viel befriedigender wenn man es selbst rausfindet. -.- |
_________________ Sie sind nicht berechtigt unrechtmäßige Kopien dieses Datenträgers zu erstellen.™
Keksverteilungsbeauftragter
Zuletzt bearbeitet von cooky451 am 11:53:26 13.01.2012, insgesamt 1-mal bearbeitet |
|
 |
Otz110
Mitglied
Benutzerprofil
Anmeldungsdatum: 12.03.2010
Beiträge: 85
|
Otz110 Mitglied
11:56:17 13.01.2012 Titel: |
|
Zitieren |
| Code: | int zahl = 12345;
while(zahl){
cout<<zahl%10 << endl;
zahl/=10;
} | |
ausgabe:
5
4
3
2
1
wie gesagt benötige ich aber zuerst die höchstwertige ziffer also in dem beispiel die 1 da ich die zahl in ein array eintragen möchte... |
|
|
|
 |
cooky451
Mitglied
Benutzerprofil
Anmeldungsdatum: 16.10.2010
Beiträge: 6871
|
cooky451 Mitglied
11:59:00 13.01.2012 Titel: |
|
Zitieren |
| Otz110 schrieb: |
wie gesagt benötige ich aber zuerst die höchstwertige ziffer also in dem beispiel die 1 da ich die zahl in ein array eintragen möchte... | Das geht nicht. Also es geht schon, aber da musst du zu erst errechnen wie viele Stellen die Zahl in dem gewünschten Zahlensystem hat, und das Array dann rückwärts beschreiben. (Die "einfache" Lösung wäre halt die Zahlen so in ein Array zu schreiben und dann mit z.B. std::reverse() umzudrehen.) |
_________________ Sie sind nicht berechtigt unrechtmäßige Kopien dieses Datenträgers zu erstellen.™
Keksverteilungsbeauftragter
Zuletzt bearbeitet von cooky451 am 11:59:40 13.01.2012, insgesamt 1-mal bearbeitet |
|
 |
Otz110
Mitglied
Benutzerprofil
Anmeldungsdatum: 12.03.2010
Beiträge: 85
|
Otz110 Mitglied
12:03:53 13.01.2012 Titel: |
|
Zitieren |
| cooky451 schrieb: | | (Die "einfache" Lösung wäre halt die Zahlen so in ein Array zu schreiben und dann mit z.B. std::reverse() umzudrehen.) |
ahh das klingt nicht schlecht... das teste ich mal. melde mich gleich wieder |
|
|
|
 |
Eisflamme
Mitglied
Benutzerprofil
Anmeldungsdatum: 26.06.2009
Beiträge: 2876
|
Eisflamme Mitglied
12:04:46 13.01.2012 Titel: |
|
Zitieren |
cooky: Er musste ja immerhin das eine und das andere noch hintereinanderschreiben und er hat keinen Code bekommen... :>
Aber schau, es hat ihn ja eh nicht befriedigt. |
_________________ www.mihahome.de - Texte zu Englisch, Geographie sowie Präsentationen und Lesenswertes
|
|
 |
seldon
Unregistrierter
|
seldon Unregistrierter
12:26:54 13.01.2012 Titel: |
|
Zitieren |
Mit Rekursion ginge das hübsch:
| C++: | void print_vertically(unsigned x) {
if(x >= 10) {
print_vertically(x / 10);
}
std::cout << x % 10 << '\n';
} | |
Die Einbindung des Arrays ist Übungsaufgabe. |
|
|
|
 |
Otz110
Mitglied
Benutzerprofil
Anmeldungsdatum: 12.03.2010
Beiträge: 85
|
Otz110 Mitglied
12:26:57 13.01.2012 Titel: |
|
Zitieren |
nochmal ne Frage
wie finde ich raus wie groß ich das Array machen muss in dass ich die Zahl reinschreibe. Dazu benötige ich ja die Anzahl der Deziamalstellen der Zahl.
Im Netz habe ich jetzt etwas mit dem Log gefunden. Dazu benötige ich aber die math.h und ich will das Ganze ohne Stl machen.
Dann dachte ich mir ich zähle einfach durch:
| Code: | 1 2 3 4 5 6 7 8 | int count = 0;
while(zahl){
zahl= zahl/10;
count++;
} | |
und geb den Zählwert als Länge an das Array.
-> Fehler, der Wert muss konstant sein
habt ihr hierfür auch nochn Tipp für mich? |
|
|
|
 |
Patrickssj6
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.01.2012
Beiträge: 100
|
Patrickssj6 Mitglied
12:27:14 13.01.2012 Titel: |
|
Zitieren |
Ich hab ein paar Methoden ausprobiert. Ich habe keinen effizienten Algorithmus gefunden daher würde es denke ich schneller sein das ganze als ein string zu betrachten.
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | {
int zahl = 12345;
int zahlLänge = GetZahlLänge(zahl);
int[] ziffern = new int[zahlLänge];
for(int i = 0;i < zahlLänge;i++)
{
ziffern[i] = zahl % 10;
zahl /= 10;
}
for (int i = zahlLänge-1; i >= 0; i--)
{
MessageBox.Show(string.Format("Ziffern: {0}",ziffern[i]));
}
}
private int GetZahlLänge(int zahl)
{
int länge = 0;
int teiler = 1;
while (zahl / teiler >= 1)
{ länge++; teiler = teiler * 10; }
return länge;
}
} | | |
|
|
|
 |