Avatar billede hoseth Nybegynder
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;
}
Avatar billede arne_v Ekspert
20. oktober 2004 - 19:19 #1
Fordi '0' er 48.

Bogstavet nul har en værdi i ASCII tabellen på 48.
Avatar billede arne_v Ekspert
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
Avatar billede sovsekoder Nybegynder
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
Avatar billede hoseth Nybegynder
20. oktober 2004 - 19:22 #4
Tak for hjælpen
Avatar billede sovsekoder Nybegynder
20. oktober 2004 - 19:22 #5
numlock = nummer tastaturet :D
Avatar billede arne_v Ekspert
20. oktober 2004 - 19:43 #6
hmmm............
Avatar billede hoseth Nybegynder
20. oktober 2004 - 19:54 #7
hmmm... hvad?
det var måske ikke dit svar jeg accepterede - er helt ny her på siden. Sorry
Avatar billede arne_v Ekspert
20. oktober 2004 - 19:55 #8
Nej du accepterede dit eget svar
Avatar billede arne_v Ekspert
20. oktober 2004 - 19:57 #9
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis