10 svar
91 visningar
matematikergbg behöver inte mer hjälp
matematikergbg 69 – Fd. Medlem
Postad: 14 nov 2020 11:02

formuleringen av WHILE

Hej, när jag provkör mitt programm får jag problemet att ";" förväntas där vid while raden, men jag misstänker att något annat inte stämmer! Något tips och förklaring?

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

Det ser att att vara just det som är fel. 

matematikergbg 69 – Fd. Medlem
Postad: 14 nov 2020 11:44

Hej Laguna,

När jag tilläger ; vid while raden så blir det mer problem då den säger att namnet celcius inte finns i den aktuella kontexten ?

Smaragdalena 80504 – Avstängd
Postad: 14 nov 2020 12:38

Vad händer om du ändrar variabelnamnet cel högst upp till celsius?

undrar en som programmerat lite i BASIC på 80-talet och sem läst en kurs i FORTRAN77, som kändes gammalt redan år 1984 (men som snappat upp ett och annat av att vara mamma till tre datortokar).

Laguna Online 30500
Postad: 14 nov 2020 12:39

Så är det, deklarationen av en variabel gäller bara inuti det block där den är deklarerad.

Sätt "int celcius;" före "do" och byt ut "int celcius" mot "celcius" där den deklareras nu.

(Jag skulle kalla den "celsius", för det är så det stavas.)

matematikergbg 69 – Fd. Medlem
Postad: 14 nov 2020 13:56

Hej det funkade nu men jag undrar värför mpste man ha int celsius före do?

matematikergbg 69 – Fd. Medlem
Postad: 14 nov 2020 14:02

vad händer om jag byter all int som finns mot double?

Laguna Online 30500
Postad: 14 nov 2020 14:09
Smaragdalena skrev:

Vad händer om du ändrar variabelnamnet cel högst upp till celsius?

undrar en som programmerat lite i BASIC på 80-talet och sem läst en kurs i FORTRAN77, som kändes gammalt redan år 1984 (men som snappat upp ett och annat av att vara mamma till tre datortokar).

Det är inuti en annan metod, så det påverkar inte det som händer i 'Main'. 

Laguna Online 30500
Postad: 14 nov 2020 14:13
matematikergbg skrev:

Hej det funkade nu men jag undrar värför mpste man ha int celsius före do?

Deklatationen gäller bara till slutet av det block där deklarationen står, så efter klammern före ditt while-test finns inte variabeln längre.

Om du vill testa med double i stället så gör det. 

matematikergbg 69 – Fd. Medlem
Postad: 14 nov 2020 14:37

jag försöker göra så att om människan trycker 0 så ska ett slump siffror i fehrenheit mellan 160 och 171 genereras och används i resterande uträkning.

if (fahrenheit==0)
				
			{
				Random randomerare= new Random();
				int fahr=randomerare.Next(163,171);
			}

men det ger inte den förväntade effekt då den följer de andra logiken.
Den uppger att 0 är för låg temperatur istället för att generera slump talen.

Laguna Online 30500
Postad: 14 nov 2020 15:04

Din nya variabel 'fahr' används inte och slutar finnas redan på nästa rad. Du får sätta 'fahrenheit' till det nya värdet i stället.

Svara
Close