Avatar billede langkiller Nybegynder
15. september 2011 - 21:36 Der er 1 kommentar og
1 løsning

Standar ML - Size af en variabel (string to int)

Har en funktion der beregner en talrække om til den klassiske cæsar's kode hvilket fungere således:
Man har en talrække k (f.eks: 6789) og en nøgletal n (2)
nøgletallet lægges til k i hvert ciffer og bliver til 8901

Har lavet ensml kode der regner tallet ud , hvilket virker, men funktionen skal kun køre hvis k er 8 cifre lang, samt at jeg SKAL bruge "let" eller "local" i funktionen. Her er koden:



fun caesar3 (0, n) = 0
  | caesar3 (k, n) =
    let val caesar3 = (( k mod 10 + n) mod 10) + caesar3(k div 10, n) * 10
    in
      if size(k) < 8 orelse size(k) > 8
      then raise Fail "k skal vare et 8-cifret tal"
      else caesar3
    end;



Hvilket giver fejlmeddelsen:

line 36, characters 15-16:
!        if size(k) < 8 orelse size(k) > 8

!                ^
! Type clash: expression of type
!  int
! cannot have type
!  string
[closing file "C:/Users/Mads/AppData/Local/emacs/smltmp/sml.tmp.A392_YK"]
-


Håber nogen kan hjælpe
Avatar billede langkiller Nybegynder
09. oktober 2011 - 18:12 #1
Avatar billede langkiller Nybegynder
09. oktober 2011 - 18:12 #2
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