Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Bei einer Variable einzelne Stellen auslesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.09.2003, 16:20 Uhr
~DieRuhevordemSturm
Gast


OK ich hab eine Zahl


int Zahl = 801416361 ;

jetze möchte ich eine Prüfziffer erstellen also z.B. erste Zahl *7 zweite Zahl *5 dritte zahl *7 vierte zahl *5 wie komme ich jetze an die einzelnen Stellen ran geht das überhaupt ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.09.2003, 16:35 Uhr
virtual
Sexiest Bit alive
(Operator)


In diesem speziellenFall könntest Du es so machen:
In C++:

C++:
unsigned pruefsumme(int zahl)
{
     unsigned sum = 0;
     std::stringstream strm;
     strm<<zahl;
     std::string str = strm.str();
     for(int i=0; i<str.size(); ++i)
         sum += (i%2?5:7)*(str[i]-'0');
     return sum;
}


In C:

C++:
unsigned pruefsumme(int zahl)
{
     unsigned sum = 0;
     char buffer[100]; /* Musst groß genug gewählt werden! */
     int i;
     sprintf(buffer, "%d", zahl);
     for(i=0; i<str.size(); ++i)
         sum += (i%2?5:7)*(buffer[i]-'0');
     return sum;
}


Alles unter der Voraussetzung, daß die erste Zahl der ersten Ziffer der zu prüfenden zahl entspricht. Wenn die Ziffern aber umgekehrt nummeriert sind, ist es deutlich einfacher:

C++:
unsigned pruefsumme(int zahl)
{
     unsigned sum = 0;
     for(int i=0; zahl!=0; zahl/=10)
     {
         sum += (i++%2?7:5)*(zahl%10);
     }
     return sum;
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.09.2003, 17:10 Uhr
~(un)wissender
Gast


Mensch, virtual, du gibst dir aber auch immer Mühe, toll !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.09.2003, 17:27 Uhr
~DieRuhevordemSturm
Gast


danke Virtual ich versteh das zwar noch nicht alles (Newbie aber werd mich schon durchfetzen)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.09.2003, 17:33 Uhr
0xdeadbeef
Gott
(Operator)



Zitat:
virtual postete

In C:

C++:
unsigned pruefsumme(int zahl)
{
     unsigned sum = 0;
     char buffer[100]; /* Musst groß genug gewählt werden! */
     int i;
     sprintf(buffer, "%d", zahl);
     for(i=0; i<[b]str.size()[/b]; ++i)
         sum += (i%2?5:7)*(buffer[i]-'0');
     return sum;
}




Welcher C-Compiler übersetzt dir das? Ich nehme an, du meintest

C++:
unsigned pruefsumme(int zahl)
{
     unsigned sum = 0;
     [b]size_t len;[/b]
     char buffer[100]; /* Musst groß genug gewählt werden! */
     int i;
     sprintf(buffer, "%d", zahl);
     [b]len = strlen(buffer);[/b]
     for(i=0; i < [b]len[/b]; ++i)
         sum += (i%2?5:7)*(buffer[i]-'0');
     return sum;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 22.09.2003 um 17:34 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.09.2003, 18:23 Uhr
virtual
Sexiest Bit alive
(Operator)


Sorry, beefy hat natürlich rwecht. Mein bultin-Compiler ist leider buggy by design
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: