angeland89 Skrevet 11. august 2011 Del Skrevet 11. august 2011 (endret) hei jeg har et problem med oppg 1 (ja litt flaut) oppgaven er som følger If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000. men det virker som jeg trenger litt forklaring hvorfor kjører koden min ut 266333 som ikke er svaret int b, los; int ansv=0; for (b = 0; b <= 1000; b++) { los = b * 3; if (los < 1000) { Console.WriteLine(los); ansv = ansv + los; } else break; los = b * 5; if (los < 1000) { Console.WriteLine(los); ansv = ansv + los; } } Console.WriteLine("-----------------------------------"); Console.WriteLine(ansv); Console.ReadKey(); Løsning double b, los; double ansv=0; double tall=0.9876; for (b = 0; b <= 1000; b++) { los = b * 3; if (los < 1000) { tall = b/5; if ((int)tall == tall) { } else { Console.WriteLine(los); ansv = ansv + los; } } else break; los = b * 5; if (los < 1000) { Console.WriteLine(los); ansv = ansv + los; } } Console.WriteLine("-----------------------------------"); Console.WriteLine(ansv); Console.ReadKey(); Endret 12. august 2011 av angeland89 Lenke til kommentar
GeirGrusom Skrevet 12. august 2011 Del Skrevet 12. august 2011 (endret) var sum = Enumerable.Range(0, 1000).Where(item => item % 3 == 0 || item % 5 == 0).Sum(); Endret 12. august 2011 av GeirGrusom 1 Lenke til kommentar
angeland89 Skrevet 12. august 2011 Forfatter Del Skrevet 12. august 2011 var sum = Enumerable.Range(0, 1000).Where(item => item % 3 == 0 || item % 5 == 0).Sum(); Nei nei det var alt for pent Lenke til kommentar
GeirGrusom Skrevet 12. august 2011 Del Skrevet 12. august 2011 Hehe. Ser du går i noen feller i koden din. Blant annet er int / int = int. Så å caste til int vil ikke ha noen effekt (det er allerede int). Det ser ut til at du antok at resultatet var et flyttall, som ville vært korrekt dersom du delte på 3.0 eller 3f (førstnevnte er double, sistnevnte er float). % operatøren er modulo, som gir rest etter en deleoperasjon. Så 5 % 2 = 1 (fordi 5 / 2 er 2 med 1 i rest). Lenke til kommentar
angeland89 Skrevet 12. august 2011 Forfatter Del Skrevet 12. august 2011 (endret) Hehe. Ser du går i noen feller i koden din. Blant annet er int / int = int. Så å caste til int vil ikke ha noen effekt (det er allerede int). Det ser ut til at du antok at resultatet var et flyttall, som ville vært korrekt dersom du delte på 3.0 eller 3f (førstnevnte er double, sistnevnte er float). % operatøren er modulo, som gir rest etter en deleoperasjon. Så 5 % 2 = 1 (fordi 5 / 2 er 2 med 1 i rest). ja hehe løste den int int feilen ved å kjøre alt i double, glemte å skrive det på løsn men modulo har jeg ikke brukt, viste ikke om den en gang, fiffig liten sak. dette ble løsningen double b, los; double ansv=0; double tall=0; for (b = 0; b <= 1000; b++) { los = b * 3; if (los < 1000) { tall = b/5; if ((int)tall == tall) { } else { Console.WriteLine(los); ansv = ansv + los; } } else break; los = b * 5; if (los < 1000) { Console.WriteLine(los); ansv = ansv + los; } } Console.WriteLine("-----------------------------------"); Console.WriteLine(ansv); Console.ReadKey(); Endret 12. august 2011 av angeland89 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å