5 svar
146 visningar
matematikergbg 69 – Fd. Medlem
Postad: 10 dec 2020 18:06

WHILE STATEMENT funkar inte för mig!

Hej, jag vill att man ks uppge ågot temperatur mellan 73-77 som alternativ till det godtagligaför en bastu, men allt som jag trycker på vid när programmet körs så säger den att det är för lågt temperatur även om det är inte det ? Vad gick fel? 

 Sedan vill jag att om de uppger 0 så ska de ske en slumpmässight temperatur mellan 73-77 Fahrenheit då, hur jag går jag tillväga med det ? 




		public static int FahrToCels(int fahr)
		{
			 int celsius =(fahr - 32)*5/9;
			return celsius;
		}
		
		public static void Main(string[] args)
		
		
		{
		Console.WriteLine(" Uppge Fahrenheit ni vill: ");
			int fahrenheit=int.Parse(Console.ReadLine());
			int celsius=FahrToCels(fahrenheit);
			
			do
			{
			
			if (celsius==77 | celsius==76 | celsius==75 | celsius==74 | celsius==73)
			{
		    	Console.WriteLine("Bra val och njut av värmen kära gäst");
		    	Console.ReadKey(true);
			}
			else if (celsius>77)
			{
				Console.WriteLine("Oops, för hög temperatur, vänligen välj ett lägre temperatur");
				Console.ReadKey(true);
			
			}
			
			 }
			else if (celsius<73)
			{
				Console.WriteLine("För låg temperatur, vänligen välj ett högre temperatur");
				Console.ReadKey(true);   
		}
		   while (celsius<77 || celsius>73);
		}
		
		
		}
	}
Laguna Online 30472
Postad: 10 dec 2020 20:22

Jag kan inte C#, men är du säker på att | är rätt operator för "eller"? I andra språk är det bit-vis eller, medan logisk "eller" är ||. 

Lindehaven 820 – Lärare
Postad: 10 dec 2020 22:38

| är bitvis eller.

Laguna Online 30472
Postad: 11 dec 2020 13:27

Om man flyttar ner den klausulen så att celsius>77 och celsius<73 testas först så räcker det med en enkel "else", så behöver man inte skriva den långa raden av jämförelser.

Tegelhus 225
Postad: 12 dec 2020 14:49

Det ser ut som om din while-sats har hamnat i fel block. Ett tips är att kolla upp hur man indenterar korrekt - felet hade varit uppenbart med en korrekt indentering, men blir väldigt svårt att se när indragningen är lite hursomhelst.

Bedinsis 2894
Postad: 14 dec 2020 15:33

Förutom det som övriga här redan har poängterat så innebär det faktum att FahrToCels-funktionen endast arbetar med int att avrundningsfel kan uppkomma. Ponera att temperaturen är 171o F. Matematiskt blir då temperaturen 77,2o C, dvs. för varmt, men division mellan heltalsvärdena (171-32)*5 och 9 borde ge värdet 77o C, dvs. lagom temperatur.

Svara
Close