6 svar
501 visningar
OsantOsmart är nöjd med hjälpen
OsantOsmart 16
Postad: 5 aug 2021 04:22

Metod/Metod-överlagring med slumpat tal

Tjena!

 

Sitter med en uppgift i Programmering 1, läser den på distans och det är svårt att lösa vissa uppgifter man kör fast på utan att ha en närvarande lärare att prata med.

 

Själva uppgiften verkar vara rätt vanlig här, det handlar om ett bastuaggregat där vi ska konvertera fahrenheit till celsius med hjälp av en metod. För att krångla till det extra mycket så ska våran inmatning av fahrenheit vara en integer som ska typomvandlas till ett flyttal, omvandlas till celsius för att sedan printas ut utan decimaler.

 

Allt detta har jag redan kodat, men jag har nu i uppgift att slumpa fram ett tal i fahrenheit (om man matar in 0 i aggregatet) som ska omvandlas till celsius fast det måste ske genom metod-överlagring. Det är här jag kört fast, jag förstår inte riktigt vad uppgiften menar, har försökt läsa på om metod-överlagring och tycker jag förstår det hyfsat väl men förstår inte vad som menas i detta fallet som sagt.

 

Så här står det i uppgiften:

"Amerikanen ska alltså kunna välja att skriva in noll (0) istället för ett värde. Då ska en värde i Fahrenheit
slumpsa fram och därefter omvandlas till Celsius precis som om amerikanen valt att skriva in det själv. Då kan
man anropa en metod för omvandling av Fahrenheit till Celsius utan argument (eftersom det inte finns något
inskrivet tal) som först slumpar värdet och sedan omvandlar det.
Den överlagrade metoden behöver ni inte hantera i aktivitetsdiagrammet."

 

Min metod för omvandlingen F till C ser ut så här:

static double FahrToCels(int fahr)
{
	double fahrDouble = (double)fahr;
	fahrDouble = (fahrDouble - 32) * 5 / 9;
	return fahrDouble;
}

Min kod för att slumpa ser ut så här för tillfället:

if (fahr == 0)
{
	Random randomerare = new Random();
	int slump_tal = randomerare.Next(163, 172);
}

Nån som förstår vad uppgiften menar och kan hjälpa mig i rätt riktning?

Laguna Online 28443
Postad: 5 aug 2021 07:43

Jag tror att de menar att du ska göra en ytterligare version av metoden FahrToCels, som har den här signaturen:

static double FahrToCels()

(eller ska det stå void? jag minns inte)

Detta verkar heta överlagring på svenska. Det verkar vara rätt använt, när jag slår upp det. Jag har nog alltid bara sett det engelska ordet overloading förut.

OsantOsmart 16
Postad: 5 aug 2021 10:46

Det stämmer överens om vad jag läst om metod-överlagring, jag är fortfarande lost vad det är som ska stå inuti den metoden dock.

Laguna Online 28443
Postad: 5 aug 2021 11:26

Den ska slumpa fram ett värde och sedan konvertera det från Fahrenheit till Celsius. Så när fahr == 0 ska du anropa den här metoden i stället för att göra uträkningen på plats.

(Jag tycker det är lite underlig logik, men det är väl bäst att följa instruktionerna.)

Fermatrix 7841 – Fd. Medlem
Postad: 5 aug 2021 11:54

Metoden du skapat tar emot ett argument, det du skall göra är att skapa en identiskt metod med samma namn fast denna gången tar den inte emot något argument och skall göra det texten efterfrågar. 

För övrigt kan den returnera double eller vara en void men den underlättar nog om du returnerar double.

Sedan kan du optimera din funktion, du behöver inte en lokal variabel som du sedan returnerar utan du kan returnera omvandlingen direkt.

Låt säga att du har en funktion som returnerar x^2, du tar emot x som argument och returnerar x*x istället för att skapa en lokal variabel oxh sedan sätta den som x*x och sedan returnera den variabeln.

OsantOsmart 16
Postad: 5 aug 2021 14:28

Jag fixade så att metoden returnerar resultatet direkt istället för att returnera den lokala variabeln, tack för tipset.

Angående metod-överlagringen så förstår jag fortfarande inte riktigt, jag håller på och googlar och läser på om det medan jag läser era kommentarer men hamnar ofta på sidor med komplicerad kod som jag inte förstår (det är fortfarande rätt tidigt i Programmering 1 som vi fått denna uppgiften). Hade gärna sett lite kod som förklarar vad det är som eftersöks här, har lite svårt att hänga med programmerings-lingot.

 

Tack för era svar.

Laguna Online 28443
Postad: 5 aug 2021 14:52

Hur ser din kod ut nu?

Svara Avbryt
Close