ugrás a tartalomhoz

Javascript számolás

mikee · 2009. Feb. 5. (Cs), 15.58
Sziasztok!
Nem régen tanulom a Javascriptet és valakivel konzultálnom kellene hogy előrébb hajtson. Már vért izzadtam és nem tudok rájönni mi lehet a hiba. Ez betudható a Javascritptben való járatlanságomnak is. Legyetek szivesek tekintsétek meg az alábbi kódot. Mi lehet a hiba?

Ez egy súlyozott átlagszámoló lenne de nem akar összejönni.

<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="hu-hu" />
</head>
<body>
<script LANGUAGE="Javascript" type="text/javascript">
var szam = 0;
var jegy = new Array();
var kredit = new Array();
var tkredit = new Array(); //teljesített kredit
var szorzat = new Array();


function Adok() {
//bekéri és kiírja az adatokat, ha nincs akkor jelez
ajegy = document.kreditszamolo.erdemjegy.value;
akredit = document.kreditszamolo.kreditek.value;

if (ajegy > " " && akredit > " ") {
if (0 < ajegy < 6 && 0 < akredit < 10) {
jegy[szam] = ajegy;
kredit[szam] = akredit;
szam++;
}
else alert("Betűkből nem lehet súlyozott átlagot számolni")
}
else alert("Nem írtál be adatot")

document.kreditszamolo.kiijegy.value = jegy.join("\n");
document.kreditszamolo.kiikredit.value = kredit.join("\n");
document.kreditszamolo.erdemjegy.value = ("");
document.kreditszamolo.kreditek.value = ("");
}

function Clear() {
/*document.kreditszamolo.kiijegy.value = ("");
document.kreditszamolo.kiikredit.value = ("");*/
kredit = [];
jegy = [];
tkredit = [];
szorzat = [];
document.kreditszamolo.kiijegy.value = jegy;
document.kreditszamolo.kiikredit.value = kredit;
}

function Szamol() {
/*A függvény korrigált súlyozott átlagot fog számolni:
sum (teljesített kredit * jegy) / felvett kredit*/

//Összeadja a kredit tömböt
var felvettkredit = 0;
for (i=0; i<kredit.length; i++) {
felvettkredit += kredit[i];
}
alert("Felvett kredit összértéke: " + felvettkredit);

//A teljesített krediteteket pakolja be a tkredit tömbbe
for (i=0; i<kredit.length; i++) {
if (jegy[i] == 1) {
kredit[i] = tkredit[i];
tkredit[i] = 1;
}
}


//A számolás első lépéseként a jegyet összeszorozza a teljesített kredittel
do {
i = 0;
szorzat[i] = tkredit[i] * jegy[i];
i++;
}
while (szorzat[i] > " ");

//A szorzat tömb elemeit összeadja
var sumszorzat = 0;
for (i=0; i<szorzat.length; i++)
{
sumszorzat += szorzat[i];
}

//A számolás utolsó lépése
eredmeny = sumszorzat/felvettkredit;
alert(eredmeny);
}
</script>
<h3>Kreditszámló</h3>
<form name="kreditszamolo">
<!--

do {

atlag = (kredit * jegy) / kredit
document.bevitelimezo.jegyek.value = nev.join("\n");} -->
<table>
<tr>
<td><p>Éredemjegyed: </td>
<td><input type="text" maxlength = "1" size = "1" name="erdemjegy"> ha nem sikerült akkor 1 est írj</td>
</tr>
<tr>
<td>Kredit:</td>
<td><input type="text" maxlength = "1" size = "1" name="kreditek"> (mindenképpen írd be a tárgy kreditét)</p></td>
</tr>
</table>

<input type="button" name="hozzaad" onClick="Adok();" value="Hozzáad">
<input type="button" name="torol" onClick="Clear();" value="Töröl">
<input type="button" name="szamol" onClick="Szamol();" value="Számol">
</br>
</br>
<textarea cols="5" rows="10" name="kiijegy">
</textarea>
<textarea cols="5" rows="10" name="kiikredit">
</textarea>

</form>
</body>
</html>
 
1

hibák

mikee · 2009. Feb. 5. (Cs), 16.02
Ameddig jutottam:
- Bekértem és kiirtam az adatokat
- A törlés után maradnak üres tömbelemek (nem tudom miért)
- A számolásnál az elsőnél elakadtam. A tömbben lévő számokat nem összeadja hanem egymás után illeszti. (ezt sem értem)
2

Hibák

Poetro · 2009. Feb. 5. (Cs), 16.25
  1. Formázva küldd már be a kódot, mert így olvashatatlan.
  2. A szöveget + esetén konkatenálja, és nem összeadja, ezért ha számként akarod kezelni, akkor alakítsd számmá.
  3. A számláló szam nem lett nullazva törlés esetén.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta name="generator" content="HTML Tidy for Windows (vers 14 October 2008), see www.w3.org">
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Language" content="hu-hu">
    <title></title>
  </head>
  <body>
    <script type="text/javascript">
      var szam = 0;
      var jegy = new Array();
      var kredit = new Array();

      var tkredit = new Array(); //teljesített kredit
      var szorzat = new Array();

      function Adok() {
        //bekéri és kiírja az adatokat, ha nincs akkor jelez
        var ajegy = document.kreditszamolo.erdemjegy.value;

        var akredit = document.kreditszamolo.kreditek.value;

        if (ajegy > " " && akredit > " ") {
          if (0 < ajegy < 6 && 0 < akredit < 10) {

            jegy[szam] = ajegy;
            kredit[szam] = akredit;
            szam++;
          }
          else alert("Betűkből nem lehet súlyozott átlagot számolni")

        }
        else alert("Nem írtál be adatot")

        document.kreditszamolo.kiijegy.value = jegy.join("\n");
        document.kreditszamolo.kiikredit.value = kredit.join("\n");

        document.kreditszamolo.erdemjegy.value = ("");
        document.kreditszamolo.kreditek.value = ("");
      }

      function Clear() {
        /*document.kreditszamolo.kiijegy.value = ("");

       document.kreditszamolo.kiikredit.value = ("");*/
        szam = 0;
        kredit = new Array();
        jegy = new Array();
        tkredit = new Array();
        szorzat = new Array();
        document.kreditszamolo.kiijegy.value = '';

        document.kreditszamolo.kiikredit.value = '';
      }

      function Szamol() {
        /*A függvény korrigált súlyozott átlagot fog számolni:
      sum (teljesített kredit * jegy) / felvett kredit*/

        //Összeadja a kredit tömböt
        var felvettkredit = 0;
        for (i = 0; i < kredit.length; i++) {
          felvettkredit += parseInt(kredit[i], 10);
        }
        alert("Felvett kredit összértéke: " + felvettkredit);

        //A teljesített krediteteket pakolja be a tkredit tömbbe
        for (i = 0; i < kredit.length; i++) {
          if (jegy[i] == 1) {
            kredit[i] = parseInt(tkredit[i], 10);
            tkredit[i] = 1;

          }
        }

        //A számolás első lépéseként a jegyet összeszorozza a teljesített kredittel
        do {
          i = 0;

          szorzat[i] = tkredit[i] * parseInt(jegy[i], 10);
          i++;
        }
        while ( szorzat [ i ] > " ");

        //A szorzat tömb elemeit összeadja
        var sumszorzat = 0;
        for (i = 0; i < szorzat.length; i++) {
          sumszorzat += szorzat[i];
        }

        //A számolás utolsó lépése
        eredmeny = sumszorzat / felvettkredit;
        alert(eredmeny);
      }
    </script>
    <h3>
      Kreditszámló
    </h3>
    <form name="kreditszamolo" id="kreditszamolo">
      <!--

 do {

 atlag = (kredit * jegy) / kredit
 document.bevitelimezo.jegyek.value = nev.join("\n");}  -->
      <table>
        <tr>
          <td><p>Éredemjegyed:</p></td>
          <td><input type="text" maxlength="1" size="1" name="erdemjegy"> ha nem sikerült akkor 1 est írj</td>
        </tr>
        <tr>
          <td>
            Kredit:
          </td>
          <td><input type="text" maxlength="1" size="1" name="kreditek"> (mindenképpen írd be a tárgy kreditét)</td>
        </tr>
      </table>
      <input type="button" name="hozzaad" onclick="Adok();" value="Hozzáad"> <input type="button" name="torol" onclick="Clear();" value="Töröl"> <input type="button" name="szamol" onclick="Szamol();" value="Számol"><br>
      <br>
      <textarea cols="5" rows="10" name="kiijegy"></textarea>
      <textarea cols="5" rows="10" name="kiikredit"></textarea>
    </form>
  </body>
</html>
3

Köszönet

mikee · 2009. Feb. 5. (Cs), 16.54
Köszi szépen a gyors választ. Megyek is és agyalok rajta.