4 svar
357 visningar
Ace.Canon behöver inte mer hjälp
Ace.Canon 7
Postad: 12 jan 2023 17:43

Överlagrade metoder

Hej jag läser Programmering 1 på distans och behöver lite hjälp med 'Överlagrade metoder'.

Uppgiften är den klassiska "Amerikanen i bastun" som jag har sett en hel del trådar om, men hittar inte det jag söker. För betyg 'A' så ska vi använda oss av överlagrade metoder. Jag har skrivit båda metoderna men jag vet inte riktigt hur jag ska göra för att värdet i den ena metoden ska returnera värdet till den ursprungliga metoden, själva texten lyder:
Den nya metoden (som ej har något argument) ska slumpa fram ett tal och därefter i sin tur returnera värdet till den ursprungliga metoden (med argument) för omvandling mellan Fahrenheit och Celsius.

Min kod ser ut såhär(för metoderna plus anropet):

Tack på förhand

static double FahrenheitToCelcius(double fahr) //skapa en metod för konvertering till Celcius, omvandla till decimaltal med float//
        {
            double celc = (fahr - 32) * 5 / 9;
            return celc;
        }

//Hur ska jag göra för att få den här metoden att returnera det slumpade värdet till den andra??(den över)//
            static double FahrenheitToCelcius()
            { 
                Random random = new Random();
                double slump = random.Next(177, 195);
                return slump;
            }
        
        static void Main(string[] args)
        {
            //skapa en try-catch för att fånga upp felaktig inmatning, skapa en loop ifall felaktig inmatning//
            Console.WriteLine("Ställ in aggrigatet till önskad temperatur: ");
            while (true)
            {
                try
                { 
                    int fahr = int.Parse(Console.ReadLine());
//här vill jag anropa den andra metoden, den slumpade metoden//
                    if (fahr == 0)
                    { 
                      Console.WriteLine("Du valde att sätta aggrigatet på 0 ... låt mig hjälpa dig. ");
                        Console.WriteLine("Jag sätter temperaturen på " + FahrenheitToCelcius() + " grader.");
                    }
Doff 61
Postad: 12 jan 2023 18:04

Överlagrade funktioner är funktioner som heter samma sak men som tar olika argument.

double temperatur översätt(F ftemperatur) 

double översätt(c ctemperatur)

Båda tar emot ett objekt av typen "temperatur" som du måste skapa själv.

anders_k 237
Postad: 12 jan 2023 20:02 Redigerad: 12 jan 2023 20:03

Det verkar vara ett konstigt namnval "FahrenheitToCelsius" om den skall slumpa fram ett fahrenheit värde.

För att använda överlagrade metoder hade det kanske varit bättre om du skapa två klasser Fahrenheit och Celsius, sen gör två funktioner som antingen tar ett Fahrenheit värde eller Celsius värde

Fahrenheit ConvertTemperature(Celsius c);

Celsius ConvertTemperature(Fahrenheit f);

I klassen Fahrenheit kan du sedan lämpligen ha en metod som slumpar fram ett F värde

Ace.Canon 7
Postad: 14 jan 2023 13:45 Redigerad: 14 jan 2023 14:08
anders_k skrev:

Det verkar vara ett konstigt namnval "FahrenheitToCelsius" om den skall slumpa fram ett fahrenheit värde.

För att använda överlagrade metoder hade det kanske varit bättre om du skapa två klasser Fahrenheit och Celsius, sen gör två funktioner som antingen tar ett Fahrenheit värde eller Celsius värde

Fahrenheit ConvertTemperature(Celsius c);

Celsius ConvertTemperature(Fahrenheit f);

I klassen Fahrenheit kan du sedan lämpligen ha en metod som slumpar fram ett F värde

Okej, jag ska skriva om koden lite. Men vad menar han när han vill att jag ska 'Returnera värdet' till den ursprungliga metoden? Jag förstår det som att han vill att den nya metoden ska returnera in värdet in i den första metoden och ska sen anropa den första metoden i Main.

Hjärnan har helt låst sig här.

Laguna Online 30707
Postad: 14 jan 2023 14:18

Själva uppgiften är ganska bisarr, så man behöver inte känna sig dum om man inte förstår vad de är ute efter.

Svara
Close