1 svar
165 visningar
kapk 4
Postad: 3 dec 2023 23:10

Metodöverlagring, bastuklubben

Hej!
Lyckas inte få rätsida på metodöverlagringen. Har kikat runt på nätet och i läroboken men blir inte klokare.  Hoppas någon vänlig själ där ute kan hjälpa mig att förstå.
Övriga kommentarer tas också emot med tacksamhet.
(Ska snygga till den lite innan jag lämnar in.)

Beskrivning av uppgiften:
Den allra svåraste utmaningen (för betygskriterier motsvarande A) innebär att ni ska arbeta med ytterligare en metod och som ska fungera som en överlagrad metod (eng: "overloaded methods"). Om användaren skriver in 0(noll) istället för ett värde så ska den nya metoden användas istället och på ett lämpligt sätt. 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.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace uppdrag4._2
{
    //Class for converting temperature
    public class tempconv
    {
        //Method if user types "0"
        public static double FahrToCels(0 == fahrenheit)
        {
            Random random = new Random();
            int slump = random.Next(177, 195);
            double celsius = FahrToCels((int)slump);
            return slump;
        }

        //Method for converting temperature
        public static double FahrToCels(int fahr)
        {
            double cel = (fahr - 32) * 5.0 / 9.0;
            return cel;
        }
    }
    internal class Program
    { 
        //Mainmethod, program start
        static void Main(string[] args)
        {
           
            int fahrenheit = 0;
            while (true)
            {
                //To make sure correct input from user
                try
                {
                    Console.Clear();
                    Console.WriteLine("Skriv in Fahrenheit: ");
                    fahrenheit = Convert.ToInt32(Console.ReadLine());
                   
              
                }
                //If users input is incorrect
                catch
                {
                    Console.Clear();
                    Console.WriteLine("Invalid input, write a number\n");
                    Console.WriteLine("Press Enter and try again");
                    Console.ReadKey();
 
                }
                //Calls convert method
                double celsius = tempconv.FahrToCels((int)fahrenheit);
               
          
                //If temperature is to low
                if (celsius < 82)
                {
                    Console.WriteLine(celsius);
                    Console.WriteLine("This is tho cold");
                    Console.ReadKey();
                }
                //If temperature is to high
                else if (celsius > 87)
                {
                    Console.WriteLine(celsius);
                    Console.WriteLine("This is to hot");
                    Console.ReadKey();
                }
                //When temperature is within the correct span, ends program
                else
                {
                    Console.WriteLine("The temperature is perfect! Enjoy!\n");
                    Console.WriteLine("Press Enter to quit");
                    Console.ReadKey();
                    break;
                }
            }
        }
    }

}
anders_k 237
Postad: 4 dec 2023 06:06

Så vad de menar är att du skall ha två funktioner som har liknande signatur, en som tar ett argument, och en som inte tar ett argument.

static int FahrenheitToCelsius(int fahrenheit){  ... }
static int FahrenheitToCelsius() {....}

Så när någon skriver in 0 så skall du ropa den andra funktionen ovan för att få ett slumpmässig temperatur.

A litet tip är göra om temperaturer till klasser istället

class Celsius
{
  Celsius(Fahrenheit f) { ... }
  Celsius() { ... }
  string ToString() { ... }
}

class Fahrenheit
{
  Fahrenheit(Celsius c) { ... }
  Fahrenheit() { ... }
  string ToString() { ... }
}

// då kan du gömma innehållet bättre från huvudprogrammet

var c = new Celsius;  // ger ett slumpmässig värde
var f = new Fahrenheit(c); // konverterar celsius till fahrenheit
Svara
Close