Avatar billede saj Nybegynder
28. juli 2003 - 02:00 Der er 10 kommentarer og
1 løsning

kan man lave matematisk funktion, ud fra indhold af en char?

kan det lade sig gøre at få et program til fx at pluse hvis det er det det står i char'en, uden brug af if og lignende??

på forhånd tak...
Avatar billede arne_v Ekspert
28. juli 2003 - 07:06 #1
Du kan ikke bruge:

int tal1,tal2,tal3;
char op;

tal3 = tal1 op tal2;

Du er nødt til:

if(op=='+') {
  tal3 = tal1 + tal2;
} else if(op=='-') {
  tal3 = tal1 - tal2;
} else if(op=='-') {
  tal3 = tal1 * tal2;
} else if(op=='-') {
  tal3 = tal1 / tal2;
} else {
}

eller:

switch(op) {
    case '+':
        tal3 = tal1 + tal2;
        break;
    case '-':
        tal3 = tal1 - tal2;
        break;
    case '*':
        tal3 = tal1 * tal2;
        break;
    case '/':
        tal3 = tal1 / tal2;
        break;
    default:
        break;
}

D
Avatar billede squashguy Nybegynder
28. juli 2003 - 07:43 #2
man kunne faktisk godt gøre det uden brug af if/switch.
f.eks. en pointer-array til de matematiske funktioner:

tal3 = jumptable[opcode](tal1, tal2);
Avatar billede arne_v Ekspert
28. juli 2003 - 08:40 #3
Det kan man også ja.

Men jeg tror ikke at jeg vil betragte det som simplere end if/switch.
Avatar billede squashguy Nybegynder
28. juli 2003 - 09:16 #4
korrekt. men der var jo heller ingen som sagde det skulle være simpelt :)
Avatar billede nmh Nybegynder
28. juli 2003 - 11:16 #5
Jeg er ikke helt sikker på jeg forstår spørgsmålet, men i stort set ethvert programmeringssprog kan man lave en funktion 'Beregn' med den egenskab, at den beregner værdien af et korrekt regneudtryk:

Beregn("1+3-3*(2-1)") er i dette tilfælde 1.

Arne V's eksempel er starten på at lave en sådan funktion.

VBscript og JavaScript har endda en sådan funktion indbygget.
Eval("et regneudtryk") bliver udregnet uden videre, og man kan benytte alle sædvanlige matematiske funktioner.
Avatar billede arne_v Ekspert
28. juli 2003 - 11:29 #6
Man kan lave en sådan. Det er ikke engang svært. Lidt RPN og lidt stak.
200 linier og man burde være kørende. Og stort set uanset
programmerings-sprog.

Men jeg tror altså ikke, at det er det som spørgeren fisker efter.
Avatar billede saj Nybegynder
28. juli 2003 - 13:57 #7
jeg har lavet det med en do løkke, og en if inden i do løkken, men jeg skal lige rode lidt mere med det før det virker...

men tak for svarene, hvem skal have point??
Avatar billede segmose Nybegynder
28. juli 2003 - 16:34 #8
> saj kender du TI's lommeregnerer?

de bruger omvendt polsk notation (Reverse Polisth Notation RPN)
Avatar billede arne_v Ekspert
28. juli 2003 - 17:27 #9
Er Texas begyndt at lave RPN lomme-regnene ?

(da jeg var ung var HP RPN og Texas normal)
Avatar billede segmose Nybegynder
28. juli 2003 - 17:32 #10
Arne jeg må erklære mig selv pre-senil, du har selvfølgelig ret!!!
Avatar billede saj Nybegynder
28. juli 2003 - 18:42 #11
jeg går ud fra at dem der vil have point har meldt sig og da det kun er arne_v der har gjort det bliver det ham der får point....
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