Vinnaren i pepparkakshustävlingen!
2015-04-24, 11:32
  #1
Medlem
Vad skrivs ut enligt följande algoritm?

1. Initiera X till 5
2. Sätt Y till 1 och upprepa följande så länge Y<=X,
2.1. Skriv ut (X – Y) antal mellanslag
2.2. Skriv ut värdena Y, Y-1, ..., 1
2.3. Skriv ut 2,3 upp t.o.m. värdet på aktuell Y
2.4. Skriv ut en radbrytning.
2.5. Uppdatera Y med 1


Blir tokig...fastnar den inte på 2.2?
Citera
2015-04-24, 12:04
  #2
Medlem
ojns avatar
Nu har ju detta inte specifikt med Java att göra, så helt fel forum, men..
Citat:
Ursprungligen postat av welliewell
Blir tokig...fastnar den inte på 2.2?
Varför tror du det? Går Y helt plötsligt från 1 till 6 någonstans mellan 2.1 och 2.2?
Citera
2015-04-24, 12:44
  #3
Medlem
Skriv det i java och kör det i din dator, så får du svaret!
Citera
2015-04-24, 13:52
  #4
Moderator
Protons avatar
Java --> Övriga utvecklingsfrågor
/Moderator
Citera
2015-04-24, 14:46
  #5
Medlem
Citat:
Ursprungligen postat av ojn

Varför tror du det? Går Y helt plötsligt från 1 till 6 någonstans mellan 2.1 och 2.2?

Y = 1.

Alltså blir utskriften vid 2.2: 1, 0, -1, -2, -3...

Den fortsätter tills den når 1, vilket aldrig händer. Alltså fastnar den.

Vad har jag missat?
Citera
2015-04-24, 15:08
  #6
Medlem
Citat:
Ursprungligen postat av welliewell
Vad skrivs ut enligt följande algoritm?

1. Initiera X till 5
2. Sätt Y till 1 och upprepa följande så länge Y<=X,
2.1. Skriv ut (X – Y) antal mellanslag
2.2. Skriv ut värdena Y, Y-1, ..., 1
2.3. Skriv ut 2,3 upp t.o.m. värdet på aktuell Y
2.4. Skriv ut en radbrytning.
2.5. Uppdatera Y med 1


Blir tokig...fastnar den inte på 2.2?

Fixade svenska tecken.
Citera
2015-04-24, 17:12
  #7
Medlem
Förutom uppdateringen (som jag antar betyder ökning) av Y med 1, finns det bara "skriv ut"-rader i loopen, som inte ändrar några variabler. Så loopen fastnar inte, utan körs fem gånger.

Men raden "Skriv ut 2,3 upp t.o.m. värdet på aktuell Y" vet jag inte hur man ska tolka. Menas det talet 2,3 (2.3 på engelska) eller talen 2 och 3, hur stora steg ska man ta och ska man alltid skriva ut åtminstone 2,3 även om Y är mindre? Har du missat ett mellanslag i texten, och det står egentligen "2, 3"?
Citera
2015-04-26, 10:54
  #8
Medlem
Citat:
Ursprungligen postat av welliewell
Y = 1.

Alltså blir utskriften vid 2.2: 1, 0, -1, -2, -3...

Den fortsätter tills den når 1, vilket aldrig händer. Alltså fastnar den.

Vad har jag missat?

Om Y = 1 så har väl den nått 1 på redan första och där med bara skriver ut 1?

Sedan om Y = 2 så skriver den ju ut 2, 1, Y=3 så skriver den ut 3, 2, 1 och så fortsätter det.

Bara för att de skrivit Y, Y-1, ..., 1 så behöver den ju inte gå från just Y, Y-1, Y-2, Y-3 osv.. utan det är ju ett mönster för att visa att loopen ska börja på Y och minskas med 1 tills den kommer till 1 och då stanna. Och om Y = 1 så kommer den bara köra en gång i och med att nästa gång är 0 < 1 och då ska loopen stoppas.

Så tolkar jag detta i alla fall.
Och vid en första anblick på koden skulle jag säga att den kommer skriva ut en pyramid av siffror där toppen endast är en enda 1:a och botten är en rad av 5, 4, 3, 2, 1, 2, 3, 4, 5.

(Med detta har jag antagit att 2.3 betyder att man ska skriva ut 2,3 upp till värdet på y och om y är mindre än 2 så kommer inget skrivas ut på det steget men har som sagt bara snabbt kollat på instruktionerna och inte testat göra ett program själv för att bekräfta min teori)

Tipset är ju att bara skriva ett program och se vad som händer
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback