Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C++ (auch C++0x und C++11) ::  einzelne Ziffern einer Zahl auslesen  
Gehen Sie zu Seite 1, 2, 3, 4  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Otz110
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.03.2010
Beiträge: 85
Beitrag 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: 2871
Beitrag 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: 6869
Beitrag 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
Beitrag 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: 6869
Beitrag 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
Beitrag 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: 2871
Beitrag 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




Beitrag 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
Beitrag 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
Beitrag 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. :confused:

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;
        }
    }
c++.de :: C++ (auch C++0x und C++11) ::  einzelne Ziffern einer Zahl auslesen  
Gehen Sie zu Seite 1, 2, 3, 4  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.