Just nu i M3-nätverket
Jump to content

Summa av talföljd i for-loop


Enacleb

Recommended Posts

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!

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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...

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...