Avatar billede s_raagaard Nybegynder
04. juni 2000 - 16:52 Der er 37 kommentarer og
5 løsninger

Er tallet lige eller ulige

Hej

Jeg skal kunne validere et tal som input fra en form:

1. Er tallet (heltal)lige eller ulige
2. Er sidste ciffer i tallet (heltal) lige eller ulige (f.eks. cprnr.)
3. Hvor mange cifre er der i tallet (heltal)

Noget ala' ...men hvordan?

1.
<%
if request.querystring("Tal")= lige heltal then
            response.write("Dit tal er et lige tal")
elseif request.querystring("Tal")= ulige heltal then
            response.write("Dit tal er et ulige tal")
else
end if
%>

2.
<%
if request.querystring("Tal")sidste ciffer= lige heltal then
            response.write("Dit sidste ciffer er et lige tal")
elseif request.querystring("Tal")sidste ciffer= ulige heltal then
            response.write("Dit sidste ciffer er et ulige tal")
else
end if
%>

3.
<%
if request.querystring("Tal")< 8 cifre then
            response.write("Dit tal består af under 8 cifre")
elseif request.querystring("Tal")> 8 cifre then
            response.write("Dit tal består af over 8 cifre")
elseif request.querystring("Tal")= 8 cifre then
            response.write("Dit tal består 8 cifre")
else
end if
%>


mvh
/søren rågård
Avatar billede sa Nybegynder
04. juni 2000 - 17:08 #1
Om et heltal er lige eller ulige, kan du vel afgøre ved at dividere det med 2 og derefter tjekke om resultatet har nogen decimaler. Er det stadig et heltal, var det oprindelige tal lige, og er det blevet et decimaltal, var det oprindelige tal ullige.
Avatar billede phylox2 Nybegynder
04. juni 2000 - 17:09 #2
<%

Option Explicit

Dim Tal
Dim Skriv

Tal = Request.QueryString("tal")

If Tal = "" Then
Response.Write "Skriv et tal!"
Else
If (Tal mod 2) = 1 Then
Skriv = "ulige"
Else
Skriv = "lige"
End If
End If

Response.Write Skriv
%>
Avatar billede phylox2 Nybegynder
04. juni 2000 - 17:09 #3
hvis du skal teste det sidste ciffer skal du skrive

Tal = Right(Request.QueryString("tal"),1)
Avatar billede phylox2 Nybegynder
04. juni 2000 - 17:10 #4
Og når du skal finde ud af, hvor mange ciffere der er i tallet skal du skrive

Response.Write Len(Tal)

:)

Avatar billede sa Nybegynder
04. juni 2000 - 17:12 #5
Antallet af cifrer kan du finde ved "len(tallet)"
Avatar billede sa Nybegynder
04. juni 2000 - 17:13 #6
Den hurtigste får pointene ;-)
Avatar billede phylox2 Nybegynder
04. juni 2000 - 17:15 #7
Hvem er det så ? :)
Avatar billede sa Nybegynder
04. juni 2000 - 17:17 #8
Ja, det fremgår jo ret tydeligt, at det er dig, da jeg kom med det samme svar ca. 2 min senere, uden at jeg havde set dit først..
Avatar billede phylox2 Nybegynder
04. juni 2000 - 17:19 #9
heh .. ;) man skulle kunne se det løbende :)
Avatar billede ulrik Nybegynder
04. juni 2000 - 23:25 #10
tal_tmp = right(tal,1)

if (tal_tmp/2 = int(tal_tmp/2)) then
'tallet er lige
else
'tallet er ulig
end if
Avatar billede phylox2 Nybegynder
04. juni 2000 - 23:28 #11
Pretty much like sa and I wrote, don't you think ?
Avatar billede ulrik Nybegynder
04. juni 2000 - 23:28 #12
og ligesom de allerede har skrevet bruger du bare len() for at finde altal cifre/bogstaver strengen består af!
Avatar billede phylox2 Nybegynder
04. juni 2000 - 23:32 #13
Og ??? resulterer det ikke i det samme da ?!

Nej ... jeg får fejl ved Int(Tal)

Avatar billede phylox2 Nybegynder
04. juni 2000 - 23:34 #14
Alligevel ikke :)
Avatar billede tdaugaard Nybegynder
05. juni 2000 - 13:49 #15
<< phylox2 >>
I ASP virker Int() ikke .. det er kun i VB.
Brug CInt() så virker det!!

Men "tal Mod tal" er helt klart at foretrække..
Avatar billede phylox2 Nybegynder
05. juni 2000 - 16:05 #16
tdaugaard>> Det er også det, som jeg primært har gjodt - det var bare ulrik der sagde, at man kunne :)
Avatar billede ulrik Nybegynder
05. juni 2000 - 17:46 #17
tdaugaard >> prøv at lade vær med at udtale dig om noget du ikke ved.

int er asp og vb da asp er bygget udfra vb, den fjerner komma tallene (eks int(10.67) = 10)

cint har slet ikke noget med sagen at gøre.
Avatar billede tdaugaard Nybegynder
05. juni 2000 - 18:05 #18
<< ulrik >>
Prøv at lade være med at tro du ved det hele, ikk !?

Int er ikke ASP ... den eksisterer i VB. Og jeg ved godt hvad Int gør, men den virker simpelthen bare ikke i ASP.

<< phylox2 >>

Det lyder som om du ved hvad der er rigtigt mht. Int, så er det mig eller ulrik der er forkert på den ???
Avatar billede phylox2 Nybegynder
05. juni 2000 - 18:11 #19
Hehe ... så er det mig, der skal være dommeren ;)

Jeg vil sige dig imod tdaugaard! ... Hvis jeg bruger Int og Cint i ASP sammenhæng, så virker det fint ... !

Prøv selv med dette script :

<%

Option Explicit

Dim Tal
Dim Skriv

Tal = Request.QueryString("tal")

If Tal = "" Then
Response.Write "Skriv et tal!"
Else
If (Tal mod 2) = 1 Then
Skriv = "ulige"
Else
Skriv = "lige"
End If
End If

Response.Write "Lige/ulige : " & Skriv & "<br>Længde : " & Len(Tal) & "<br>Int resultat : " & Int(Tal) & "<br>Cint resultat : " & Cint(Tal)
%>

Kald det med skriv.asp?tal=xxxxxxxxxxx,xxxxxxxxxxxxx
Avatar billede tdaugaard Nybegynder
05. juni 2000 - 18:20 #20
<< phylox2 >>
Ja, en skal jo være det :)

Jeg taler bare af erfaring .. dvs. jeg har selv prøvet at bruge Int (og ja, det var en tal variabel) og der fik jeg en fejl med "funktion ikke defineret" eller noget i den retning...

Prøver lige dit script ...
Avatar billede phylox2 Nybegynder
05. juni 2000 - 18:21 #21
OOkay :)
Avatar billede ulrik Nybegynder
05. juni 2000 - 18:32 #22
tdaugaard >> så tror jeg du skal overveje at lære at skrive dine koder ordenligt for int eksisterer i asp og nu når du ved hvad den gør hvorfor samligner du den så med Cint?? hmmmm...
Avatar billede phylox2 Nybegynder
05. juni 2000 - 18:33 #23
Hvad er forskellen ... det ser ud som om, at Int runder op og Cint runder ned ?:)
Avatar billede bocker Nybegynder
05. juni 2000 - 18:42 #24
tdaugaard din erfaring er = pis!

Int eksistere i et hvert programmerings sprog, og den har samme funktion

CInt:
Det er en funktion der laver en variabel om til integer, altså et heltal.

Int:
Det er en funktion der laver et tal af typen, Float, Single, Double m.m. om til en integer, altså et heltal.

Er du med?

Og grunden til Int hedder det samme i Visual Basic, er fordi ASP kører på et sprog der kaldes VBScript, og kan også programmeres efter JScript. VBScript er noget der stammer fra Visual Basic. Så jeg gentager lige, tdaugaard din erfaring er = pis!


Avatar billede bocker Nybegynder
05. juni 2000 - 18:45 #25
og måden man løser dette på den mest korrekte og nemmeste måde er som Phylox2 gør.

if tal mod 2 = 0 then
  Response.Write("Tallet er lige!")
