Potenz mit Summer der ungeraden Zahlen

klopstock

Mitglied
hallo
also ich hab da eine Aufgabe bekommen, die darauf hinaus will, dass man ein Programm schreibt, welches jede GANZE zahl ² nimmt ohne mathpow oder ähnliche Spielereien. ( Ich benutze übrigens Linux )

Meine Idee ist die folgende: wenn ich zB "3" eintippe soll ja 9 rauskommen.
Ich wollte es folgendermaßen erst so machen, dass ich die ersten 3 ungeraden zahlen addiere. 1+3+5=9 tata
ABER ich hatte keine Ahnung, wie ich nur die ungeraden Zahlen angeben soll... nun kam mir eine andere idee, bei der der letzte schliff noch fehlt:

Java:
public class Potenz {
	public static void main (String [] args) {
 int x, y, i, a, f;
	x= 0;
	y=1;
	a=0;
	f= Integer.parseInt (args [0]);
 for (i=1 ; i <= f ; i = i + 1 )
a = x+y+a;
x=x+1 ; 
y=y+1;
 
System.out.println (a);
	} 
}

Die Idee besteht darin aus 1+3+5 einfach (0+1)+(1+2)+(2+3) zu machen. Deswegen habe ich x=0 definiert und y=1
und eigentlich sollte sich der x wert UND der y wert jedes mal wenn die schleife wiederholt wird, weil "i" kleiner "f" ( f wird in dem terminal / kommandozeile wie auch immer vorher eingetippt.
[ Linux : java Potenz 3 - z.B. vorher natürlich javac Potenz.java ]
Aber dier klappt leider nicht ich verstehe nicht wieso er den x und y wert nicht jede "Runde" erhöht. Er ignoriert diese quasi und lässt diese ständig bei 0 und 1.

Hoffe es ist anständig beschrieben und ihr versteht mein Problem.
MfG Klopstock
 
B

bone2

Gast
{ anweisungen; } klammern nach dem for() vergessen
 
Zuletzt bearbeitet von einem Moderator:

klopstock

Mitglied
{ anweisungen; } klammern nach dem for() vergessen

mit anweisungen meinst du die anweisungen für a,x,y
also
Java:
 for (i=1 ; i <= f ; i = i + 1 )
{a = x+y+a;
x=x+1 ; 
y=y+1;}
das klappt auf jedenfall nicht ... habe eben ausprobiert x und y vor die definition von a zu packen, dann macht er das zwar einmal, aber auch wirklich nur einmal ...

Edit: wobei er ja auch erst mit den alten werten rechnen (x,y) rechnen soll und für die nächste wiederholung der schleife die werte um jeweils 1 erhöhen soll :rtfm:
 
Zuletzt bearbeitet:
B

bygones

Gast
der code stimmt schon
Java:
    public static void main(String[] args) {
        int a = 0;
        int x = 0;
        int y = 1;
        int f = 5;
        for (int i = 1; i <= f; i = i + 1) {
            a = x + y + a;
            x = x + 1;
            y = y + 1;
            System.out.printf("x: %d y: %d\n", x, y);
        }
        System.out.println(a);
    }
ausgabe
Code:
x: 1 y: 2
x: 2 y: 3
x: 3 y: 4
x: 4 y: 5
x: 5 y: 6
25
 

klopstock

Mitglied
ich brauchte die geschweiften klammern um die anweisungen, jedoch habe ich sie falsch gesetzt!
jetzt bin ich auf jeden fall ne ecke klüger ich danke euch beiden :toll:
 

VfL_Freak

Top Contributor
Moin,

also ich hab da eine Aufgabe bekommen, die darauf hinaus will, dass man ein Programm schreibt, welches jede GANZE zahl ² nimmt ohne mathpow oder ähnliche Spielereien. ( Ich benutze übrigens Linux )
Meine Idee ist die folgende: wenn ich zB "3" eintippe soll ja 9 rauskommen.

Ich wollte es folgendermaßen erst so machen, dass ich die ersten 3 ungeraden zahlen addiere. 1+3+5=9 tata

Ich will ja kein Spielverderber sein :D, aber so wie Deine Aufgabe verstehe, sollst Du doch jede eingegebene ganz Zahl quadrieren, oder ???:L
Dafür halte ich Deinen Ansatz für reichlich umständlich .... :noe:

Warum nicht nicht ganz simpel so :
Java:
public class Potenz 
{
    public static void main( String [] args ) 
    {
        int iResult = 0; 
        int iZahl = Integer.parseInt( args [0] );
        iResult = iZahl * iZahl;
        System.out.println( iZahl );
    } 
}

Gruß
Klaus

[EDIT]
Tipp: gewöhne Dir am besten gar nicht an, bei Variablennamen nur mit einzelnen Buchstaben zu arbeiten, sondern nimm' stets "sprechende Bezeichner" ;) Du wirst es mir schon sehr bald danken, wenn Dein Projekt mal 100 oder 1000 oder gar 10000 Zeilen umfasst :D
[/EDIT]
 
Zuletzt bearbeitet:

klopstock

Mitglied
Moin,



Ich will ja kein Spielverderber sein :D, aber so wie Deine Aufgabe verstehe, sollst Du doch jede eingegebene ganz Zahl quadrieren, oder ???:L
Dafür halte ich Deinen Ansatz für reichlich ungeeignet .... :noe:

Warum nicht nicht ganz simpel so :
Java:
public class Potenz 
{
    public static void main( String [] args ) 
    {
	int iResult = 0;
        int iZahl = Integer.parseInt( args [0] );
	iResult = iZahl * iZahl;
	System.out.println( iZahl );
    } 
}

Gruß
Klaus

Hi Klaus,

das Problem darin ist, dass ich die Summe(!!) von den ungeraden Zahlen dazu benutzen sollen um das Quadrat zu bilden :). Ich meine ich hätte das geschrieben, falls nicht dann tut’s mir leid und dann wäre deine Lösung sicherlich besser.

MfG Klopstock
 

VfL_Freak

Top Contributor
Ah, ok - ich hatte Dich so verstanden, als ob es Dein Ansatz hierzu gewesen wäre ...

Code:
Ich wollte es folgendermaßen erst so machen, dass ich die ersten 3 ungeraden zahlen addiere

Na denn - und achte mal bitte auf den EDIT-Teil, den ich in meinem letzten Post noch angehängt habe ;)

tschüss
Klaus
 
B

bone2

Gast
mit anweisungen meinst du die anweisungen für a,x,y
also
Java:
 for (i=1 ; i <= f ; i = i + 1 )
{a = x+y+a;
x=x+1 ; 
y=y+1;}
das klappt auf jedenfall nicht ... habe eben ausprobiert x und y vor die definition von a zu packen, dann macht er das zwar einmal, aber auch wirklich nur einmal ...

klappt bei mir problemlos^^

außer den angesprochenen variablennamen, schau dir auch an wie bygones eingerückt hat. übersicht ist wichtig
 

klopstock

Mitglied
Ja, ich werde in Zukunft darauf achten, dass ich richtig einrücke und die Variablen besser benenne. Das macht wirklich Sinn auch bei so einem kleinen "Projekt" :)

und zu bone2

ich werde jetzt das mit den Klammern nochmal anders ausprobieren wenn das jetzt doch klappen sollte frage ich mich, was ich davor falsch gemacht habe :S vielleicht habe ich ja vergessen das Projekt erst zu speichern dann im Terminal zu kompilieren ;D

danke euch für die Hilfe und die guten Ratschläge

MfG
Klopstock
 

noobadix

Bekanntes Mitglied
Das is ja n Ding. Also wenn ich das Quadrat einer Zahl x bilden soll, dann addiere ich die x ersten ungeraden Zahlen von 1 an? Dann wäre doch der einfachste Ansatz folgender:

Java:
...
int x = Integer.parseInt(args[0]), result=0, counter=0;

for(int i=1;counter<x;i+=2){
     result+=i;
     counter++;
}
...

Oder hab ich da was übersehen? Oder ist es den Herren gar zu banal? :D
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
Hm, ich finde meine Lösung einfacher ;-)

Java:
public class Quadrat {

	private static int quadrat (int pInput) {
		int retVal = 0;
		for(int i=0; i<pInput; i++) {
			retVal += (i*2)+1;
		}
		return retVal;
	}

	public static void main(String[] args) {
		for(int i=1;i<=5;i++) {
			System.out.println("Quadrat("+i+") = " + quadrat(i));
		}
	}

}
Output:
Code:
Quadrat(1) = 1
Quadrat(2) = 4
Quadrat(3) = 9
Quadrat(4) = 16
Quadrat(5) = 25
 

noobadix

Bekanntes Mitglied
Jetzt würde mich interessieren, ab welcher Zahl welche Lösung effizienter ist. Würde schätzen, dass "meine" Lösung für kleine Zahlen nicht so geeignet ist, weil sie 1 Variable mehr benutzt, für größere hingegen schon, weil sie einfachere Rechenoperationen in der Schleife hat. Ist denn multiplizieren rechenintensiver als summieren?
 
Zuletzt bearbeitet:

Landei

Top Contributor
Man kann

Java:
retVal += (i*2)+1;

auch als

Java:
retVal += (i << 1) | 1;

schreiben, das sollte einen Fitz schneller sein.

Ganz persönlich finde ich ja die folgende Variante hypsch kryptisch:
Java:
private static int quadrat (int pInput) {
    int retVal = 0;
    for(int i=0; i<pInput; retVal += i++);
    return (retVal << 1) + pInput;
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Potenz berechnen mit for-Schleife Java Basics - Anfänger-Themen 3
F Potenz ausrechnen Hilfe! Java Basics - Anfänger-Themen 7
E Erste Schritte Potenz Negativ (rekursiv) Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
A DecimalFormat und wissenschatliche (Potenz-)Schreibweise Java Basics - Anfänger-Themen 6
A mantisse var * 10 hoch potenz var Java Basics - Anfänger-Themen 2
hello_autumn Potenz selber berechnen, Rekursiv. Java Basics - Anfänger-Themen 6
C Gleichung mit Potenz mit einer Unbekannten lösen Java Basics - Anfänger-Themen 5
R 2er Potenz mit vorgegebenem Schema Java Basics - Anfänger-Themen 5
W Potenz Java Basics - Anfänger-Themen 6
J Methoden Rekursive Potenz ohne Math.Pow() Java Basics - Anfänger-Themen 9
M Potenz berechnen Java Basics - Anfänger-Themen 3
P Usereingabe und Potenz berechnen Java Basics - Anfänger-Themen 16
2 2er Potenz berechnen Java Basics - Anfänger-Themen 17
E Potenz mit Modulo (über for-Schleife) berechnen Java Basics - Anfänger-Themen 8
M Potenz mithilfe rekursiver Funktion Java Basics - Anfänger-Themen 13
Haubitze_Broese Potenz einer Zahl, der Exponent ist dabei eine beliebige ganze Zahl? Java Basics - Anfänger-Themen 10
J programm für kleinste potenz Java Basics - Anfänger-Themen 10
G Potenz in Java Java Basics - Anfänger-Themen 20
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
nevel Programm für die Summer der Zahlen 1- 1ß Java Basics - Anfänger-Themen 12
L Summer aller Integer-Zahlen im Intervall [x,y] Java Basics - Anfänger-Themen 6
B Threads Counter mit ungeraden Zahlen Java Basics - Anfänger-Themen 32
B Array via Schleife mit ungeraden bzw geraden Zahlen füllen Java Basics - Anfänger-Themen 7
A Summe aller ungeraden Zahlen Java Basics - Anfänger-Themen 5
B Wieso gibt er hier nur die ungeraden Zahlen aus? Java Basics - Anfänger-Themen 5
L Array: Summe aller geraden und ungeraden Zahlen ermitteln Java Basics - Anfänger-Themen 9
K Problem mit ungeraden Zahlen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben