Just nu i M3-nätverket
Gå till innehåll

Summa av talföljd i for-loop


Enacleb

Rekommendera Poster

Har prov i programmering A imorgon och gör några övningsuppgifter inför det. Har stött på ett problem som jag inte kan klura ut.

 

Uppgiften ser ut så här:

 

Skriv ett program som läser in ett heltal n och som beräknar summan av

1 + 4 + 9 + 16 + ... + n2 . Låt gärna programmet skriva ut den ackumulerade summan varefter.

Tips: n2 skrivs enklast som n*n.

 

Så här ser mitt nuvarande program ut (det ger fel summa):

 

 

public class test1{
public static void main (String[] args) {

	System.out.print("Skriv ett heltal: ");
		int n = Keyboard.readInt();

	int total = 0;

		for(int i = 1; i <= n; i++) {

			total = (total) + ((i-1)*(i-1)) + (i*i);

			System.out.println("Summan av alla föregående tal: " + total);
		}
}
}

 

Kan man kanske använda fält (array) på något sätt?

Många digitala kramar till den som kan hjälpa mig med detta!

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Ändra summeringsraden till följande

total = total + i*i;

Vet inte riktigt var du fick den andra termen från (kvadreringen av n-1)

 

Vet heller inte vilka tekniker som ingår i just denna kurs, men det finns förstås fler sätt att lösa detta på, ex. via rekursion.

Länk till kommentar
Dela på andra webbplatser

Har prov i programmering A imorgon och gör några övningsuppgifter inför det. Har stött på ett problem som jag inte kan klura ut.

 

Uppgiften ser ut så här:

 

Skriv ett program som läser in ett heltal n och som beräknar summan av

1 + 4 + 9 + 16 + ... + n2 . Låt gärna programmet skriva ut den ackumulerade summan varefter.

Tips: n2 skrivs enklast som n*n.

 

Så här ser mitt nuvarande program ut (det ger fel summa):

 

 

public class test1{
   public static void main (String[] args) {

       System.out.print("Skriv ett heltal: ");
           int n = Keyboard.readInt();

       int total = 0;

           for(int i = 1; i <= n; i++) {

               total = (total) + ((i-1)*(i-1)) + (i*i);

               System.out.println("Summan av alla föregående tal: " + total);
           }
   }
}

 

Kan man kanske använda fält (array) på något sätt?

Många digitala kramar till den som kan hjälpa mig med detta!

 

En liten miss i logiken, du ska summera kvadraterna på alla heltal upp till det inmatade talet, alltså behöver du för varje varv i loopen bara lägga kvadraten på det aktuella i-värdet till total:

 

public class test1{
public static void main (String[] args) {

System.out.print("Skriv ett heltal: ");
int n = Keyboard.readInt();

int total = 0;

for(int i = 1; i <= n; i++) {

total +=  i * i;

System.out.println("Summan av alla föregående tal: " + total);
}
}
}

 

/Pär B

 

Red: Attan, lite för långsam...

Länk till kommentar
Dela på andra webbplatser

Satan vad snabba ni var!! 1000 thumbsup.gif till er!

 

Nu funkar allt som det ska, tack så mycket! Ni hjälpte mig fömodligen till ett bättre betyg imorgon laugh.gif.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...