Nur mit a+b quadrieren

neerual

Mitglied
Guten Tag, also ich soll einen Algorithmus schreiben, der positive ganze Zahlen quadriert.

Gegeben ist: eine positive ganze Zahl x
Gesucht: Das Quadrat x^2
Ich darf nur Additionen a+b für int-Werte a,b und a, b >= 0 benutzen.

Dieser Algorithmus soll außerdem nach dem Vorbild der Methode euklidModern formuliert sein und uns wurde ein Rumpf vorgegeben:

Folgendes habe ich soweit probiert:
Code:
public class Uebung02 {
    public static int
        euklidModern(int x, int y) {
        int r;
        while ( x >= 0) {
            //Hier soll theoretisch hin, dass x so oft addiert wird,
            //wie x groß ist (zB. im Fall 3^2: 3+3+3)
        }
        return x; //Wertauslieferung (?)
    }
    public static int quadrat (int x) {     // alles ab hier wurde uns als Rumpf vorgegeben
        int q;                //jetzt bin ich mir unsicher, ob das, was ich oben
                        //vor hatte, vielleicht doch hier hin gehört?
        return q;            //aber dann wüsste ich nicht, wofür ich den Kopf
    }                    //mit "euklidModern" benutzen sollte
}

Ich weiß einfach nicht mehr weiter und meine Unterlagen helfen mir auch nicht wirklich.
Ich wäre für jeden Tipp dankbar.
Wie gesagt, bin blutige Anfängerin und das ist das erste Programm, das wir schreiben sollen.
 

JStein52

Top Contributor
Wozu soll euklidModern gut sein ? Was ist das ? Wieso hat das zwei Parameter ? Um eine Zahl zu quadrieren braucht man nur einen Parameter ...
 

Robat

Top Contributor
Dir ist doch alles gegeben was du brauchst.
Du musst so oft deine Zahl aufaddiere, wie deine Zahl groß ist.

Als Prosa wäre das:
Code:
definiere zaehler, summe
solange zaehler kleiner x:
    addiere x auf die summe
    erhoehe zaehler
gib summe zurück
 

Robat

Top Contributor
Ich würde die Methode eher als Beispielcode sehen.
Bei uns war es oftmals so, dass ein (Teil einer) Methode gegeben wurde der uns Hinweise auf die Lösung der Aufgabe gab.
Es war aber nicht alles von der Methode für die Aufgabe verwendbar.

Jetzt weiß ich aber nicht ob das bei euch auch so ist..
 

neerual

Mitglied
An sich haben wir in den Unterlagen schon ein Beispiel dafür:

Code:
public class GGT {
    public static int
        euklidModern (int x, int y) {
        int r;
        while (y != 0) {
            r = x % y;
            x = y;
            y = r;
        }
        return x;
    }
    public static void main(String[] args) {
        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[1]);
        int d;
        d = euklidModern (a, b);
        System.out.println(d);
    }
}
 

JStein52

Top Contributor
Aber ausser dass da ein while ein public ein static und noch ein bis zwei Schlüsselbegriffe drin stehen kannst du da nichts von verwenden
 

neerual

Mitglied
Vor allem kann ich doch auch nichts mit Modulo berechnen, wenn ich nur a+b nutzen darf, nicht wahr? Weil an sich habe ich darüber auch schon ein bisschen nachgedacht..
 

neerual

Mitglied
Sollte ich dann vielleicht x solange aufaddieren, bis summe % x = x?

(Komme mir vor als wären meine Ideen meist sehr nutzlos :( )
 

JStein52

Top Contributor
Code:
    public static int quadrat(int zahl) {
        int quadrat = 0;
        int zaehler = 0;

        while (zaehler < zahl) {
            quadrat = quadrat + zahl;
            zaehler++;
        }
        return quadrat;
    }
Und wahrscheinlich wird @DerWissende dir das gleich in einer Zeile schicken. Aber fürs Verständnis ist es so besser und passt zu dem was @Robat oben geschrieben hat. Vergleiche es mal
 

neerual

Mitglied
Code:
    public static int quadrat(int zahl) {
        int quadrat = 0;
        int zaehler = 0;

        while (zaehler < zahl) {
            quadrat = quadrat + zahl;
            zaehler++;
        }
        return quadrat;
    }
Und wahrscheinlich wird @DerWissende dir das gleich in einer Zeile schicken. Aber fürs Verständnis ist es so besser und passt zu dem was @Robat oben geschrieben hat. Vergleiche es mal
Aber meint ihr nicht, dass ich dann Punktabzüge bekomme, weil ich euklidModern vernachlässige?
 

neerual

Mitglied
Danke schonmal für all eure Eklärungen und Beispiele, jetzt habe ich soweit das:

Code:
class Example {
    public static int quadrat(int y, y >0) {
        int q = 0;
        int x = 0;

        while (x < y) {
            q = q + y;
            x++;
        }
        return q;
    }
  System.out.println(q)
}

Habe das mal in einen online compiler gesteckt und der sagt zwar "successfully compiled", aber gibt dann nur aus: "Error: Could not find or load main class undefined"
Hatte vorher ganz vorne "public class Example", aber da hat ers gar nicht compiled.
 

JStein52

Top Contributor
Genau !
Code:
public static void main(Strings[] args) {
System.out.println("Quadrat von 4: "+quadrat(4);
}
 

Meniskusschaden

Top Contributor
@neerual: Hast du den genauen Wortlaut der Aufgabenstellung gepostet oder ist es deine eigene Formulierung? Vielleicht hast du irgend etwas weggelassen, woraus sich der Sinn des Euklid-Verweises doch noch erschliesst.
 

Ähnliche Java Themen

Neue Themen


Oben