Avatar billede harryfink Praktikant
17. januar 2002 - 10:52 Der er 8 kommentarer og
2 løsninger

Check om tal er en integer/et heltal

Hej!

Hvordan checker jeg om et tal jeg har i en variabel er et heltal/en integer? Altså noget i stil med dette:

repeat while ok = false
  tal1 = (tilfældigt tal)
  tal2 = (tilfældigt tal)

  resultat = tal1 / tal2

  if resultat = integer then ok = true
loop

På forhånd tak!

Mikkel
Avatar billede kanding Nybegynder
17. januar 2002 - 11:12 #1
if integerP(resultat) then ok = true
Avatar billede kanding Nybegynder
17. januar 2002 - 11:14 #2
men det er lettere at sige:
resultat = integer(tal1 / tal2)
Avatar billede harryfink Praktikant
17. januar 2002 - 11:15 #3
Tak!

Men nej, det er ikke lettere, da det er til et regnespil - \"10/3 = 3\" ville jo ikke gå an! :)
Avatar billede ask-m Nybegynder
17. januar 2002 - 11:19 #4
Hvis tal1 og tal2 er integers, så vil tal1/tal2 også være en integer (sådan er director).

nb der er et eller andet med dit repeat loop der er underligt;

repeat while TRUE
  tal1 = random(200)
  tal2 = random(200)

  if tal1 mod tal2 = 0 then -- så kan tal1 deles med tal2
      resultat = tal1 / tal2
      exit repeat
  end if
end repeat


Ask-M
Avatar billede harryfink Praktikant
17. januar 2002 - 11:28 #5
Den producerer stadig stykker som \"10/3\" og \"10/4\" i begge tilfælde! Hvorfor?

Her er koden:

  repeat while ok = false
    set tal1 = random(5) * 2
    set tal2 = random(3) + 1
    global resultat
    set resultat = tal1 / tal2
    if tal1 mod tal2 AND resultat > 1 then ok = true
    put resultat
  end repeat
Avatar billede harryfink Praktikant
17. januar 2002 - 11:39 #6
En integer er et HELtal, ikke?? Så IntegerP(3.14) ville give FALSE, ikke?
Avatar billede harryfink Praktikant
17. januar 2002 - 11:42 #7
Fra Director\'s hjælp:

\"This statement divides 7 by 4 and then displays the remainder in the Message window:

put 7 mod 4

The result is 3.\"

Men det jeg søger er, at hvis netop tal1 = 7 og tal2 = 4, så skal den køre loopet indtil resultatet er et heltal og IKKE et afrundet, som f.eks. 3 i dette eksempel - så kun stykker som 18/3, 10/2, 4/2, 20/5 osv. er tilladt!
Avatar billede Himbear Nybegynder
17. januar 2002 - 11:54 #8
\"En integer er et HELtal, ikke?? Så IntegerP(3.14) ville give FALSE, ikke?\"

Jo det vil den!

IntegerP kan godt bruges til det du søger!
Avatar billede harryfink Praktikant
17. januar 2002 - 11:59 #9
Okay!

Men nu fandt jeg ud af det med denne kode:

repeat while ok = false
    set tal1 = random(30)
    set tal2 = random(9) + 1
    global resultat
    if tal1 mod tal2 = 0 then 
      set resultat = tal1 / tal2
      exit repeat
    end if
   
    put resultat
  end repeat

Tak til jer begge! :)

Mikkel
Avatar billede ask-m Nybegynder
17. januar 2002 - 12:33 #10
Grunden til at \"if tal1 mod tal2 AND resultat > 1 then ok = true\" ikke giver det ønskede resultat er at:

if tal1 mod tal2 then -- bliver fortolket som
if tal1 mod tal2 = TRUE then, og i directors verden er true = ikke-0 dvs et heltal
og det du ville evaluere på var om tal1 mod tal2 var 0....

if tal1 mod tal2 = 0 AND resultat > 1 then
put resultat
end if

... burde give rigtige løsninger!

Ask-M
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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