Avatar billede Slettet bruger
26. november 2001 - 18:16 Der er 15 kommentarer og
3 løsninger

omregning fra hex til dec

Jeg har lavet dette program:

#include <iostream.h>

void main(void)
{
    unsigned int tal;
    cin >> tal;
    cout << tal << endl;
    tal=(tal*0.209375)-3.2;
    cout << tal << endl;
}

som MEGET gerne skulle kunne udregne en hex værdi om via formlen (tal*0.209375)-3.2 men da tal er en hex værdi kokser det hele for mig.

Nogle forslag?
Avatar billede henrik_ffc Nybegynder
26. november 2001 - 18:33 #1
Du kan starte med at definere tal som en string.
Derefter kan du indtaste en hexværdi (string) ind i tal.
Denne kan konverteres til decimal i en ny variabel (fx dectal).
Og så kan du her til sidst lave din beregning på din dectal istedet.
Avatar billede Slettet bruger
26. november 2001 - 18:38 #2
hvordan skal det så se ud?

void main(void)
{
    tal(char string);
    cin >> tal;
    cout << tal << endl;
    tal=(tal*0.209375)-3.2;
    cout << tal << endl;
}

elller er jeg totalt på vildspor!
Avatar billede henrik_ffc Nybegynder
26. november 2001 - 18:42 #3
int hex2dec(string tal)
{
  // denne må du selv lave...
}

void main(void)
{
    string tal;
    unsigned int dectal;
    cin >> tal;
    cout << tal << endl;
    dectal=hex2dec(tal);
    dectal=(dectal*0.209375)-3.2;
    cout << dectal << endl;
}
Avatar billede Slettet bruger
26. november 2001 - 19:37 #4
Jeg fatter bare minus lige nu, jeg kan slet ikke komme videre. Heller ikke med det du skrev, jeg har forsøgt mig men får fejl konstant.

Den påstår også at:
int hex2dec(string tal)
{
  // denne må du selv lave...
}

ikke kan lade sig gøre... ligemeget hvad jeg sætter ind der!!
Avatar billede henrik_ffc Nybegynder
26. november 2001 - 20:42 #5
Har du inkluderet <string> ?
Avatar billede Slettet bruger
26. november 2001 - 20:54 #6
Jeps

\'string\' kan ikke starte en parameter dekleration er min fejl!!
Avatar billede ttn.bonk Nybegynder
26. november 2001 - 22:54 #7
Prøv med

#include <iostream.h>

void main(void)
{
    unsigned int tal;
    char sHexTal[100];
    cin >> tal;
    cout << tal << endl;
    sprintf(sHexTal,\"0x%x\",tal);
    cout << sHextal << endl;
}

Det er lavet efter hukommelsen, måske skal der ekstra include statements.
Kan det ikke oversætte fordi sHExtTal er en char*,
prøv at type caste sHextTal til en CString.
Avatar billede ttn.bonk Nybegynder
26. november 2001 - 22:59 #8
Ups, jeg bar vist byttet om på hex og decimal.
Dvs. jeg har lavet dec2hex.
Istedet:

#include <iostream.h>

void main(void)
{
    unsigned int tal;
    char sHexTal[100];
    cin >> sHexTal;
    cout << sHexTal<< endl;
    sscanf(\"%x\",sHextTal,&tal);
    cout << tal << endl;
}

igen efter hukommelsen. Check evt. parametre i rutinerne sprintf og sscanf.
Avatar billede phpnewbie Nybegynder
26. november 2001 - 23:09 #9
Hmm.. Vi har vist det samme projekt på vores skole ;))

Jeg fik det lige til at virke.. Ved ikke Hvor FAEN du har fået dectal=(dectal*0.209375)-3.2; fra.. men den forvirrer mere end den gavner
..

her er en kode der virker, du kan vel selv fixe hvor mange gange den skal coute svaret.. ;)

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <string.h>


int HexToInt(char *buffer)
{
  int tmpInt = 0;
  for (int idx = 0; idx < strlen(buffer); idx++)
  {
    tmpInt *= 16;
    if (buffer[idx] >= \'0\' && buffer[idx] <= \'9\')
      tmpInt += (int)(buffer[idx]-\'0\');
    else
      tmpInt += (int)(10 + buffer[idx]-\'A\'); // Her var en ekstra parentes.
  };
  return tmpInt;
}

int main(void)//int, char* argv[])
{
  char tal[200];
    unsigned int dectal;
    cin >> tal;
    cout << tal << endl;
    dectal=HexToInt(tal);
    //dectal=(dectal*0.209375)-3.2;
    cout << dectal << endl;

    return 0;

}
Avatar billede phpnewbie Nybegynder
26. november 2001 - 23:09 #10
der er stadig lidt bugs.. men det kan fixes .. :D
Avatar billede phpnewbie Nybegynder
26. november 2001 - 23:24 #11
problemet løst.. damnit jeg ryster.. har ik spist. stresser. spiller wolfenstein :D

men her er løsningen..
#include <iostream.h>
#include <string.h>
#include <ctype.h>

int main(void) {
  int length, i;
  unsigned int dectal;
  cin>>tal;
  length = strlen(tal);
  for(i=0;i<length;i++) {
      tal[i] = toupper(tal[i]);
  }
  dectal = Kald_af_funktion(tal); // Den funktion der laver dit tal om
  cout<<\"Hex:\\n\"<<tal<<\"\\n\"; //jeg laver \\n fordi det er kompatibelt med min linux compiler
  return 0;
}
Avatar billede phpnewbie Nybegynder
26. november 2001 - 23:24 #12
det er den funktion i hele projektet som har givet mig flest problemer og grå hår!
Avatar billede phpnewbie Nybegynder
26. november 2001 - 23:25 #13
håber du kan finde ud af mit rod.. ellers spørger du bare :D
Avatar billede disky Nybegynder
27. november 2001 - 08:46 #14
peters: sådanne kan man altså ikke regne om til hex.
Avatar billede phpnewbie Nybegynder
27. november 2001 - 11:52 #15
nej.. men min funktion gør præcis det han skal bruge i hans skoleprojekt.. Jeg har nemlig samme projekt som ham, og mit er praktisk talt færdigt
Avatar billede Slettet bruger
02. december 2001 - 00:35 #16
phpnewbie: Hvad er det for et projekt du har?

Jeg har løst problemet på en helt anden måde!!
Avatar billede phpnewbie Nybegynder
02. december 2001 - 21:16 #17
jeg har omregningsprojektet .

..

og det er færdigt... for længe siden..

Avatar billede Slettet bruger
02. december 2001 - 21:26 #18
okay.... det er ikke lige det jeg har, jeg skulle bruge det i forbindelse med noget temperatur føler, en hex værdi fra en AD converter.....
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