Programmering

Looping

05. august 2016 af Searchmath

Hej

Hvordan ville I forstå det her? 


Svar #1
05. august 2016 af Searchmath

Jeg prøver nemlig at løse følgende opgave: 


Brugbart svar (1)

Svar #2
05. august 2016 af peter lind

sum = 1/1 + 1/2 + 1/3 +   1/4


Brugbart svar (1)

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;


Brugbart svar (1)

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.


Brugbart svar (1)

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. 


Brugbart svar (1)

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? 


Brugbart svar (0)

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.


Brugbart svar (0)

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.