2012-05-05, 01:24
  #1
Medlem
Hej!

Jag sitter och skriver en kod men har hakat upp mig i en for-slinga jag använder:

t=585

for i=(586-t):585;

***KOD***

t=t-c;

end

Konstanten c definieras för varje vända som ett tal från 1-6. Det uppstår dock problem när jag kör programmet och jag funderar på om det kan vara for-slingan som protesterar när dess intervall ändras hela tiden (se i=586-t:585), det kanske helt enkelt inte går att göra så?

Tack för svar!
Citera
2012-05-05, 01:30
  #2
Medlem
Citat:
Ursprungligen postat av OB-
det kanske helt enkelt inte går att göra så?

Det går inte nä...
Citera
2012-05-05, 01:34
  #3
Medlem
Citat:
Ursprungligen postat av OB-
Hej!

Jag sitter och skriver en kod men har hakat upp mig i en for-slinga jag använder:

t=585

for i=(586-t):585;

***KOD***

t=t-c;

end

Konstanten c definieras för varje vända som ett tal från 1-6. Det uppstår dock problem när jag kör programmet och jag funderar på om det kan vara for-slingan som protesterar när dess intervall ändras hela tiden (se i=586-t:585), det kanske helt enkelt inte går att göra så?

Tack för svar!
Tror det blir knas ja, kan du inte Skriva a=(586-t) innan for-loopen och köra for i=a:585 istället?
Eller är problemet bara så enkelt att du skrivit ";" efter 585 i for-loopen? Så vill jag minnas att det ej ska vara!
Citera
2012-05-05, 01:39
  #4
Medlem
Jooncs avatar
Ja det där blir nog lite konstigt. Pröva med while i stället:
[PHP]
t = 585;
i = 0;
while (t - i >= 1) //ekvivalent med while (586 - t + i <= 585)
//kod
i++;
t = t - c;
end
[/PHP]
Citera
2012-05-05, 01:42
  #5
Medlem
Mr Mojo Risin's avatar
Nej det funkar inte som du märkt. Om du inte vet hur många iterationer det blir, kan det vara bra att använda en while-sats istället. Eftersom du omdefinierar hur står slingan skall vara hela tiden (och slingan i sig gör detta), blir det knas.

Jag gissar att du vill gå igenom loopen *en* gång. Om det är så, kan du lösa det i stil med:

Kod:
t = 585
while t > 0
   DINKOD
   t = t - c
end

Det gör att slingan körs en gång, med intervallen 'c'. Var du egentligen ute efter något annat får du gärna förtydliga. I ditt fall går den liksom inte igenom loopen, eftersom den ser annorlunda ut varje iteration.
Citera
2012-05-05, 01:47
  #6
Medlem
Tack så mycket för vägledningen, får bygga en while-slinga istället då.
Citera
2012-05-05, 08:30
  #7
Medlem
stevie1971s avatar
Citat:
Ursprungligen postat av OB-
Hej!

Jag sitter och skriver en kod men har hakat upp mig i en for-slinga jag använder:

t=585

for i=(586-t):585;

***KOD***

t=t-c;

end

Konstanten c definieras för varje vända som ett tal från 1-6. Det uppstår dock problem när jag kör programmet och jag funderar på om det kan vara for-slingan som protesterar när dess intervall ändras hela tiden (se i=586-t:585), det kanske helt enkelt inte går att göra så?

Tack för svar!

Det är inget fel i din kod, vad jag kan se. Däremot är jag inte säker på att den gör det du önskar.
Din kod motsvarar:

t=585

for i=1:585

***KOD***

t=t-c;

end

for-satsen kommer alltså inte ta hänsyn till att du omdefinierar t innan för loopen, eftersom loopen redan är startad. Du får nog se närmare på "***KOD***".
Citera
2012-05-05, 13:52
  #8
Medlem
adequates avatar
FMT -> Naturvetenskapliga uppgifter

/Mod
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in