Benbjo Skrevet 18. januar 2008 Del Skrevet 18. januar 2008 Jeg driver og lager et lite program i java og jeg lurte på hvordan man skjekker om et tall er partall eller oddetall. Greia går ut på at en bruker taster inn et tall og så skal programmet altså sjekke om det er partall eller oddetall. Har prøvd dette: System.out.print("Trykk inn et random heltall for å skjekke om algoritmen terminerer: "); tall = heltall.inInt(); while (tall != 1) { if (tall % 2) { tall = tall / 2; } else { tall = (3 * tall) + 1; men får en feilmelding av kompilatoren som sier Found: int required: boolean. Hadde vært kult om noen kunne hjelpe meg med dette Lenke til kommentar
Mr.Garibaldi Skrevet 18. januar 2008 Del Skrevet 18. januar 2008 (endret) System.out.print("Trykk inn et random heltall for å skjekke om algoritmen terminerer: "); tall = heltall.inInt(); while (tall != 1) { if (tall % 2 == 0) { tall = tall / 2; } else { tall = (3 * tall) + 1; Tror det skulle fungere nå. Jeg la til == 0 i if-testen, så du får et boolsk uttrykk der. Endret 18. januar 2008 av Mr.Garibaldi Lenke til kommentar
Vipera Skrevet 18. januar 2008 Del Skrevet 18. januar 2008 (endret) Noen som driver med Projekt Euler ser jeg ja Endret 18. januar 2008 av _Viper_ Lenke til kommentar
Benbjo Skrevet 18. januar 2008 Forfatter Del Skrevet 18. januar 2008 (endret) Nei Driver bare på for moro, men går INF1010 på UIO. Takk for hjelpen forresten garibaldi Endret 18. januar 2008 av Benbjo Lenke til kommentar
Vipera Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 Nei Driver bare på for moro, men går INF1010 på UIO. Takk for hjelpen forresten garibaldi hehe å ja, lignet veldig på denne oppgaven Lenke til kommentar
Benbjo Skrevet 19. januar 2008 Forfatter Del Skrevet 19. januar 2008 Kult! Tror jeg skal prøve meg på noen av de oppgavene der! takk for tipset! Lenke til kommentar
Gjest Slettet+1374861 Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 hva skulle den utføre egentlig? *stusset litt på: if (tall % 2) { tall = tall / 2; } else { tall = (3 * tall) + 1; * public boolean erPartall(int tall) { if(tall % 2 == 0) return true; else return false; } Lenke til kommentar
Benbjo Skrevet 19. januar 2008 Forfatter Del Skrevet 19. januar 2008 Skulle ikke utføre noe spesielt egentlig, men det er en algoritme som ikke er motbevist. Alle tall skal til slutt gå opp i en ved bruk av algoritmen, men dette er som sagt ikke bevist fordi det ikke finnes nok PC kraft i verden til å teste alle mulige tall. Lagde et lite program for morroskyld som testet alle tall opp til 200 millioner. Lenke til kommentar
Gjest Slettet+1374861 Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 Skulle ikke utføre noe spesielt egentlig, men det er en algoritme som ikke er motbevist. Alle tall skal til slutt gå opp i en ved bruk av algoritmen, men dette er som sagt ikke bevist fordi det ikke finnes nok PC kraft i verden til å teste alle mulige tall. Lagde et lite program for morroskyld som testet alle tall opp til 200 millioner. Alle tall skal til slutt gå opp i en?? Hvordan da mener du? Og "alle"? Det er vel i utgangspunktet likegyldig hvor sterk maskin du har, antall tall som finnes er jo uendelig. Lenke til kommentar
pgdx Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 Alle tall skal til slutt gå opp i en?? Hvordan da mener du? Collatz conjecture Lenke til kommentar
Hareide Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 Man kan vel bevise ved induksjon at alle partall er delelig med 2, dersom man utfører heltallsdivisjon med 2 og ikke får noen rest, så er tallet et partall. (har ikke tenkt å prøve) 9 / 2 = 4 (9 % 2 = 1) 8 / 2 = 4 (8 % 2 = 0) 7 / 2 = 3 (7 % 2 = 1) 6 / 2 = 3 (6 % 2 = 0) 5 / 2 = 2 (5 % 2 = 1) 4 / 2 = 2 (4 % 2 = 0) 3 / 2 = 1 (3 % 2 = 1) 2 / 2 = 1 (2 % 2 = 0) 1 / 2 = 0 (1 % 2 = 1) 0 / 2 = 0 (0 % 2 = 0) (er ikke helt sikker på om 0 er et heltall, spørs vel hvordan man definerer hva et heltall er) Dersom et tall ikke er et heltall, så er det et oddetall viCtim's kode er en litt mer elegant metode for å sjekke om tallet er et partall eller ikke, tror du roter deg bort å gjør det litt vanskeligere en hva det trenger å være. Skjønner ikke helt hvordan trådstarters kode var tenkt å fungere. public boolean erPartall(int tall) { if(tall % 2 == 0) return true; else return false; } Lenke til kommentar
pgdx Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 Mange svar her nå, kanskje alle skal lese Wikipedia-artikkelen jeg refererte til før de kommer med flere svar. Lenke til kommentar
Vipera Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 Til de som ikke gidder å lese wiki artikkelen så er tingen den at man tror(men ikke bevist) at hvis man utfører disse operasjonene på hvilket som helst tall, så vil man til slutt ende opp med å få tallet 1. Hvis tallet er et partall: Tall = tall / 2 Hvis tallet er et oddetall: Tall = tall*3 + 1 Lenke til kommentar
Hareide Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 Kan ikke si jeg skjønner så mye av wiki artikkelen, men denne tråden hadler om "Skjekke om et tall er partall eller oddetall"? Selv om trådstarters orginale kode kan minne om det som står i wiki artikkelen, så er fortsatt spørsmålet her: "Jeg driver og lager et lite program i java og jeg lurte på hvordan man skjekker om et tall er partall eller oddetall. Greia går ut på at en bruker taster inn et tall og så skal programmet altså sjekke om det er partall eller oddetall..." Mulig jeg har misforstått da Lenke til kommentar
Vipera Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 Spørsmålet hans var hvordan man sjekker om et tall er et partall eller oddetall ja, fordi hvis det er et partall skal koden hans dele det på 2, og hvis det er et oddetall skal han gange det med 3 og plusse på 1. Lenke til kommentar
LostOblivion Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 (endret) Nei Driver bare på for moro, men går INF1010 på UIO. Takk for hjelpen forresten garibaldi Går der selv. boolean isOdd(int n) { return n % 2 != 0; } Skulle gjøre jobben. Endret 20. januar 2008 av LostOblivion Lenke til kommentar
Mr.Garibaldi Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 Nei Driver bare på for moro, men går INF1010 på UIO. Takk for hjelpen forresten garibaldi Bare hyggelig LostOblivion, hvorfor skille det ut i en egen metode? Det vil jo bare gi mer overhead, og siden den løkken kommer til å kjøre mange ganger (forutsatt stort tall) er jo ikke det ønskelig... Lenke til kommentar
Gjest Slettet+1374861 Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 LostOblivion, hvorfor skille det ut i en egen metode? Det vil jo bare gi mer overhead, og siden den løkken kommer til å kjøre mange ganger (forutsatt stort tall) er jo ikke det ønskelig... Gitt at dette er det ENESTE han skal foreta seg med "isOdd" så vil det bli overhead ja, men i god objektorientert stil så vil man helst slippe å gjenta kode så er vel det han har tatt høyde for her, at man skal slippe å måtte bruke den samme kodesnutten i en annen del av koden. Men som sagt, nødvendig i denne sammenhengen er det vel neppe.... Og vil du egentlig få overhead for hvert kall her da? Ser for meg at det kun blir overhead ved første kall, eller tar jeg feil? (Har ikke noe god kunnskap om dette så er vel egentlig bare gjetting) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå