20. oktober 2004 - 19:18
Der er
8 kommentarer og 1 løsning
problemer i et lille program
hvorfor skal jeg trække 48 fra før jeg får det rigtige resultat ud? #include <vcl.h> #include <iostream> using namespace std; main() { char cpr[11]; int dag, mdr, aar; cout << "Skriv cprnummer i formatet ddmmaa-xxxx: " << endl; cin >> cpr; dag=((cpr[0]-48)*10+(cpr[1]-48)); mdr=((cpr[2]-48)*10+(cpr[3]-48)); aar=((cpr[4]-48)*10+(cpr[5]-48)); cout << "Dag:" << dag << endl; cout << "Maaned:" << mdr << endl; cout << "Aar:" << aar << endl; cin >> cpr; return 0; }
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
20. oktober 2004 - 19:19
#1
Fordi '0' er 48. Bogstavet nul har en værdi i ASCII tabellen på 48.
20. oktober 2004 - 19:20
#2
Jeg vil da foreslå at du skriver: dag=((cpr[0]-'0')*10+(cpr[1]-'0')); mdr=((cpr[2]-'0')*10+(cpr[3]-'0')); aar=((cpr[4]-'0')*10+(cpr[5]-'0')); det synes jeg gør det lidt mere læseligt
20. oktober 2004 - 19:22
#3
det er fordi du læser et char ind (som er ASCII). ASCII kode 48 er det der svarer til "0" (prøv f.eks i en notepad at holde venstre alt ned og tryk tallet 48 indpå numlock, slip alt tasten og der kommer et 0!, hvis du trykker 65 kommer der f.eks et stort "A"). '0' = 48 '1' = 49 '2' = 50 '3' = 51 '4' = 52 osvosv.. dvs hvis du trækker 48 fra '0' så får du integer værdien 0 (da '0'=48). Du har altså lavet en ASCII-tal til integer konverter :o
20. oktober 2004 - 19:22
#4
Tak for hjælpen
20. oktober 2004 - 19:22
#5
numlock = nummer tastaturet :D
20. oktober 2004 - 19:43
#6
hmmm............
20. oktober 2004 - 19:54
#7
hmmm... hvad? det var måske ikke dit svar jeg accepterede - er helt ny her på siden. Sorry
20. oktober 2004 - 19:55
#8
Nej du accepterede dit eget svar
20. oktober 2004 - 19:57
#9
Kurser inden for grundlæggende programmering