Gå til innhold

Hvordan får man et program til å skrive ut oddetall, ved å bruke for-løkke?


Anbefalte innlegg

Skrevet

Som tittelen sier så finner jeg ikke ut hvordan man får et program til å skrive ut oddetall, ved hjelp av en for-løkke.

:roll:

Er det noen som kan gi meg noen tips så jeg kommer i gang?

Ganske ny på dette å det går ganske tregt ennå, har googlet i en time nå uten å finne ut noe :hrm:

Nettopp begynt med for-løkker så jeg er ganske blank på det.

Skal få det til å skrive ut oddetallene mellom 3-21.

Videoannonse
Annonse
Skrevet (endret)

Bruk rest operatoren! (modulo, %)

 

for (int i = 3; i <= 21; ++i) {
if ( i % 2 == 0) continue; // Ikke oddetall
System.out.println( i );
}

 

Den der burde fungere. :)

Endret av RavnTM
Skrevet (endret)

Når du spør om hjelp må du også spørre om en forklaring på hvorfor nettopp DET fungerer. Hadde du klart samme oppgave på en eksamen med en litt annen vri? Videre hvis det er noe som er uklart nå, ja. Det fungerer sikkert... Så spør hvis du lurer. Det er nok av dyktige folk her ;)

 

Jeg får et lite inntrykk av at alle høyskoler og universiteter bruker Java for å lære folk programmering, det er vel kanskje en av grunnene til at mange kan det. :wee:

Endret av data_jepp
Skrevet

Jeg rotet bare med hvordan jeg skulle få programmet til å forstå når det var oddetall, tenkte ikke så langt som å sjekke etter rest. Går treigt noen ganger.

Så forstår hvorfor det fungerer. :D

Skrevet (endret)

kan selvfølgelig bruke modulo-operatoren, men man må ikke. Jeg ville gjort det slik:

	for (int i = 3; i <= 21; i = i+2) 
  {
		 System.out.println(i);
  }

Endret av Mjausann
Skrevet (endret)
for (int i = 3; i <= 21; System.out.println(i), i = i+2);

for (int i = 1; i <= 19; System.out.println(i+=2));

 

Hehe, måtte bare gjøre det :D

 

Du kan også finne oddetall ved å bruke & operatoren.

for(int i=3;i<=21;i++)
if((i&1)==1) System.out.println(i);

Endret av sygard
Skrevet (endret)

Nei, det går nok ikke an å gjøre det på færre enn 43 tegn (uten å ta med main-kroppen) dersom man skal ha tallene adskilt.

for(int i=1;i<20;System.out.println(i+=2));

 

Edit: Hele klassen blir på 88 tegn.

class O{public static void main(String[]a){for(int i=1;i<20;System.out.println(i+=2));}}

Endret av pgdx
Skrevet (endret)

In python:

[2*x+1 for x in range(11)]

 

(list comprehension ftw)

 

edit: gjør samme nytten:

range(3,22,2)

Endret av pgdx
Skrevet (endret)

Common Lisp:

(loop for i from 3 upto 21 by 2 collect i)

eller for faktisk å printe tallene:

(loop for i from 3 upto 21 by 2 do (print i))

Endret av P@rm@nn

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...