Programmering
Looping
Hej
Hvordan ville I forstå det her?
Svar #1
05. august 2016 af Searchmath
Jeg prøver nemlig at løse følgende opgave:
Svar #3
05. august 2016 af Eksperimentalfysikeren
Du har ikke skrevet, hvilket sprog, du bruger. Jeg antager, at "disp" viser værdien af parameteren.
Jeg vilså forvente, at udskriften bliver noget i retning af: 1,00 1,50 1,83 2,08 2,28 2,45 2,59 2,72 2,83 2,93 3,01. Her stopper udskriften, fordi summen er blevet større end 3.
Svar #4
05. august 2016 af Searchmath
Tak :)
jeg har løst den på følgende måde:
Hvordan laver man her en 'break' så man kun får hhv. 20 og 20.16 ? Jeg får nemlig 20.20 og 20.36 med selvom jeg begrænser loopen 20>=x && x2<=20.16;
Svar #5
06. august 2016 af Keal (Slettet)
#4
Dit problem er at du incrementer før du displayer output. Du skal først incremente x og x2 og så derefter benytte fprintf. Alternativt kan du justere startværdierne for x og x2.
Der er dog flere problemer med din løsning, som jeg lige kan se det. Du tager ikke højde for, at der kun er 60 minutter på en time. Derfor printer du ud tidpunkter som 18.60 og 18.80, som egentlig betyder hhv. 19.00 og 19.20. Bemærk også at ifølge opgaven skal det andet tidspunkt printes i formattet HH:MM og ikke HH.MM.
Alt dette kan sagtens lade sig gøre ved at bruge numeriske værdier for x og x2 som du gør. Jeg vil dog anbefale at du overvejer at bruge MATLABs indbyggede date type, da jeg tror det vil gøre opgaven en del lettere.
Svar #6
06. august 2016 af Keal (Slettet)
Rettelse til anden sætning i #5. Der skal naturligvis stå:
Du skal først printe x og x2 og så derefter incremente.
Svar #7
08. august 2016 af Searchmath
#5: Kan du hvis hvad du mener? Jeg forstår det ikke helt :/ også det med at anvende MATLABs indbyggede data.
Svar #8
08. august 2016 af Keal (Slettet)
MATLAB har en række funktioner der gør det let at arbejde med datoer og tidspunkter. Specielt relevant er funktionerne
- datenum der omdanner en dato til en numerisk værdi der unikt repræsenterer den dato.
- datestr der omdanner en numerisk værdi til en string i standard dato format.
- addtodate der kan modificere en dato.
Prøv f.eks. at køre nedstående kode
t = datenum('08-aug-16', 'dd-mmm-yy');
datestr(t)
u = addtodate(t, 2, 'day');
datestr(u)
Med disse 3 funktioner kan opgaven løses på følgende måde
t = datenum('13:00', 'HH:MM');
while t < datenum('20:00', 'HH:MM')
disp(['The S-train from Nørreport ',datestr(t,'HH.MM'),...
' arrives in Lyngby at ',datestr(addtodate(t, 16, 'min'),'HH:MM')]);
t = addtodate(t, 20, 'min');
end
Svar #9
08. august 2016 af Searchmath
wooow, fedt!
Så når man skriver 'HH:MM', 'day', 'min' så forstår den det bare? Så jeg skal være opmærksom på ikke at stave forkert her, eller angiver du bare det er string på den måde?
Svar #10
08. august 2016 af Keal (Slettet)
Funktionen addtodate godtager følgende strings som tredje argument: 'year', 'month', 'day', 'hour', 'minute', 'second', eller 'millisecond'. Man må dog også gerne forkorte disse betegnelser, så f.eks. i stedet for 'year' kan du skrive 'y', 'ye' eller 'yea'. Du må dog naturligvis ikke skrive 'm' for 'minute' da dette også kunne betyde 'month' eller 'millisecond'. Du kan læse mere om de forskellige funktioner og deres argumenter på mathworks.com
Med hensyn til 'HH:MM' så angiver dette et datoformat. Se følgende link http://se.mathworks.com/help/matlab/ref/datestr.html. Nederst er der angivet en tabel med de forskellige datoformatter som MATLAB genkender.
Svar #11
08. august 2016 af Eksperimentalfysikeren
Pas på!
Trådstarter: Hvad er baggrunden for opgaven? Er det en øvelse i programmering i et bestemt sprog? Hvis det er det, hjælper det ikke noget med MatLab.
Den måde, du har startet tråden på tyder på, at du er ved at lære brugen af et bestemt programmeringssprog. Hvis det er tilfældet, hvilket sprog er det så?
Skriv et svar til: Looping
Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk?
Klik her for at oprette en bruger.