Do while loop (amerikanen i bastun)
Hej! Jag har fastnat på den kända amerikanen i bastun i programmering 1, men jag hittade ingen tråd som tog upp samma problem som jag har tyvärr.
Jag gjorde uppgiften först på E nivå utan problem(då använde jag endast int ej double i uträkningarna/koden). Men när jag skulle lägga till att konvertera från Int till double i min metod blev det problem i min do while loop som funkade innan. För att kolla så att min metod funkade och att konverteringen blev rätt skrev jag in en tillfällig Console.WriteLine(grader); i koden och den skriver ut rätt temperatur i Celsius.
Men do while loopen skriver inte längre ut rätt svar i konsolfönstret. Skriver jag tex in 167 F så är det 75 grader celcius. Men den skriver då inte ut svaret att temperaturen är ”perfekt” i bastun. Utan den skriver att det är för varmt i bastun. Hoppas att någon kanske kan se vart jag har gjort fel!
(Jag hoppas också att koden hamnar rätt i inlägget den här gången (sådär fint utskjuten till höger), om inte så skulle jag gärna vilja veta hur man gör det till nästa gång!) Tusen tack på förhand!
namespace Bastun
{
class Program
{
public static double FahrToCels(int fahr) //metod för att räkna ut Fahrenheit till Celcius
{
double cels; //skapar en double med namnet cels (celsius)
double fahrdouble = Convert.ToDouble(fahr); //konvertera int(fahr) till double
cels = ((fahrdouble - 32) * 5) / 9; //räknar om värdet på cel från Fahrenheit till Celcius
return cels; //metoden returnerar datan
}
static void Main(string[] args)
{
Console.WriteLine("Please enter the desired degrees in the sauna: "); //frågar användaren efter önskade grader
int fahr = int.Parse(Console.ReadLine()); //användaren skriven in sitt svar och det görs till en int på en gång
int grader = (int)FahrToCels(fahr); //använder metoden jag skapade för att räkna ut celcius från användarens svar
Console.WriteLine(grader);
do //skapar en do while loop
{
if (grader < 73)
{
Console.WriteLine("It's too cold in the sauna, please raise the temperature. Enter new desired degrees: ");
fahr = int.Parse(Console.ReadLine());
grader = (int)FahrToCels(fahr);
}
else
{
Console.WriteLine("It's too hot in the sauna, please lower the temperature. Enter new desired degrees: ");
fahr = int.Parse(Console.ReadLine());
grader = (int)FahrToCels(fahr);
}
}
while (grader < 73 || grader > 77); //avslutar do while loop
if (grader == 75)
{
Console.WriteLine("The temperature in the sauna is perfect!");
}
else //gäller om temperaturen är från 73 till 77 grader, men inte 75.
{
Console.WriteLine("The temperature in the sauna is acceptable.");
}
}
}
}