4 svar
99 visningar
I am Me behöver inte mer hjälp
I am Me 720
Postad: 29 okt 2022 00:07

loopar

Uppgift:

Skriv en funktion som heter mySum som tar två parametrar start och stop och som sen beräknar summan av talen från och med start till och med stop. Kontrollera din lösning genom att skriva ett huvudprogram som anropar funktionen för tre olika värden.

Vad händer om start är större än stop? Hantera detta fall antingen genom att låta funktionen returnera NaN eller genom att ändra intervallet till [stop, start] istället. Kontrollera att resultatet blir det du tänkt dig.

lösning: 

function result = mySum( start, stop )
%Calculates the sum of the numbers in the interval [start, stop]

if start < stop
result = sum(start:stop);
else
result = sum(start:-1:stop);
end

end


Min lärare hade sagt att man bör undvika använda loopar i matlab. Här har de använt sig av loop. Är det för att sum() inte kan räkna summan från start till slutet och det behövs en loop för att kunna köra sum() flera gånger tills start=stop?? 

och en till fråga. Hur vet man var i koden man får ha semikolon ?? 

Matsmats 571 – Livehjälpare
Postad: 29 okt 2022 08:28

Var ser du en loop? Loopar snurrar flera gånger, i MATLAB är det for och while. Ser ingetdera här.

Under huven gör MATLAB sedan loopar av detta, men den gör det mycket mer effektivt än om man hade använt t.ex. for i MATLAB. Din MATLAB-kod skall alltså så långt möjligt undvika for och while, men ibland behövs de.

Semikolon har man för att undertrycka utskrift vid tilldelning. Editorn brukar varna om man glömt sådana, den varnar också för onödiga semikolon.

I am Me 720
Postad: 29 okt 2022 09:01

You are back! trots att det är en tidigt lördagsmorgon

Ja du har rätt. Jag trodde även if räknas som en loop. 

I am Me 720
Postad: 29 okt 2022 09:04

Men vad säger sum(start:-1:stop) ? säger den om start är större än stop då ska man minska start med -1 tills man kommer till stop? 

Matsmats 571 – Livehjälpare
Postad: 29 okt 2022 11:23

Testa att skriva 10:-1:1 i kommandofönstret!

Svara
Close