Hjälp med java programering a

Permalänk

Hjälp med java programering a

TJoo!

Nu kommer jag med en programmerings fråga till, Håller på med java för fullt och har kommit in på repetitionssatser, men nu är jag helt fasst. behöver lite hjälp för att få fart i huvudet igen.

Det jag ska göra är: Gör ett program som beräknar 1 + 2 + 3 + 4 + 5 + 6 ... + n,
där värdet på n bestäms av användaren. Lägg sedan till kod så att uttrycket "1 + 2 + 3 + 4 + 5 + 6 + .... + n = xx" skrivs ut.
Men det står still nu hur jag ska få den att plussa ihop alla talen, inte bara skriva ut dom. om någon vänlig själ har lust att hjälpa mig vore det guld!
tack på förhand!

jag har skrivit ihop

// räkna public class Uppgift72{ public static void main(String[] args) { System.out.print("Ange tal: "); int tal = Keyboard.readInt(); for (int n = 1; n <= tal; n++){ System.out.print(n + " "); } } }

Permalänk
Skrivet av Niklas807:

TJoo!

Nu kommer jag med en programmerings fråga till, Håller på med java för fullt och har kommit in på repetitionssatser, men nu är jag helt fasst. behöver lite hjälp för att få fart i huvudet igen.

Det jag ska göra är: Gör ett program som beräknar 1 + 2 + 3 + 4 + 5 + 6 ... + n,
där värdet på n bestäms av användaren. Lägg sedan till kod så att uttrycket "1 + 2 + 3 + 4 + 5 + 6 + .... + n = xx" skrivs ut.
Men det står still nu hur jag ska få den att plussa ihop alla talen, inte bara skriva ut dom. om någon vänlig själ har lust att hjälpa mig vore det guld!
tack på förhand!

jag har skrivit ihop

// räkna public class Uppgift72{ public static void main(String[] args) { System.out.print("Ange tal: "); int tal = Keyboard.readInt(); for (int n = 1; n <= tal; n++){ System.out.print(n + " "); } } }

Ett liten ledning; skapa ytterligare en heltalsvariabel och tänk på att du inom for satsen kan använda dig av variabeln n.

Har du fortfarande svårt att klura ut hur det hjälper så kan du prova att stoppa in följande i for loopen:

System.out.println(n);

Och kör igenom programmet en gång.

Permalänk

// räkna public class Uppgift72{ public static void main(String[] args) { System.out.print("Ange tal: "); int tal = Keyboard.readInt(); int sum = 0; for (int n = 1; n <= tal; n++){ sum += n; System.out.print(n + " "); } System.out.print("= " + sum); } }

Visa signatur

Citera, tack!
Har du läst tråden om strandhögtalare och andra musiklådor?

Permalänk
Medlem

Som blomqvist visat behöver du två variabler, en som är vilket tal du är på just nu och en som är totala summan. Ifall du inte skulle behövt skriva ut varje tal du adderade hade du kunnat utnyttja att summan mellan första och sista talet, är samma som summan mellan näst sista och näst första o.s.v. enligt gauss formel.
1 + 2 + 3 + 4 + 5 + 6 + 7 +.... + (m-1) + m
m + (m-1) + .................................... 2 + 1
= = = .................................= =
m+1, m+1 m+1...............................m+1, m+1 = m*(m+1)/2
Detta optimerar algoritmen otroligt mycket ifall du endast behöver få fram summan då du endast behöver göra en uträkning och inte n stycken d.v.s. den tar upp 1/n gånger så lång tid.

Visa signatur

In the end what separates a man from a slave?
Money? Power? No... A man chooses, a slave obeys.
ASUS Z170M-PLUS || Intel Core i7 6700k @ 4,7GHz || 64GB 2133MHz Corsair RAM || MSI NVIDIA RTX 2070 Gaming Z 8GB || Bifenix Prodigy M || 2x CZ TR150 480GB RAID 0 || BeQuiet DarkRock Pro

Permalänk

aaa tusen tack!!

så då är det så att det hänger på

sum += n;

så om ja skulle sätta - eller * där skulle det fungera med?

säg till te x att jag skulle vilja ändra till nultiplikation istället för addition
skulle jag då sätta? jag hänger fortfarande inte riktigt med i koden vad det är själva matten sker?

sum *= n;

så dumt måste ju ändra värdet på sum med annar blir ju allt noll, kom jag på mig själv med nu.
tusen tack för all hjälp iallafall!

Permalänk
Medlem

sum += n; är samma som:
sum = sum + n;

Det samma gäller för minus, gånger och delat med.

sum -= n;
sum *= n;
sum /= n;

Division med heltal är däremot inte alltid en bra ide .

Visa signatur

PC1: Sabertooth X58, i7 980, 24GB RAM, 2st GTX 470, Intel 330 180GB SSD, Corsair AX850.

Permalänk

hehe aa testa med både + och * division hoppade jag över dock

sjukt kul med programmering, även om jag måste erkänna mig lite lätt borttappad nu här med repetitionssater!
sen är väll dock inte det här så avancerat kanske när man väl kan, men för en okunnig som mig så är det väldigt intressant!

Tur det finns sweclockers dock så man kan få lite hjälp när man sitter o är helt borta i huvudet