Avatar billede babyworm Nybegynder
15. august 2003 - 10:48 Der er 17 kommentarer og
2 løsninger

Udregning fra celsius til fahrenheit og omvendt

<form METHOD="post" ACTION="file:///C|/Inetpub/wwwroot/localhost/page/omregning.asp?mode=send" align="left" name="frmMail">
<%
mode = request.querystring("mode")
if mode = "send" then

  if request.form("grader") = "" then
 
    response.write("Du mangler at indtaste en oplysning")

  else
      ' hvis formlen fahrenheit er tom
    if request.Form("Fahrenheit") = "" then
    Function udregning
    ' tag indholdet af formlen grader, og minus det med 32 hvor efter man dividere med 1,8
    udregning = request.Form("grader") - 32/1,8 then
    ' skriv resultat
    response.Write(udregning)
    end function
   
    ' hvis formlen fahrenheit er tom
    if request.Form("celsius") = "" then
    Function udregning
    ' tag indholdet af formlen grader, og gange det med 1,8 og plus 32
    udregning = request.Form("grader") * 1,8 + 32 then
    ' skriv resultat
    response.Write(udregning)
    end function   
%>
  <input type="text" name="grader">
  grader
  <p>
    <input type="radio" name="celsius" value="celsius">
    Celsius<br>
    <input type="radio" name="Fahrenheit" value="Fahrenheit">
    Fahrenheit </p>
</form>


Hej...

Jeg har denne formel... den er helt sikkert forkert.. men er den første asp ting jeg selv har kodet..

Er der en der gider kigge på den?
Avatar billede babyworm Nybegynder
15. august 2003 - 10:48 #1
Ny kode:

<form METHOD="post" ACTION="omregning.asp?mode=send" align="left" name="frmMail">
<%
mode = request.querystring("mode")
if mode = "send" then

  if request.form("grader") = "" then
 
    response.write("Du mangler at indtaste en oplysning")

  else
      ' hvis formlen fahrenheit er tom
    if request.Form("Fahrenheit") = "" then
    Function udregning
    ' tag indholdet af formlen grader, og minus det med 32 hvor efter man dividere med 1,8
    udregning = request.Form("grader") - 32/1,8 then
    ' skriv resultat
    response.Write(udregning)
    end function
   
    ' hvis formlen fahrenheit er tom
    if request.Form("celsius") = "" then
    Function udregning
    ' tag indholdet af formlen grader, og gange det med 1,8 og plus 32
    udregning = request.Form("grader") * 1,8 + 32 then
    ' skriv resultat
    response.Write(udregning)
    end function   
%>
  <input type="text" name="grader">
  grader
  <p>
    <input type="radio" name="celsius" value="celsius">
    Celsius<br>
    <input type="radio" name="Fahrenheit" value="Fahrenheit">
    Fahrenheit </p>
</form>
Avatar billede nmh Nybegynder
15. august 2003 - 11:18 #2
Formlen er rigtig nok:
f = c*9/5 +32
c = (f-32) *5/9
Avatar billede nmh Nybegynder
15. august 2003 - 11:20 #3
Du skal dog lige sørge for at konvertere
request.Form("grader")
til tal
Skriv
Cdbl(request.Form("grader"))
så er det lavet om til et "langt" reelt tal.
Avatar billede nmh Nybegynder
15. august 2003 - 11:24 #4
udregning = request.Form("grader") - 32/1,8 then
dette er galt.
Burde være
(request.Form("grader") - 32)/1,8
Nogle gange er det ikke nødvendigt at konvertere tekst til tal, men gør det for god ordens skyld.
for at kunne konvertere, skal du lige teste om der er tale om et tal.
Brug if icNumeric(request.form(.....)) then....
Avatar billede nmh Nybegynder
15. august 2003 - 11:28 #5
ikke icNumeric, men isNumeric(...)...

Uden denne test, vil der også komme fejl, hvis brugeren skrev f.eks. abekat i stedet for et tal.
Derfor test ikke om der er indlæst en tom streng, men om der er indlæst et tal ved at bruge
if isnumeric(....)
Ellers ser ud til at være OK.
jeg har dog ikke set alle detaljer igennem.
Avatar billede nmh Nybegynder
15. august 2003 - 12:45 #6
Et andet godt råd,nu du lige er bgyndt på asp-programmering:
Start altid med ordren Option Explicit.
Det betyder at alle variable skal erklæres i dim-sætninger.

altså sætninger af form
Dim x,y,z
Fordelen er, at man får en fejlmeddelelse, hvis asp-systemet møder en ikke erklæret variabel (nogle gange kan man skrive galt, f.eks pumkt i stedet for punkt, og man får et program, der kører, men ikke virker), og asp-programmet kører også lidt bedre, når man på forhånd fortæller hvilke variable, der bruges.
Avatar billede nmh Nybegynder
15. august 2003 - 14:48 #7
Vil du ikke også være rar at afslutte de spørgsmål, du stadig har åbne. Der er mange, der er ret gamle.
Avatar billede babyworm Nybegynder
15. august 2003 - 16:14 #8
Du gider vel ikke lige skrive det ind i koden?? ;)

jeg skal nok afslutte de spørgsmål jeg har åbne, når jeg får svar..!
Avatar billede nmh Nybegynder
15. august 2003 - 16:32 #9
Jo, det kan jeg da godt, men det bliver først en gang iaften.
Du kunne jo som en øvelse prøve at gøre det selv, og vise resultatet her. Så skal jeg "rette" det.
Avatar billede babyworm Nybegynder
15. august 2003 - 16:50 #10
det prøver jeg så..! :)
Avatar billede babyworm Nybegynder
15. august 2003 - 16:56 #11
<form METHOD="post" ACTION="omregning.asp?mode=send" align="left" name="frmMail">
<%
mode = request.querystring("mode")
if mode = "send" then

  if Cdbl(request.Form("grader")) = "" then
 
    response.write("Du mangler at indtaste en oplysning")

  else
      ' hvis formlen fahrenheit er tom
    if Cdbl(request.Form("Fahrenheit")) = "" then
    Function udregning
    ' tag indholdet af formlen grader, og minus det med 32 hvor efter man dividere med 1,8
    udregning = Cdbl(request.Form("grader") - 32)/1,8 then
    ' skriv resultat
    response.Write(udregning)
    end function
   
    ' hvis formlen fahrenheit er tom
    if Cdbl(request.Form("celsius")) = "" then
    Function udregning
    ' tag indholdet af formlen grader, og gange det med 1,8 og plus 32
    udregning = Cdbl(request.Form("grader") + 32) *1,8
    ' skriv resultat
    response.Write(udregning)
    end function   
%>
  <input type="text" name="grader">
  grader
  <p>
    <input type="radio" name="celsius" value="celsius">
    Celsius<br>
    <input type="radio" name="Fahrenheit" value="Fahrenheit">
    Fahrenheit </p>
</form>
Avatar billede nmh Nybegynder
15. august 2003 - 21:08 #12
Hej igen. Jeg er lige ved at kigge på det du har lavet.
Avatar billede nmh Nybegynder
15. august 2003 - 21:42 #13
Nu har jeg rettet det noget til. Det er dog ikke perfekt endnu.

Fejl i din kode:
Du må ikke sætte funktioner ind på den måde du har gjort.
Der mangler 'end if' flere steder

Du har rodet rundt i formlerne.
Sådan skal de være (c står for graders celsius, f for fahrenheit):
c=(f-32)*5/9
f=(c*9/5+32

Her er er den rettede kode, hvor jeg ikke har testet om der faktisk indtastes tal:

<form METHOD="post" ACTION="omregning.asp?mode=send" align="left" name="frmMail">
<%
mode = request.querystring("mode")
if mode = "send" then

  if request.Form("grader") = "" then
 
    response.write("Du mangler at indtaste en oplysning")
  end if

else

    ' hvis feltet fahrenheit er tom
    if request.Form("fahrenheit") = "" then
      ' tag indholdet af formlen grader, og gange det med 1,8 og plus 32
      udregning = Cdbl(request.Form("grader"))*9/5 + 32
      ' skriv resultat
      response.Write(udregning)
    end if
   
    ' hvis feltet grader er tom
    if Cdbl(request.Form("celsius")) = "" then
      '
      'tag indholdet af formlen grader, og minus det med 32 hvor efter man dividere med 1,8
      udregning = Cdbl(request.Form("fahrenheit") - 32) *5/9
      ' skriv resultat
      response.Write(udregning)
    end if

end if 
%>
  <input type="text" name="grader">
  grader
  <p>
    <input type="radio" name="celsius" value="celsius">
    Celsius<br>
    <input type="radio" name="Fahrenheit" value="Fahrenheit">
    Fahrenheit </p>
</form>
Avatar billede babyworm Nybegynder
15. august 2003 - 21:47 #14
Fuck mand... det virker ikke.. det er også lort.. Det er fordi jeg skal have en funktion der gør sådan at man kan regne fra calsius til fahrheit og omvendt.. kan du lave det hvis du får nogle formler.. www.formel.dk der er en omregner også..
Avatar billede eagleeye Praktikant
15. august 2003 - 22:10 #15
Der var lige et par smpting som skulle rettes i din kode.
Der manglede en submit knap så man kan sende form'en så den kan blive udregnet.
Der manglede et par end if

De to radio knapper skal havde samme navn i dette eks "omregntil" eller kande vælges på samme tid. Så brugeer man value delen til at finde ud af hvilken der er valgt.

Så prøv med dette:




<form METHOD="post" ACTION="omregning.asp?mode=send" align="left" name="frmMail">
<%
mode = request.querystring("mode")
if mode = "send" then

  if request.form("grader") = "" then
 
    response.write("Du mangler at indtaste en oplysning")

  else
      ' hvis clesius er valgt
    if request.Form("omregntil") = "celsius" then
      ' tag indholdet af formlen grader, og minus det med 32 hvor efter man dividere med 1,8
      udregning = (request.Form("grader") - 32) * 5 / 9
    end if

    if request.Form("omregntil") = "fahrenheit" then
      ' tag indholdet af formlen grader, og gange det med 1,8 og plus 32
      udregning = request.Form("grader") * 9/5 + 32
    end if
    ' skriv resultat
    response.Write(udregning)
  end if
end if
%>
  <input type="text" name="grader">
  grader
  <p> Omregn til<br>
    <input type="radio" name="omregntil" value="celsius">
    Celsius<br>
    <input type="radio" name="omregntil" value="fahrenheit">
    Fahrenheit </p>
  <p>
  <input type="submit" name="submit" value="omregn">
</form>
Avatar billede nmh Nybegynder
15. august 2003 - 22:40 #16
eagleeye> Vi plejer godt nok at svare i "kor" nogle gange, men prøver dog ikke at træde hinanden over tæerne i iver for at få point.

Jeg var nu igang med stille og roligt at få babyworms program til at fungere, og min første ændring var blot at få fjernet de værste fejl. Derefter at lave nogle små forbedringer, for til sidst at ende med et fornuftigt program.

Du burde vide, hvornår man blander sig, og hvornår man venter.

Jeg er overrasket over din manglende fornemmelse for, hvornår man blander sig, og hvornår man venter.

Nu håber jeg du vil tage dig god tid til at lære babyworm nogle ting. Dette lille eksempel er jo fint til at illustrere asp programmering. Og det bør ende med noget fornuftigt.
Strukturen bør være i orden, html-delen skal være komplet etc. etc.

Jeg forlader nu dette spørgmål, og forventer at du nu gør det færdigt på en ordentlig måde.
Avatar billede nmh Nybegynder
16. august 2003 - 14:15 #17
Eagleeye>> Nå, jeg blev lidt irriteret i går. Jeg var midt i at lave et svar, og pludselig har du uden kommentarer eller noget lagt et svar. Jeg skulle nok have holdt min irritation for mig selv.

Jeg vælger alligevel at fortsætte.

Babyworm>>
Din ide er at kunne omsætte imellem de to temperaturskalaer. Du vil have et felt på skærmen, hvor brugeren kan skrive en  temperatur og to radioknapper, som skal afgøre, om man omsætter fra Celsius til Fahrenheit eller omvendt.
Der skal være en knap, som brugeren kan trykke på, når der ønskes en omregning.
Først laver vi layoutet til html-siden, som jo er det brugeren ser:

<html>
<body>
<form METHOD="post" ACTION="omregning.asp?mode=send" align="left" name="frmMail">

    <input type="text" name="grader">
  <p>
    <input type="radio" name="valg" value="celsius">
    Celsius<br>
    <input type="radio" name="valg" value="fahrenheit">
    Fahrenheit </p>
  <p>
    <input type=submit value="Omregn">
</form>
</body>
</html>

Så skal vi beslutte, hvor resultatet skal skrives. Vi vælger, at der øverst på siden udskrives en tekst af form:

0 graders Celsius er det samme som 32 graders Fahrenheit.


Nu skal ASP-koden så laves. Du ville gerne arbejde med funktioner, så vi laver en funktion, der kan omsætte fra
Celsius til Fahrenheit. Den kalder vi CtilF og en anden, som omregner fra Fahrenheit til Celsius. Den kaldes FtilC.

ASP-koden anbringer vi før html-siden, og html-siden ændres så der øverst bliver udskrevet svaret.

ASP-siden kommer så til at se således ud:

<%
'Omregning mellem Celsius-grader og Fahrenheit-grader

Option Explicit
Dim mode, t, svar

Function CtilF(c)
  CtilF=c*9/5 + 32
End Function

Function FtilC(f)
  FtilC=(f - 32)*5/9
End Function

mode=request.querystring("mode")

if mode="send" then
  t=request.form("grader")
  if isNumeric(t) then  'Vi tester, om der er tale om et tal
    t=Cdbl(t) '(for god ordens skyld konverterer vi til et tal)
    if request.Form("valg") = "celsius" then
      svar= t & " graders fahrenheit er det samme som " & FtilC(t) & " graders celsius"
    elseif request.Form("valg") = "fahrenheit" then
      svar= t & " graders celsius er det samme som " & CtilF(t) & " graders fahrenheit"
    end if
  else
    svar="Du har ikke indtastet et tal!" 
  end if
end if
%>
<html>
<body>
<%response.write(svar)%><p>
<form METHOD="post" ACTION="omregning.asp?mode=send" align="left" name="frmMail">

    <input type="text" name="grader">
  <p>
    Vælg her, hvad du vil omregne til: <p>
    <input type="radio" name="valg" value="celsius">
    Celsius<br>
    <input type="radio" name="valg" value="fahrenheit">
    Fahrenheit </p>
  <p>
    <input type=submit value="Omregn">
</form>
</body>
</html>
Avatar billede babyworm Nybegynder
28. august 2003 - 17:08 #18
tak for hjælpen drenge...
Avatar billede nmh Nybegynder
28. august 2003 - 17:15 #19
Selvtak, det var så lidt.
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