else
  Response.Write("Tallet er ulige!!)
end if

og hvis man henter tal variablen fren en Query, så skal man bruge CInt(tal) for at lave den om fra en streng > integer.
Avatar billede tdaugaard Nybegynder
05. juni 2000 - 18:54 #26
<< ulrik >>

Jeg sammenligner ikke Int() og CInt(), jeg sagde at Int() ikke virkede i ASP og at phylox2 kunne prøve at bruge CInt i stedet.

<< phylox2 >>

Jeg mener at Int() runder ned til nærmeste hele og CInt konverterer en streng variabel til en tal variabel.
Avatar billede tdaugaard Nybegynder
05. juni 2000 - 19:01 #27
<< bocker >>

Min erfaring er ikke pis, det kan godt være at det ikke er RIGTIGT, men derfor ikke pis!! Det kan man sku ikke sige.

Jeg har brugt Int() i flere år nu både i QBasic og VB, men jeg har aldrig fået den til at virke i ASP!!! Derfor siger jeg sådan!!

Istedet for at sige at min erfaring er pis kan du så ikke fortælle mig hvad der er rigtigt ?? Ellers lærer jeg det jo ikke, vel ??

QB, VB, VBScript og ASP er allesammen baseret på BASIC sproget, derfor synes jeg også det var underligt at jeg ikke kunne bruge Int() i ASP.
Avatar billede s_raagaard Nybegynder
05. juni 2000 - 23:14 #28
Det var meget spændende at følge svaret, og det virkede ganske fortræffeligt.... nu er det blot


Hvordan valideres om et tal er negativt eller positivt?

<%
if request.querystring("Tal") = Negativt then
    response.write("dit tal er negativt")
elseif request.querystring("Tal") = Positivt then
    response.write("dit tal er positivt")
else
end if
%>


mvh
/søren rågård
Avatar billede tdaugaard Nybegynder
05. juni 2000 - 23:31 #29
Du kan bruge Sgn() funktionen.

f.eks. Sgn(Request.QueryString("tal"))

-1 hvis Tal er mindre end 0
0 hvis Tal er 0
1 hvis Tal er større end 0
Avatar billede tdaugaard Nybegynder
05. juni 2000 - 23:36 #30
Som eksempel:

<%
intSign = Sgn(Request.QueryString("tal"))

Select Case intSign
    Case -1: ' Tal er Negativt
    Case 0:  ' Tal er Nul
    Case 1:  ' Tal er Positivt
End Select
%>


Avatar billede phylox2 Nybegynder
05. juni 2000 - 23:38 #31
Lige mine ord (de det i funktion via en nyere udgave af mit script) :

<%

Option Explicit

Dim Tal
Dim Skriv
Dim SkrivV

Tal = Request.QueryString("tal")

If Tal = "" Then
Response.Write "Skriv et tal!"
Else
If (Tal mod 2) = 1 Then
Skriv = "ulige"
Else
Skriv = "lige"
End If
If SGN(Tal) = -1 Then
SkrivV = "Negativt"
Else if SGN(Tal) = 0 Then
SkrivV = "Neutralt"
Else if SGN(Tal) = 1 Then
SkrivV = "Positivt"
End If
End If
End If
End If

Response.Write "Lige/ulige : " & Skriv & "<br>Længde : " & Len(Tal) & "<br>Int resultat : " & Int(Tal) & "<br>Cint resultat : " & Cint(Tal) & "<br>Negativt/positivt : " & SkrivV
%>
Avatar billede s_raagaard Nybegynder
05. juni 2000 - 23:56 #32
Det var lige det jeg ledte efter....mange tak

det var nemlig ikke bare sådan <>0

perfekt

/søren rågård
Avatar billede tdaugaard Nybegynder
05. juni 2000 - 23:57 #33
<< phylox2 >>

Nu lyder det lidt som om du er "eksperten" her, så derfor vil jeg gerne lige spørge dig om ikke det er bedst f.eks. kun at udføre en funktion een gang (hvis det er muligt) og så gemme resultatet i en variabel ??

F.eks.

intSign = Sgn(Tal)

i stedet for at bruge Sgn() 3 gange.

Jeg har kun HØRT at det er bedst at gemme det i en variabel.
Avatar billede phylox2 Nybegynder
06. juni 2000 - 13:49 #34
Jeg er ikke klar over, om det er bedre eller hvad, men det jeg kan sige er, at det bliver det samme resultat - men jo ... hvis man skal se det i forhold til resourcer på serveren, så er det klar bedre kun at udføre "beregningen" éen gang i stedet for 3 gange :)

Avatar billede bocker Nybegynder
06. juni 2000 - 13:58 #35
<< tdaugaard >>

Det er ikke for at rakke ned på dig, MEN jeg var lidt sur i går, pga. en diskussion, så undskyld det gik ud over dig :)

Men hvor er det du har problemer med det int?
Avatar billede bocker Nybegynder
06. juni 2000 - 13:59 #36
men derfor behøver du ikke gentage mig: Jeg mener at Int() runder ned til nærmeste hele og CInt konverterer en streng variabel til en tal variabel.
Avatar billede lange Nybegynder
06. juni 2000 - 17:29 #37
For nu at trække diskussionen i langdrag, vil jeg lige bemærke, at det, Int() rent faktisk gør, er at tage heltalsdelen af et tal, altså fjerne alt efter komma. Dvs. at Int(i) "runder ned" for i>0 og "runder op" for i<0.
Avatar billede tdaugaard Nybegynder
06. juni 2000 - 19:53 #38
<< bocker >>

Det er helt i orden :)

Jeg har opgivet det jeg ville ha' brugt Int() til for et stykke tid siden og kan egentlig ikke huske hvor problemet lå.

Sorry, men jeg havde ikke læst din kommentar før jeg kommenterede til ulrik.
Avatar billede bocker Nybegynder
06. juni 2000 - 21:04 #39
CInt konvertere en anden variabel til typen Integer, og Int gør som lange siger :)

Det var også det jeg skrev længere oppe.
Avatar billede phylox2 Nybegynder
07. juni 2000 - 10:13 #40
s_raagaard>> Har du fået, hvad du skulle bruge .... ?? ...
Avatar billede phylox2 Nybegynder
08. juni 2000 - 21:09 #41
Du må da gerne acceptere et svar ! :)
Avatar billede phylox2 Nybegynder
16. juni 2000 - 14:46 #42
Hallo?! Har du ikke lyst til at acceptere de svar der er givet ?!
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