Vinnaren i pepparkakshustävlingen!
2016-02-27, 19:57
  #1
Medlem
Behöver hjälp har fastnat i min uppgift, så har lyder uppgiften:
Fastställ en perfekt temperatur i Celsius (exempelvis 75) för en bastu
Fastställ en godtagbar minimal samt maximal temperatur utifrån ovanstående valdra temperatur och som lagras i två variabler. Detta kan du exempelvis få fram genom att minska och addera 2 till den ”perfekta” temperaturen.
Be användaren skriva in en temperatur i Celsius.
Om talet är mindre än den minsta godtagbara temperaturen ska programmet skriva att det är för kallt och man får skruva upp lite. Därefter får bastubesökaren ställa in ett nytt värde på bastuaggregatet och loopen upprepas.
Om talet är större än den högsta godtagbara temperaturen ska programmet skriva att det är för varmt och man får skruva ner lite. Därefter får bastubesökaren ställa in ett nytt värde på bastuaggregatet och loopen upprepas.
Om talet är större än eller lika med den godtagbara minsta temperaturen och mindre än eller lika med den högsta godtagbara temperaturen ska loopen avbrytas och det ska stå att användaren ställt in temperaturen bra.

och så här ser min kod ut än sålänge:
#
Kod:
static void Main(string[] args)
 {
 //int temp;//temporär ökning av temperaturen
 //int grader = 0;// bastuns tepmeratur
 int temp;
 int grader = 0;
 int min = grader - 2;
 int max = grader + 2;

 Console.WriteLine("Välkommer till programmet lagom bastu värme!");
 Console.WriteLine("tryk på en knapp för att förtsätta...");
 Console.ReadKey();
 Console.WriteLine();
 Console.Write("Skriv in en lämplig temperatur i celsius,");
 Console.Write("för bastun och se om det är en bra temperatur: ");

 float celsius = Convert.ToInt32(Console.ReadLine());
 float fahrenheit = celsiusToFahrenheit(celsius);




 do
 {
 string inmatning = Console.ReadLine();
 temp = int.Parse(inmatning); //omvandling från string till int

 grader = grader + temp;


 if (grader < 50)
 {

 Console.WriteLine("Det är för kallt för att basta, höj värmen mycket!");
 Console.WriteLine();
 }
 else if (grader < 88)
 {
 Console.WriteLine("Det är för kallt för att basta, höj värmen lite!");
 Console.WriteLine();
 }
 else if (grader > 120)
 {
 Console.WriteLine("Det är för varmt för att basta, sänk värmen mycket!");
 Console.WriteLine();
 }
 else if (grader > 92)
 {
 Console.WriteLine("Det är för varmt för att basta, sänk värmen lite!");
 Console.WriteLine();
 }
 else if (grader == 90)
 {
 Console.WriteLine("Nu är det perfekt värme för att basta!");
 Console.WriteLine(celsius + " grader celsius blir " + fahrenheit + " grader fahrenheit ");
 Console.WriteLine();
 }
 else
 {
 Console.WriteLine("Nu är temperaturen lagom i bastun för att basta!");
 Console.WriteLine(celsius + " grader celsius blir " + fahrenheit + " grader fahrenheit ");
 }
 } while (grader < 88 || grader > 92);
 Console.WriteLine("tryck på en knapp för att förtsätta...");
 Console.ReadKey();
 }

 static float celsiusToFahrenheit(float celsius)
 {
 float fahrenheit = ((celsius * 9) / 5) + 32;
 return fahrenheit
Citera
2016-02-27, 20:51
  #2
Moderator
Protons avatar
Citat:
Ursprungligen postat av programmering1
Behöver hjälp har fastnat i min uppgift, så har lyder uppgiften:
Fastställ en perfekt temperatur i Celsius (exempelvis 75) för en bastu
Fastställ en godtagbar minimal samt maximal temperatur utifrån ovanstående valdra temperatur och som lagras i två variabler. Detta kan du exempelvis få fram genom att minska och addera 2 till den ”perfekta” temperaturen.
Be användaren skriva in en temperatur i Celsius.
Om talet är mindre än den minsta godtagbara temperaturen ska programmet skriva att det är för kallt och man får skruva upp lite. Därefter får bastubesökaren ställa in ett nytt värde på bastuaggregatet och loopen upprepas.
Om talet är större än den högsta godtagbara temperaturen ska programmet skriva att det är för varmt och man får skruva ner lite. Därefter får bastubesökaren ställa in ett nytt värde på bastuaggregatet och loopen upprepas.
Om talet är större än eller lika med den godtagbara minsta temperaturen och mindre än eller lika med den högsta godtagbara temperaturen ska loopen avbrytas och det ska stå att användaren ställt in temperaturen bra.

och så här ser min kod ut än sålänge:
#
Kod:
static void Main(string[] args)
 {
 //int temp;//temporär ökning av temperaturen
 //int grader = 0;// bastuns tepmeratur
 int temp;
 int grader = 0;
 int min = grader - 2;
 int max = grader + 2;

 Console.WriteLine("Välkommer till programmet lagom bastu värme!");
 Console.WriteLine("tryk på en knapp för att förtsätta...");
 Console.ReadKey();
 Console.WriteLine();
 Console.Write("Skriv in en lämplig temperatur i celsius,");
 Console.Write("för bastun och se om det är en bra temperatur: ");

 float celsius = Convert.ToInt32(Console.ReadLine());
 float fahrenheit = celsiusToFahrenheit(celsius);




 do
 {
 string inmatning = Console.ReadLine();
 temp = int.Parse(inmatning); //omvandling från string till int

 grader = grader + temp;


 if (grader < 50)
 {

 Console.WriteLine("Det är för kallt för att basta, höj värmen mycket!");
 Console.WriteLine();
 }
 else if (grader < 88)
 {
 Console.WriteLine("Det är för kallt för att basta, höj värmen lite!");
 Console.WriteLine();
 }
 else if (grader > 120)
 {
 Console.WriteLine("Det är för varmt för att basta, sänk värmen mycket!");
 Console.WriteLine();
 }
 else if (grader > 92)
 {
 Console.WriteLine("Det är för varmt för att basta, sänk värmen lite!");
 Console.WriteLine();
 }
 else if (grader == 90)
 {
 Console.WriteLine("Nu är det perfekt värme för att basta!");
 Console.WriteLine(celsius + " grader celsius blir " + fahrenheit + " grader fahrenheit ");
 Console.WriteLine();
 }
 else
 {
 Console.WriteLine("Nu är temperaturen lagom i bastun för att basta!");
 Console.WriteLine(celsius + " grader celsius blir " + fahrenheit + " grader fahrenheit ");
 }
 } while (grader < 88 || grader > 92);
 Console.WriteLine("tryck på en knapp för att förtsätta...");
 Console.ReadKey();
 }

 static float celsiusToFahrenheit(float celsius)
 {
 float fahrenheit = ((celsius * 9) / 5) + 32;
 return fahrenheit
Hur vore det med lite indenteringar till att börja med?

För det andra har min kristallkula pajjat igen precis när jag behöver den som bäst, så om du kunde tala om VAD som är fel vore det väldigt mycket enklare att hjälpa dig....
Citera
2016-02-27, 23:06
  #3
Medlem
1. Du har
Kod:
string inmatning = Console.ReadLine();
temp = int.Parse(inmatning); //omvandling från string till int

i do-while, betyder att du ska mata in önskt temp varje gång.

2. while ska väl kolla om det ligger mellan min/max istället för konstiga tal.
3. Massa hårdkodade tal? Du ska ha if-else if else.
Första if'en kollar om grader är större än max och minska grader. else if ska kolla om mindre och öka grader. Else bara skriva att det är lagom (alt göra det efter while)
Citera
2016-02-28, 17:08
  #4
Medlem
Första felet är att jag måste skriva in första talet två gånger för det ska hända något. Sen när man ökar värmen varje försök så skulle jag vilja att det kom upp hur mycket det är. sen så när den ska omvandla Celsius till Fahrenheit så omvandlar den bara det första talet man skriver in.
Citera
2016-02-28, 17:09
  #5
Medlem
tj.s avatar
Citat:
Ursprungligen postat av programmering1
Första felet är att jag måste skriva in första talet två gånger för det ska hända något. Sen när man ökar värmen varje försök så skulle jag vilja att det kom upp hur mycket det är. sen så när den ska omvandla Celsius till Fahrenheit så omvandlar den bara det första talet man skriver in.
Varför har du då en Console.ReadLine() utanför do while-loopen om det är ett problem?
Citera
2016-02-28, 18:04
  #6
Medlem
Citat:
Ursprungligen postat av tj.
Varför har du då en Console.ReadLine() utanför do while-loopen om det är ett problem?


Vilken tänker du på ?
Citera
2016-02-28, 18:19
  #7
Medlem
tj.s avatar
Citat:
Ursprungligen postat av programmering1
Vilken tänker du på ?
Kod:
float celsius Convert.ToInt32(Console.ReadLine());
float fahrenheit celsiusToFahrenheit(celsius);

do
{
string inmatning Console.ReadLine();
temp int.Parse(inmatning); //omvandling från string till int 
Hur kan du bli förvånad över att användaren måste skriva in temperaturen två gånger när du har kodat det som så att du efterfrågar temperaturen två gånger?
Citera
2016-02-28, 20:40
  #8
Medlem
Citat:
Ursprungligen postat av tj.
Kod:
float celsius Convert.ToInt32(Console.ReadLine());
float fahrenheit celsiusToFahrenheit(celsius);

do
{
string inmatning Console.ReadLine();
temp int.Parse(inmatning); //omvandling från string till int 
Hur kan du bli förvånad över att användaren måste skriva in temperaturen två gånger när du har kodat det som så att du efterfrågar temperaturen två gånger?


Hehe är inte förvånad men är nybörjare på det här och såg inte felet. Men hur ska jag göra för att omvandla den slutliga summan till Fahrenheit?
Citera
2016-02-28, 22:20
  #9
Medlem
tj.s avatar
Citat:
Ursprungligen postat av programmering1
Hehe är inte förvånad men är nybörjare på det här och såg inte felet. Men hur ska jag göra för att omvandla den slutliga summan till Fahrenheit?
Kan du inte bara ta bort
Kod:
string inmatning Console.ReadLine(); 
temp int.Parse(inmatning); //omvandling från string till int 
och ersätta med
Kod:
float celsius Convert.ToInt32(Console.ReadLine()); 
float fahrenheit celsiusToFahrenheit(celsius); 
i din do-while loop?
Citera
2016-02-28, 23:28
  #10
Medlem
Kod:
static void Main(string[] args)
        {
           
            int temp;
            int grader = 0;
            

            Console.WriteLine("Välkommer till programmet lagom bastu värme!");
            Console.WriteLine("tryck på en knapp för att förtsätta...");
            Console.ReadKey();
            Console.WriteLine();
            Console.Write("Skriv in en lämplig temperatur i celsius,");
            Console.Write("för bastun och se om det är en bra temperatur: ");

            do
            {
                //string inmatning = Console.ReadLine();
                //temp = int.Parse(inmatning); //omvandling från string till int

                float celsius = Convert.ToInt32(Console.ReadLine());
                float fahrenheit = celsiusToFahrenheit(celsius);

                grader = grader + temp;


                if (grader < 50)
                {

                    Console.WriteLine("Det är för kallt för att basta, höj värmen mycket!");
                    Console.WriteLine();
                }
                else if (grader < 88)
                {
                    Console.WriteLine("Det är för kallt för att basta, höj värmen lite!");
                    Console.WriteLine();
                }
                else if (grader > 120)
                {
                    Console.WriteLine("Det är för varmt för att basta, sänk värmen mycket!");
                    Console.WriteLine();
                }
                else if (grader > 92)
                {
                    Console.WriteLine("Det är för varmt för att basta, sänk värmen lite!");
                    Console.WriteLine();
                }
                else if (grader == 90)
                {
                    Console.WriteLine("Nu är det perfekt värme för att basta!");
                    //Console.WriteLine(celsius + " grader celsius blir " + fahrenheit + " grader fahrenheit ");
                    Console.WriteLine();
                }
                else
                {
                    Console.WriteLine("Nu är temperaturen lagom i bastun för att basta!");
                    //Console.WriteLine(celsius + " grader celsius blir " + fahrenheit + " grader fahrenheit ");
                }
            } while (grader < 88 || grader > 92);
            Console.WriteLine("tryck på en knapp för att förtsätta...");
            Console.ReadKey();
        }

        static float celsiusToFahrenheit(float celsius)
        {
            float fahrenheit = ((celsius * 9) / 5) + 32;
            return fahrenheit;

        }
    }
}

om jag ändrar så det ser ut såhär då funkar inte den här i koden: (grader = grader + temp
Citera
2016-02-29, 06:21
  #11
Medlem
tj.s avatar
Citat:
Ursprungligen postat av programmering1
Kod:
static void Main(string[] args)
        {
           
            int temp;
            int grader = 0;
            

            Console.WriteLine("Välkommer till programmet lagom bastu värme!");
            Console.WriteLine("tryck på en knapp för att förtsätta...");
            Console.ReadKey();
            Console.WriteLine();
            Console.Write("Skriv in en lämplig temperatur i celsius,");
            Console.Write("för bastun och se om det är en bra temperatur: ");

            do
            {
                //string inmatning = Console.ReadLine();
                //temp = int.Parse(inmatning); //omvandling från string till int

                float celsius = Convert.ToInt32(Console.ReadLine());
                float fahrenheit = celsiusToFahrenheit(celsius);

                grader = grader + temp;


                if (grader < 50)
                {

                    Console.WriteLine("Det är för kallt för att basta, höj värmen mycket!");
                    Console.WriteLine();
                }
                else if (grader < 88)
                {
                    Console.WriteLine("Det är för kallt för att basta, höj värmen lite!");
                    Console.WriteLine();
                }
                else if (grader > 120)
                {
                    Console.WriteLine("Det är för varmt för att basta, sänk värmen mycket!");
                    Console.WriteLine();
                }
                else if (grader > 92)
                {
                    Console.WriteLine("Det är för varmt för att basta, sänk värmen lite!");
                    Console.WriteLine();
                }
                else if (grader == 90)
                {
                    Console.WriteLine("Nu är det perfekt värme för att basta!");
                    //Console.WriteLine(celsius + " grader celsius blir " + fahrenheit + " grader fahrenheit ");
                    Console.WriteLine();
                }
                else
                {
                    Console.WriteLine("Nu är temperaturen lagom i bastun för att basta!");
                    //Console.WriteLine(celsius + " grader celsius blir " + fahrenheit + " grader fahrenheit ");
                }
            } while (grader < 88 || grader > 92);
            Console.WriteLine("tryck på en knapp för att förtsätta...");
            Console.ReadKey();
        }

        static float celsiusToFahrenheit(float celsius)
        {
            float fahrenheit = ((celsius * 9) / 5) + 32;
            return fahrenheit;

        }
    }
}

om jag ändrar så det ser ut såhär då funkar inte den här i koden: (grader = grader + temp
Eftersom du varken tilldelar grader eller temp något värde?
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback