Avatar billede bobbedude Nybegynder
10. marts 2003 - 16:04 Der er 4 kommentarer og
1 løsning

Gennemsnit

Jeg har 5 tal som skal ligges sammen også udregne et gennemsnit.

problemet er bare at hvis der står 0 i en af dem bliver gennemsnittet forkert.

Dette virker:

tal1 = 20
tal1 = 15
tal1 = 35
tal1 = 41
tal1 = 50

tal4=tal1+tal2+tal3+tal4+tal5
total = tal4/5

Dette virker ikke:

tal1 = 0
tal1 = 15
tal1 = 35
tal1 = 41
tal1 = 50

tal4=tal1+tal2+tal3+tal4+tal5
total = tal4/5

Hvordan får man det lige til at virker uden at skulle skrive en bunke If sætninger ?
Avatar billede jpvj Nybegynder
10. marts 2003 - 16:08 #1
Du tildeler en værdi 5 gange til tal1??! Regner med, at det er en copy/paste fejl :-)

Hvilken fejl får du? Der er intet matematisk til hinder for det du laver, så det burde virker.
Avatar billede bobbedude Nybegynder
11. marts 2003 - 07:06 #2
Ups ja det var jo meningen at der skulle stå tal1,tal2,tal3 osv.

Hvis du tager gennemsnittet på 20+15+35+41+50 og divider dette med 5 får du det rigtige resultat, men så snart der er et 0 med får du ikke det rigtige gennemsnit !
Avatar billede bobbedude Nybegynder
11. marts 2003 - 08:00 #3
Oki dette her virker hvis der er tastet 3 tal ind men ikke hvis der er 2 eller 1 tal

<%
response.buffer = true

set connect = server.createobject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("db1.mdb")


set rs = connect.Execute("Select * FROM gen ")
if not rs.EOF then
Do until rs.EOF
dive = 0

if rs("nr1")=0 then
tal1 = 1
dive = dive+1
else
tal1 = rs("nr1")
end if

if rs("nr2")=0 then
tal2 = 1
dive = dive+1
else
tal2 = rs("nr2")
end if

if rs("nr3")=0 then
tal3 = 1
dive = dive+1
else
tal3 = rs("nr3")
end if

if rs("nr4")=0 then
tal4 = 1
dive = dive+1
else
tal4 = rs("nr4")
end if

if rs("nr5")=0 then
tal5 = 1
dive = dive+1
else
tal5 = rs("nr5")
end if

temp = 5-dive

total = tal1+tal2+tal3+tal4+tal5
total1 = total/temp



response.write "Div "& temp
%>
<table width="600" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="100"><%=rs("ID")%></td>
    <td width="100">
<%
if tal1 = 1 then
response.write "*"
else
response.write tal1
end if
%>
    </td>
    <td width="100">
<%
if tal2 = 1 then
response.write "*"
else
response.write tal2
end if
%>
    </td>
    <td width="100">
<%
if tal3 = 1 then
response.write "*"
else
response.write tal3
end if
%>
    </td>
    <td width="100">
<%
if tal4 = 1 then
response.write "*"
else
response.write tal4
end if
%>
    </td>
    <td width="100">
<%
if tal5 = 1 then
response.write "*"
else
response.write tal5
end if
%>
    </td>
    <td width="100"><%=Round(total1,2)%></td>
  </tr>
</table>

<%
rs.MoveNext
Loop
else
response.write "ingen felter"
end if
%>
Avatar billede bobbedude Nybegynder
11. marts 2003 - 15:39 #4
Så virker det:


<html>
<head>
<title>Score</title>
<style type="text/css">
<!--
.font {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
    color: #000000;
}
-->
</style>
</head>

<body>
<%
response.buffer = true

set connect = server.createobject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("db1.mdb")


set rs = connect.Execute("Select * FROM gen ")
if not rs.EOF then
Do until rs.EOF
dive = 0

if rs("nr1")=0 then
tal1 = 1
dive = dive+1
x = 0
else
tal1 = rs("nr1")
x = rs("nr1")
end if

if rs("nr2")=0 then
tal2 = 1
dive = dive+1
else
tal2 = rs("nr2")
x = x + rs("nr2")
end if

if rs("nr3")=0 then
tal3 = 1
dive = dive+1
else
tal3 = rs("nr3")
x = x + rs("nr3")
end if

if rs("nr4")=0 then
tal4 = 1
dive = dive+1
else
tal4 = rs("nr4")
x = x + rs("nr4")
end if

if rs("nr5")=0 then
tal5 = 1
dive = dive+1
else
tal5 = rs("nr5")
x = x + rs("nr5")
end if

temp = 5-dive

If x = 0 then
total1 = 0
else
total = x
total1 = total/temp
end if




NyTotal = Round(total1,1)

NyTotal = replace(NyTotal,",",".")

SQL = "Update gen set Total= " & NyTotal & " "
SQL = SQL & " WHERE ID= "& rs("ID")
Connect.Execute(SQL) 




rs.MoveNext
Loop
else
response.write "Der er ingen ting i databasen!!"
end if

'================UDSKRIV TIL SKÆRM
%>
<table width="450" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="center" bgcolor="#CCCCCC" class="font">Rank</td>
    <td bgcolor="#CCCCCC" class="font">Navn</td>
    <td align="center" bgcolor="#CCCCCC" class="font">No.1</td>
    <td align="center" bgcolor="#CCCCCC" class="font">No.2</td>
    <td align="center" bgcolor="#CCCCCC" class="font">No.3</td>
    <td align="center" bgcolor="#CCCCCC" class="font">No.4</td>
    <td align="center" bgcolor="#CCCCCC" class="font">No.5</td>
    <td align="center" bgcolor="#CCCCCC" class="font">Total</td>
</tr>
    <tr>
    <td height="2" colspan="8" align="center" bgcolor="#000000"></td>
</tr>
<%
i = 1
session("start")="ok"
set rs = connect.Execute("Select * FROM gen order by Total ASC")
if not rs.EOF then
Do until rs.EOF

    if rs("Total")=0 then
    else
    %>
    <tr>
        <td width="50" align="center" class="font"><%=i%></td>
        <td width="150" bgcolor="#F2F2F2" class="font"><b><%=rs("navn")%></b></td>
        <td width="50" align="center" class="font"><%=rs("nr1")%></td>
        <td width="50" align="center" bgcolor="#F2F2F2" class="font"><%=rs("nr2")%></td>
        <td width="50" align="center" class="font"><%=rs("nr3")%></td>
        <td width="50" align="center" bgcolor="#F2F2F2" class="font"><%=rs("nr4")%></td>
        <td width="50" align="center" class="font"><%=rs("nr5")%></td>
        <td width="50" align="center" bgcolor="#F2F2F2" class="font"><font color="#FF0000"><%=rs("Total")%></font></td>
  </tr>
    <tr>
        <td height="1" colspan="8" bgcolor="#CCCCCC"></td>
    </tr>
    <%
            If session("start")="ok" then
            session("Score") = rs("Total")
            i=i+1
            x=0
            session("start")=" "
            else
           
                If session("Score") = rs("Total") then
                i = i
                x=x+1
                session("Score") = rs("Total")
                else
                i=i+1+x
                x=0
                session("Score") = rs("Total")
                end if
           
            end if
   
    end if

rs.MoveNext
Loop
%>
</table>
<%
else
response.write "Der er ingen ting i databasen!!"
end if
%>
</body>
</html>
Avatar billede jpvj Nybegynder
12. marts 2003 - 06:17 #5
Bubledude> Så er der altså noget andet galt. Vi er enige om, at
(a1+a2+...+an)/n aldrig kan være nul, med mindre summen af alle a'erne er nul. Right?

Det kan godt være, at enten spm. er skrevet forkert eller jeg har misforstået det, men hvis jeg tester

<%
tal1 = 0
tal2 = 15
tal3 = 35
tal4 = 41
tal5 = 50

sum = tal1+tal2+tal3+tal4+tal5
gns = sum/5

Response.Write("Sum: " & sum & "  Gns: " & gns)
%>

Så får jeg

Sum: 141 Gns: 28,2

Hvad havde du forventet?
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