Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » 7 + 1 = 56 ? Array-logik

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
04.10.2003, 16:21 Uhr
~DieRuhevordemSturm
Gast


hi ich wieder, also folgendes Problem :

Code:
#include <iostream>
using namespace std;

int main()

{
char Geburtstag[5];

cin.get(Geburtstag[0]);

cout << Geburtstag[0] + 1;
return 0;
}




OK also ich geb halt eine Zahl ein z.B. 7 ok ? !
so und der specihert die auch im Array 0 ab als 7 , hab ich überprüft
aber wenn ich jetze plus 1 rechne kommt 56 raus ! was soll das denn ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.10.2003, 16:28 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


tja weil 7 = (char)55! wenn du so schreibst wie oben castet er dir die 55 (Geburtstag[0]) in int und gibt es dann aus!

Entweder nimm gleich als "Einlesevariable" int oder mach bei sowas folgendes:


C++:
cout << (char)(Geburtstag[0] + 1);


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.10.2003, 16:32 Uhr
mmc20
puss in boots


hi,
liegt wohl daran das du char nutzt. weil der ascii-code von 7 iss 55 und eins dazu iss halt 56, mach doch einfach aus dem char ein int, dann müsstes problemlos klappen.

gruß
micha

edit: mist da war einer schneller !

Dieser Post wurde am 04.10.2003 um 16:35 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.10.2003, 16:40 Uhr
Pablo
Supertux
(Operator)


Oder nur richtig casten:


C++:
#include <iostream>
using namespace std;
int main()
{
    char Geburtstag[5];

    cin.get(Geburtstag[0]);

    cout << ((int) Geburtstag[0]) + 1;
    return 0;
}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.10.2003, 16:49 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


@Pablo, bei dir kommt aber wieder 56 raus
er will ja das 8 rauskommt
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.10.2003, 16:50 Uhr
Pablo
Supertux
(Operator)


ach stimmt, wohl ein Compile Fehler von mir!!!!

Bearbeitung:

Dann

C++:
#include <iostream>
using namespace std;
int main()
{
    char Geburtstag[5];

    cin.get(Geburtstag[0]);

    cout << ((int) Geburtstag[0] - '0') + 1;
    return 0;
}




--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 04.10.2003 um 16:51 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.10.2003, 16:55 Uhr
0xdeadbeef
Gott
(Operator)


Wie wärs ganz einfach mit

C++:
int geburtstag[3]; //tag, monat, jahr
cin >> geburtstag[0]; //liest gleich einen int ein.


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.10.2003, 16:59 Uhr
~DieRuhevordemSturm
Gast


@0xdeadbeef ich will ja nur ein Zeichen ham !

also cin.get() aber das verträgt sich nicht mit dem Datentyp int
(weiss nicht wieso probierts halt aus)

@ Pablo

dein Quelltext funzt zwar aber was soll das mit Geburtstag[0] - '0' bedeuten
voll verwirent ! wie kommst du auf '0' kannste das mal erklären und warum ist minus 48 das selbe wie '0' ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
04.10.2003, 17:09 Uhr
0xdeadbeef
Gott
(Operator)


Der Rechner speichert alle Zeichen, auch Buchstaben und Sonderzeichen, als Zahlen ab. Naja, genaugenommen als Kombinationen von aufgeladen/entladen-Zuständen, aber das stellt man normalerweise als binäre Zahlen dar. Jedes Zeichen entspricht einer Zahl, und nach der ASCII-Konvention ist '0' == 48. Da diese Konvention intelligenterweise außerdem die anderen Ziffern direkt über der Null anordnet ('1' == 49, ..., '9' == 57), kann man eine Ziffer, die von der Tastatur eingelesen wurde, in ihren Wert zurückrechnen, indem man den ASCII-Code von '0', also 48, abzieht.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
04.10.2003, 17:14 Uhr
~DieRuhevordemSturm
Gast


Ahh danke ! ich habs auch gerade in der ASCII-Tabelle gesehn -> hät ich mir auch selber denken können (#verpeilt)

 
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: