1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

JavaScript Probleme(Parameter und for-Schleifen)

Discussion in 'Programmieren' started by Rh.roics, May 8, 2007.

Thread Status:
Not open for further replies.
  1. Rh.roics

    Rh.roics ROM

    Hallo!

    Ich versuche mich zur Zeit in Java einzuleben und habe mir diverse Übungsmaterialien angeschafft.
    Das Problem liegt im Bereich "Schleifen": Die For-Schleife:
    Damit es nicht schon bei der Erklärung meines Problems scheitert, kopiere ich einfach mal den gesamten relevanten Quelltext von der entsprechenden Übungsseite:

    Code:
    var t = prompt("Geben Sie eine natürliche Zahl ein","");   //Eingabeaufforderung
    
    for (var i=1; i<=t; i++) {                                //Beginn der Wiederholungsschleife
        if (teilbar(t,i)==true) {                             //Abfrage der Teilbarkeit (Fallunterscheidung)
            document.write(t+" ist durch "+i+" teilbar.<br>") //Ausgabe der Antwort
        }                                                     //Ende der Fallunterscheidung
    }              
    Erklärung des Codes:
    Code:
    function istPrim(zahl) {
    var teileranzahl=0;
    for (var i=1; i<=zahl; i++) {         //Beginn der Wiederholungsschleife
        if (teilbar(zahl,i)==true) {      //Abfrage der Teilbarkeit (Fallunterscheidung)
            teileranzahl++ ;             //Erhöhung der Anzahl der Teiler
        }                                                    
    }
    if (teileranzahl==2) {               //Eine Primzahl hat genau zwei Teiler!     
    ____________

    Soweit die Übungen. Eigentlich kam ich bis zu diesen Übungen ganz gut zurecht mit JavaScript, aber jetzt komme ich einfach nicht mehr weiter. Ich habe schon viel probiert, aber das meiste klappte nicht.

    Hier das, was ich bisher so verstanden habe: (ich bin bei 1. angekommen und habe die Ausgabe programmiert, welche die Anzahl der Teiler ausgeben soll, bzw. habe es versucht - klappt leider immer noch nicht [x sollte die Variable für die Anzahl der Teiler sein])

    Code:
    <html>
    <head>
    <title>
    Übung 13
    </title>
    
    <script type="text/Javascript">
    <!--
    function teilbar(zahl1,zahl2)
    {
    if (zahl1%zahl2==0) {
        return true;
        }
    else {
        return false;
        }
    }
    //-->
    
    </script>
    </head>
    <body>
    <script type="text/Javascript">
    <!--
    var t = prompt("Geben Sie eine natürliche Zahl ein","");  //Eingabeaufforderung
    
    for (var i=1; var x=1; i<=t; i++) {                                //Beginn der Wiederholungsschleife
        if (teilbar(t,i)==true) {                             //Abfrage der Teilbarkeit (Fallunterscheidung)
        x++;
        document.write(x);
        document.write(t+" ist durch "+i+" teilbar.<br>") 	  //Ausgabe der Antwort
    
       }                                                     //Ende der Fallunterscheidung
    }          						  //Ende der Wiederholungsschliefe
    
    document.write(teilbar(a,b));
    
    //-->
    </script>
    </body>
    </html>
    

    Gruß und schon mal vielen Dank
     
  2. Manko10

    Manko10 Byte

    Hi,
    zuerst einmal: Java und JavaScript haben bis auf die Syntax-Ähnlichkeit nichts miteinander zu tun.

    Und dann, wenn du mehrere Zählervariablen in einer Schleife verwenden möchtest, dann musst du es so machen:
    Code:
    var t = prompt("Geben Sie eine natürliche Zahl ein", "");
    for(var i=1, x=1; i<=t; i++)
    {
        if(teilbar(t,i) == true)
        {
            document.write(++x);
            document.write(t + " ist durch " + i + " teilbar.<br>");
        }
    }
    Außerdem lohnt es sich immer, den Code vernünftig und ordentlich zu strukturieren und sinnvolle Einrückungen vorzunehmen.

    Wenn du weitere Fragen hast, bitte stelle sie.

    MfG
    Manko10
     
  3. Rh.roics

    Rh.roics ROM

    Hallo!

    Tut mir leid für den Fehler mit" Java" :sorry:

    Also die beiden Aufgaben funktionieren.
    Jetzt gibt es aber Probleme hiermit:
    Code:
    function istPrim(zahl) {
    var teileranzahl=0;
    for (var i=1; i<=zahl; i++) {         //Beginn der Wiederholungsschleife
        if (teilbar(zahl,i)==true) {      //Abfrage der Teilbarkeit (Fallunterscheidung)
            teileranzahl++ ;             //Erhöhung der Anzahl der Teiler
        }                                                    
    }
    if (teileranzahl==2) {               //Eine Primzahl hat genau zwei Teiler!      
            //[B]Wie es weitergeht, sollten Sie selber finden![/B]

    Wie soll das gehen , dass eine Funktion auch auf eine andere Funktion zugreifen kann ?
     
  4. Manko10

    Manko10 Byte

    Naja, so schlimm war es ja auch nicht :).

    So, wie du Funktionen immer aufrufst. Was meinst du?
    Am besten, du postest mal deinen gesamten Code, wie du ihn jetzt hast, dann ist es leichter, dir zu helfen und deine Probleme aufzudecken.

    Außerdem finde ich deine Scripts immer noch ein wenig unübersichtlich, da du nicht sinnvoll einrückst (sorry, ist so). Im "Programmiererleben" wirst du mit visuell gut strukturiertem Code schon gleich einen besseren Eindruck machen und Fehler fallen einem viel schneller ins Auge.
    Für eine Einrückung werden in der Regel vier Leerzeichen verwendet.
     
  5. Rh.roics

    Rh.roics ROM

    Code:
    <html>
    <head>
    <title>
    Übung Seite 13
    </title>
    <script type="text/Javascript">
    <!--
    function teilbar(zahl1,zahl2)
    {
    if (zahl1%zahl2==0) {
        return true;
        }
    else {
        return false;
        }
    }
    //-->
    </script>
    </head>
    <body>
    <script type="text/Javascript">
    <!--
    
    var t = prompt("Geben Sie eine natürliche Zahl ein","");   //Eingabeaufforderung
    
    
    function istPrim(zahl) {
    var x = 0;
    for (var i=1; i<=t; i++) {                                //Beginn der Wiederholungsschleife
        if (teilbar(t,i)==true) {                             //Abfrage der Teilbarkeit (Fallunterscheidung)
    	x++;
            document.write(t+" ist durch "+i+" teilbar.<br>") //Ausgabe der Antwort
        }                                                     //Ende der Fallunterscheidung
    }                                                         //Ende der Wiederholungsschliefe
    
    	if (x==2) {
    		document.write("Es sind "+x+" Teiler. Die Zahl die sie eingegeben haben ist eine Primzahl.")
    		}
    	else {
    		document.write("Es sind "+x+" Teiler.");
    	}
    }
    //-->
    </script>
    </body>
    </html>
    
    Es erscheint nur die Eingabebox , dann geht nichts mehr :aua:
    Wo ist der Fehler ?


    Gruß
     
  6. Manko10

    Manko10 Byte

    Ja, das ist klar, Funktionen rufen sich nicht von selbst auf.
    Ich würde das mit der Eingabebox so machen:
    Code:
    istPrim(prompt("Geben Sie eine natürliche Zahl ein",""));
    Wir gehen jetzt einfach mal davon aus, dass der Benutzer wirklich eine Zahl eingibt, sonst musst du noch eine Überprüfung machen (mit isNaN()).

    // Edit:
    Den for-Schleifenkopf musst du dann natürlich abändern:
    Code:
    for(var i=1; i<=zahl; i++) { ... }
     
  7. Rh.roics

    Rh.roics ROM

    Abend.

    Habs mit deinen Tipps versucht ,funktioniert aber immer noch nicht :bahnhof:

    Was gibt es noch zu verbessern?

    Schonma vielen Dank!


    /EDIT: Ok , hat sich erledigt. Habs hingekriegt.

    Komme bei dieser Aufgabe nicht weiter:

     
  8. Manko10

    Manko10 Byte

    Sag mal, bin ich gerade dabei, deine Aufgaben zu erledigen?
    Aber was solls.
    Den größten gemeinsamen Teiler kannst du so berechnen:
    Code:
    var zahl1 = prompt("ggT - Zahl 1:", "");
    var zahl2 = prompt("ggT - Zahl 2:", "");
    document.write(ggT(zahl1, zahl2));
    
    function ggT(m,n)
    {
        if (n == 0) {
            return m;
        }
        else {
            return ggT(n, m%n);
        }
    }
    und das kleinste gemeinsame Vielfache so:
    Code:
    var zahl3 = prompt("kgV - Zahl 1:", "");
    var zahl4 = prompt("kgV - Zahl 2:", "");
    document.write(kgV(zahl3, zahl4));
    
    function kgV(m, n)
    {
        return m * n / ggT(m, n);
    }
     
  9. Manko10

    Manko10 Byte

    Heiho!
    Gibts dich noch?
     
Thread Status:
Not open for further replies.

Share This Page