Legge sammen tall i en tabell i java
|
Legge sammen tall i en tabell i java
#1928638
27/02/2015 18:48
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Hei Jeg har laget et program som trekker tilfeldige tall og legger dem inn i en tabell. Tabellen blir sortert, og der etter skal jeg legge sammen de like tallene i tabellen Jeg har et forslag her, men det virket ikke Forslag?
//forsøk på å finne like tall for(int i=0;i<tallRekke.length;i++){
if (tallRekke[i] = = tallRekke[i+1]){
sum= tallRekke[i]+tallRekke[i+1];
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928644
27/02/2015 19:04
|
Registrert: Sep 2003
Innlegg: 1,724
tobiast
Ivrig
|
Ivrig
Registrert: Sep 2003
Innlegg: 1,724 |
Du må vel ha en sum for hvert tall i tabellen da? Og da er det vel greit å lagre summene i en HashMap() kanskje?
Når det gjelder letingen din etter like tall, så løper du gjennom hele tabellen og sammenlikner tallene som kommer etter hverandre i tabellen. Er de like summerer du disse. Dette vil vel føre til at du får med tallene for mange ganger.
Jeg tror jeg ville ha løpt gjennom hele listen og lett etter ett spesifikt tall, og finner jeg noen som er like ville jeg ha lagt det til summen for det spesifikke tallet. (i hashmap-en)
Eller kan dette løses fint med rekrusjon, men du er kanskje ikke der?
Mvh Tobias
Redigert av tobiast; 27/02/2015 19:12.
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928646
27/02/2015 19:11
|
Registrert: May 2009
Innlegg: 9,144
fredriks
Søk hjelp!
|
Søk hjelp!
Registrert: May 2009
Innlegg: 9,144 |
Du har missat att ha en variabel som innehåller den totala summan
sum= tallRekke[i]+tallRekke[i+1];
ska väl vara något som sum= sum+tallRekke[i+1];
med ett sum=0 innan for lopen.
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928652
27/02/2015 19:20
|
Registrert: Sep 2003
Innlegg: 1,724
tobiast
Ivrig
|
Ivrig
Registrert: Sep 2003
Innlegg: 1,724 |
Ok - så du skal summere alle tallene som det er et to eller flere av i tabellen?
eks:
1, 1, 3, 3, 4
Skal gi summen 8? Jeg trodde først at du skulle ha en sum pr tall.
Mvh Tobias
Redigert av tobiast; 27/02/2015 19:37.
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: fredriks]
#1928654
27/02/2015 19:24
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Du har missat att ha en variabel som innehåller den totala summan
sum= tallRekke[i]+tallRekke[i+1];
ska väl vara något som sum= sum+tallRekke[i+1];
med ett sum=0 innan for lopen. Jeg har prøvd det også fredriks, den bare alle tallene summerer tabellen
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928655
27/02/2015 19:25
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Nei du hadde rett første gang tobiast 1 1 skal gi 2 3 3 skal gi to osv
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: tobiast]
#1928656
27/02/2015 19:28
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Jeg tror jeg ville ha løpt gjennom hele listen og lett etter ett spesifikt tall, og finner jeg noen som er like ville jeg ha lagt det til summen for det spesifikke tallet. (i hashmap-en)
Mvh Tobias
Kan man bruke Arrays.binary.search her ?
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928663
27/02/2015 19:40
|
Registrert: May 2009
Innlegg: 9,144
fredriks
Søk hjelp!
|
Søk hjelp!
Registrert: May 2009
Innlegg: 9,144 |
Nei du hadde rett første gang tobiast 1 1 skal gi 2 3 3 skal gi to osv Nu förstår jag inte oppgaven. Vad ska resultatet i detalj bli för fölgande tal? 1 3 3 4 5 5 8
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928665
27/02/2015 19:43
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
1 gir 1 3 3 gir 2 4 gir 1 5 5 gir 2 8 gir 1
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928666
27/02/2015 19:43
|
Registrert: Sep 2003
Innlegg: 1,724
tobiast
Ivrig
|
Ivrig
Registrert: Sep 2003
Innlegg: 1,724 |
Du kan bruke Collections.frequency()
-Tobias
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: tobiast]
#1928667
27/02/2015 19:46
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Du kan bruke Collections.frequency()
-Tobias Vi har ikke kommet så langt,så det går ikke Men hvorfor virker ikke If setningen IF ( Tabell [ i ] == Tabell [i+1] eller en versjon med equals ?
Redigert av Morteen; 27/02/2015 19:52.
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928675
27/02/2015 19:58
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Det forslaget lå laaangt over mitt nivå ha ha
Får prøve litt forskjellige løkker. Skal du sykle ritt i Telemark, så si fra Stiller som hjelperytter og kjentmann.
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928686
27/02/2015 20:35
|
Registrert: Sep 2003
Innlegg: 1,724
tobiast
Ivrig
|
Ivrig
Registrert: Sep 2003
Innlegg: 1,724 |
Jeg redigerte posten over. Nå er det også et forslag som løser det uten collections. Jeg la også inn noen kommentarer.
Kort fortalt: Du bruker en Map for å holde styr på hvor mange instanser av tallet du har. En map er en liste av nøkkel/verdi-par. Altså (unik) nøkel og en tilhørende verdi. I vårt tilfelle er nøkkelen tallet du ønsker å finne antall instanser av, og verdien antall ganger du har sett tallet.
Det første du gjør er å løpe gjennom listen med tall. For hvert tall sjekker du om det finner en nøkkel som er lik tallet du er på nå. I så tilfelle har du sett tallet tidligere og du henter ut verdien (antall ganger du har sett det tidligere) og legger til 1.
Hvis tallet ikke er brukt som nøkkel i mapen, vet du at det er første gang du har sett tallet og det er bare å legge inn tallet som nøkkel med verdi = 1. (Du har sett tallet en gang)
Når du er gjennom listen har du talt alle instanser.
Det er mye mer elegante måter å gjøre dette på, men løsningen over er ganske grei å forstå.
-Tobias
Redigert av tobiast; 27/02/2015 21:04.
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928703
27/02/2015 21:07
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Jeg kan ikke løse denne oppgaven med MAP. men det likner på en løsning med jeg har sett, med å bruke en tabell til. Jeg skjønte den ikke helt, men man la inn verdiene i den opprinnlige tabellen som indeks i den nye og telte indeks nr med den verdien eller noe sånt.
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928710
27/02/2015 21:30
|
Registrert: Sep 2003
Innlegg: 1,724
tobiast
Ivrig
|
Ivrig
Registrert: Sep 2003
Innlegg: 1,724 |
Ja, hvis du bruker tallet som index i en annen array, har du jo litt av funksjonaliteten til et map, nemlig det å enkelt finne fram til en verdi basert på en nøkkel. Noe slikt: https://gist.github.com/tobiast/aad1e57e603ba7073c4fDenne løsningen krever at du vet noe om hvilke tall du har i listen din. Du må jo ha en array som er like lang som det største tallet+1, iom at du bruker tallene som index i arrayen. Mvh Tobias
Redigert av tobiast; 27/02/2015 21:43.
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928721
27/02/2015 22:10
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Hm ja det ligner faktisk på det jeg sitter å knoter med (uten å få det til ).
Redigert av Morteen; 27/02/2015 22:10.
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: Morteen]
#1928724
27/02/2015 22:18
|
Registrert: May 2009
Innlegg: 9,144
fredriks
Søk hjelp!
|
Søk hjelp!
Registrert: May 2009
Innlegg: 9,144 |
Det första du måste bestämma dig för i en sådan oppgave är hur du ska presentera lösningen. Om du kommer på det så borde det inte vara så vansklig att få till.
Jag kan inte java men om jag skulle göra det i matlab/scilab så skulle jag användt meg av en nx2 matris där första columnen är talet och andra columnen är hur många gånger det förekommer. Lätt att laga en sådan matris med en for loop.
Att ha talet som indexen i en vektor är ju också en lösning som är rätt lik den över men man får en onödigt stor vektor.
|
|
|
Re: Legge sammen tall i en tabell i java
[Re: fredriks]
#1928728
27/02/2015 22:28
|
Registrert: Sep 2003
Innlegg: 1,724
tobiast
Ivrig
|
Ivrig
Registrert: Sep 2003
Innlegg: 1,724 |
...
Jag kan inte java men om jag skulle göra det i matlab/scilab så skulle jag användt meg av en nx2 matris där första columnen är talet och andra columnen är hur många gånger det förekommer. Lätt att laga en sådan matris med en for loop. Ja, men da må du søke gjennom matrisen for å finne nøkkelen. Det gjør jo implementasjonene av map og array også, men sikkert mer effektivt enn vi klarer. Att ha talet som indexen i en vektor är ju också en lösning som är rätt lik den över men man får en onödigt stor vektor. Ja, men det er jo avhengig av hvor stor spredningen på tallene er. Har du en 1000 instanser av 1 og 1000 instanser av 10^23 er den løsningen ikke spess god. Har du tall jevnt fordelt mellom 1 og 10 er det ikke noe stress :-)
Redigert av tobiast; 27/02/2015 22:29.
|
|
|
|
|