Ausgabefehler
uwe87
- javascript
Moin Leute,
So hab jetzt ein Programm geschrieben.
Hab aber noch einige kleiner Fehler im Programm.
Es geht um folgendes.
Man soll ein Text eingeben.
1. Wörter zählen
2. Häufigkeit der Wörter ermitteln
3. Häufigstes Wort an ertser Stelle
4. Prozentwert neben Häufigkeit
function Textkette(){
var Eingabe=document.forms['f1'].t1.value;
var Eingabeinarray = Eingabe.split(" ");//wandle String in Array um
var normalisiere=new Array();
for(var i=0;i<Eingabeinarray.length;i++){//Filtere die Wörter
normalisiere[i]=normalisiertesWort(Eingabeinarray[i]);
}
document.forms['f1'].anzahl.value = i;
normalisiere.sort();//Nach Alphabet und Kleinbuchstaben sortieren
var k=1;
array=new Array();
var p=0;
for(var j=0;j<normalisiere.length;j++){//ermitteln wie oft die einzelnen woerter vorkommen
if(normalisiere[j]===normalisiere[j+1]){
k++;
}
else{
array[p]=new Array(2);
array[p][0]=normalisiere[j];
array[p][1]=k;
p++;
k=1;
}
}
var tausch1, tausch2;
for(p=0;p<array.length-1;p++){//sortieren des Arrays nach haeufigkeit des vorkommen der woerter
if(array[p][1]<array[p+1][1]){//da ist ein fehler er nimmt nicht ich mit 6 als erstes sondern 15 mit 1
tausch1=array[p+1][1];
tausch2=array[p+1][0];
array[p+1][1]=array[p][1];
array[p+1][0]=array[p][0];
array[p][1]=tausch1;
array[p][0]=tausch2;
p=0;
}
}
//Ausgabe
document.forms['f1'].wo1.value = array[0][0]+(" ")+(array[0][1]*100/i).toFixed(1);
document.forms['f1'].wo2.value = array[1][0]+(" ")+(array[1][1]*100/i).toFixed(1);
document.forms['f1'].wo3.value = array[2][0]+(" ")+(array[2][1]*100/i).toFixed(1);
document.forms['f1'].wo4.value = array[3][0]+(" ")+(array[3][1]*100/i).toFixed(1);
document.forms['f1'].wo5.value = array[4][0]+(" ")+(array[4][1]*100/i).toFixed(1);
document.forms['f1'].wo6.value = array[5][0]+(" ")+(array[5][1]*100/i).toFixed(1);
document.forms['f1'].wo7.value = array[6][0]+(" ")+(array[6][1]*100/i).toFixed(1);
document.forms['f1'].wo8.value = array[7][0]+(" ")+(array[7][1]*100/i).toFixed(1);
document.forms['f1'].wo9.value = array[8][0]+(" ")+(array[8][1]*100/i).toFixed(1);
document.forms['f1'].wo10.value = array[9][0]+(" ")+(array[9][1]*100/i).toFixed(1);
}
function normalisiertesWort(s) {//woerter aus dem text rausfiltern
var satzZeichen = "\",;:.!?-"; //herauszufilternde Zeichen
var w = "";
s = s.toLowerCase(); // Umwandlung in Kleinbuchstaben
for (var i=0; i < s.length; i++) {
if (satzZeichen.indexOf( s.charAt(i)) == -1) { // kein Satzzeichen
w = w + s.charAt(i); // also in den Wortstring übernehmen
}
}
return w
}
//]]>
</script>
</head>
<body>
<form id="f1" action="hello.html">
<p>
<label for="Eingabe ">Text: </label><br />
<textarea type="text" id="text" name="t1" cols="75" rows="12"></textarea><br />
<button type="button" onclick="Textkette()">Auswerten des Textes</button><br />
<label for="anzahl">Anzahl der Woerter: </label>
<input type="text" id="anzahl" name="anzahl" readonly="readonly" /><br/><br/>
<label for="woerter">Haeufigste Woerter: </label><br/>
<label for="wo1">1.</label>
<input type="text" id="wo1" name="wo1" readonly="readonly" /><br/>
<label for="wo2">2.</label>
<input type="text" id="wo2" name="wo2" readonly="readonly" /><br/>
<label for="wo3">3.</label>
<input type="text" id="wo3" name="wo3" readonly="readonly" /><br/>
<label for="wo4">4.</label>
<input type="text" id="wo4" name="wo4" readonly="readonly" /><br/>
<label for="wo5">5.</label>
<input type="text" id="wo5" name="wo5" readonly="readonly" /><br/>
<label for="wo6">6.</label>
<input type="text" id="wo6" name="wo6" readonly="readonly" /><br/>
<label for="wo7">7.</label>
<input type="text" id="wo7" name="wo7" readonly="readonly" /><br/>
<label for="wo8">8.</label>
<input type="text" id="wo8" name="wo8" readonly="readonly" /><br/>
<label for="wo9">9.</label>
<input type="text" id="wo9" name="wo9" readonly="readonly" /><br/>
<label for="wo10">10.</label>
<input type="text" id="wo10" name="wo10" readonly="readonly" /><br/>
</p>
</form>
</body>
</html>
Probleme:
1. bei mir gibt er in der ausgabe erst das wort "15" mit häufigkeit 1 bzw. 0,7% und danach erst das häufigste wort "ich" mit häufigkeit 6 bzw 4,3% ich konnte nicht herausfinden woran das liegt
2. Kann ich die Ausgabe nicht eleganter machen?
Am liebsten in einer Tabelle
Dankeschön im voraus.
Gruß
Uwe
Hi,
- bei mir gibt er in der ausgabe erst das wort "15" mit häufigkeit 1 bzw. 0,7% und danach erst das häufigste wort "ich" mit häufigkeit 6 bzw 4,3% ich konnte nicht herausfinden woran das liegt
Kann ich nicht nachvollziehen.
Mit „blah blubb blah jodel sülz blah jodel blah blah blubb blubb blubb blubb blubb blubb jodel“ erhalte ich
Anzahl der Woerter: 16
blubb 43.8
blah 31.3
jodel 18.8
sülz 6.3
Hab jetzt nicht nachgezählt/-rechnet - aber die Sortierung nach prozentualer Häufigkeit sieht doch erst mal gut aus.
- Kann ich die Ausgabe nicht eleganter machen?
Am liebsten in einer Tabelle
Klar kannst du - lass' dich nicht aufhalten.
Im simpelsten Falle Zellen per innerHTML mit Werten befüllen, bzw. ggf. auch ganze Tabelle dynamisch in String-Form generieren und mit innerHTML ins Dokument einfügen.
Und das Sortieren geht auch eleganter und vermutlich performanter - Array.sort nimmt auch eine Callback-Funktion als Parameter, vergleichbar mit PHPs usort.
MfG ChrisB
Ja, stimmt schon, aber wenn ich den vorgegebenen Text eingebe:
"Herr Bundespräsident, Herr Ministerpräsident, Herr Landtagspräsident, Herr Kardinal, lieber Herr Zehetmair und lieber Freund Theo Waigel! Während ich mir die Reden anhöre, gingen meine Gedanken in vergangene Zeiten zurück, und ich fragte mich: "Wann warst du zum ersten Mal in München?" Wenn ich mich recht entsinne, war das Ende März 1945. Ich war damals gerade 15 Jahre alt und ich befand mich als Flaghelfer in Berchtesgaden. Wir fuhren an einem Tag von Berchtesgaden nach München, um etwas dorthin zu transportieren. Ich kannte München noch nicht und meine erste Begegnung mit der Stadt war ein Schock, denn sie war ein einziger Trümmerhaufen. Angesichts dieses Elends sahen weder wir Kinder noch die Erwachsenen eine positive Zukunft. Doch wir haben es geschafft! Diese großartige Generation meiner Eltern, der Großeltern und vielleicht der Urgroßeltern verzweifelte trotz allem nicht. Sie sagten sich: "Wir wollen es packen!". "
kommt halt bei der Ausgabe was falsches raus :((
Hi there,
[...]und vielleicht der Urgroßeltern verzweifelte trotz allem nicht. Sie sagten sich: "Wir wollen es packen!". "
Fällt Dir da nichts auf?