Forumdelen sponsras av

Trädvy Permalänk
Medlem
Registrerad
Feb 2018

Bastun Programmering C#

Hej jag vill ha hjälp och tror nog att jag e den trögaste. Grejen är att jag vill att både if och else ska köras men det är bara "else if" och "to low" som kör. Vad gör jag för fel??

using System;

namespace BastuuppgiftFtoC
{
class bastunadrianaProgram
{
public static float FahrenheitToCelsisus(float fahrenheit)

{
float celsius = (fahrenheit - 32) * 5 / 9;
return celsius;
}

static void Main(string[] args)

{

float maxtemperaturefahr = 170.6f;
float correcttemperaturefahr = 167f;
float mintemperaturefahr = 163.4f;
float fahrenheit = 167;

Console.Write("Skriv in temp in Fahr: ");
string nr = Console.ReadLine();

float userinfahr = Convert.ToSingle(Console.ReadLine());
float celsius = FahrenheitToCelsisus(userinfahr);

Console.WriteLine(" The temperature in Fahr " + celsius + " grader i celsius");
string nr1 = Console.ReadLine();

do
{

if

(userinfahr > maxtemperaturefahr)
{
Console.WriteLine(" To High! Turn down");

}

else if (userinfahr < mintemperaturefahr)
{

Console.WriteLine(" To low! Turn up ");
Console.ReadLine();
}

}

while (userinfahr < mintemperaturefahr || userinfahr > mintemperaturefahr);
Console.Write(" yeppp");
Console.ReadLine();
}

}
}

Trädvy Permalänk
Medlem
Plats
Hedesunda
Registrerad
Dec 2005

Använd debuggern och stega igenom programmet så ser du variablernas värden under körningen.

Trädvy Permalänk
Medlem
Registrerad
Feb 2014

Prova stega igenom som sagt och observera variablerna.

Hint:
Ändra "Console.ReadLine();" till "nr1 = Console.ReadLine(); . Du läser in värdet men sparar det inte.

Trädvy Permalänk
Medlem
Registrerad
Feb 2018

Tack så mkt

Skrivet av nibbloid:

Prova stega igenom som sagt och observera variablerna.

Hint:
Ändra "Console.ReadLine();" till "nr1 = Console.ReadLine(); . Du läser in värdet men sparar det inte.

Tack så mkt men har inte fått lära mig debugga

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Registrerad
Feb 2018
Skrivet av hasenfrasen:

Använd debuggern och stega igenom programmet så ser du variablernas värden under körningen.

Tack så mkt men har inte fått lära mig debugga och kollar runt men förstår mig inte riktigt hur man gör det

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Okt 2008

tips:
Använd [code] taggen när du skriver kod här, gör det lättare att läsa!

Jag rekommenderar jag med att du kollar över vad du har för variabler, specifikt de du läser in.

P.S

while (userinfahr < mintemperaturefahr || userinfahr > mintemperaturefahr);

Om jag inte helt missuppfattat hur C# skrivs känns den här konstig, se över vad du vill göra där.

Min gissning är att du tänkte
"Medans temperaturen är mindre än minimum ELLER medans temperaturen är högre än maximum"

Dator 1: i7 5820k | Asus X99-S | 16GB DDR4 | GTX 1080ti SLI | NZXT H440
Dator 2: i7 5820k | Asrock X99M | 32GB DDR4 | GTX 970 | SC-512N1-L Capture Card | Fractal Design Node 804
Skärm:Philips BDM4065UC
Mixer: Behringer X2222USB
Mina bästa tider inom speedruns

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007
Skrivet av programmering123:

Tack så mkt men har inte fått lära mig debugga och kollar runt men förstår mig inte riktigt hur man gör det

Det är väldigt enkelt, bara att sätta en brytpunkt där du vill att programmet ska stanna och sen kan du stega igen det rad för rad och se vad alla variabler har för värde. Se t.ex. denna korta introduktion. Gör dig själv en tjänst och lär dig hur det fungerar, det är det mest användbara verktyget du har för att förstå vad din kod faktiskt gör.

Använd för övrigt gärna code-taggar när du postar kod, så behålls indenteringen och gör det enklare för oss att läsa den:
[code]
Kod här
[/code]

Trädvy Permalänk
Medlem
Plats
SweClockers forum
Registrerad
Aug 2012

Första delen av koden fungerar, men du har många oanvända variabler och Console.ReadLine():s som gör programmet synnerligen svåranvänt. Först blir man ombedd att skriva in en temperatur, men det första man skriver används inte utan det är andra värdet man matar in som du faktiskt beräknar något på sedan. Håll koden så ren som möjligt för att göra det enkelt för dig att förstå och hitta de programmeringslogiska felen utan att bli bländad av massa överflödigt bôs.

float maxtemperaturefahr = 170.6f; float correcttemperaturefahr = 167f; // används aldrig float mintemperaturefahr = 163.4f; float fahrenheit = 167; // används aldrig Console.Write("Skriv in temp in Fahr: "); string nr = Console.ReadLine(); // används aldrig float userinfahr = Convert.ToSingle(Console.ReadLine()); // tänkte du kanske använda nr här? float celsius = FahrenheitToCelsisus(userinfahr); Console.WriteLine(" The temperature in Fahr " + celsius + " grader i celsius"); string nr1 = Console.ReadLine(); // används aldrig

Loopen har ett stort problem och ett mindre stort problem. Det stora är att användaren aldrig får en chans att ange en ny temperatur, vilket innebär att programmet kommer fastna i loopen för evigt om den först inmatade temperaturen är utanför intervallet. Om du flyttar din befintliga kod för att ta in och hantera användarinput så att den körs i början av varje loop får användaren en chans att rätta sig.

Det lilla problemet är villkoret userinfahr > mintemperaturefahr. Det ser ut som att du egentligen tänkte skriva maxtemperaturefahr där. Just nu avslutas loopen enbart om userinfahr är exakt 163,4 °F, men du vill väl att den ska avslutas om userinfahr är mellan 163,4 och 170,6 °F?

do { // input från användaren if (userinfahr > maxtemperaturefahr) { Console.WriteLine(" To High! Turn down"); } else if (userinfahr < mintemperaturefahr) { Console.WriteLine(" To low! Turn up "); Console.ReadLine(); // är du säker på att du vill ha den här? } } while (userinfahr < mintemperaturefahr || userinfahr > mintemperaturefahr); // maxtemperaturefahr

Slutligen bör du jobba på din kodstruktur. Indenteringen försvann i trådstarten då du inte använde [code][/code]-taggar runt den, men även korrekt indenterad är den svårläst eftersom du använder nyrader för generöst på vissa ställen. Som exempel är det onödigt svårläst när if-nyckelordet är separerat från villkorsuttrycket:

if (userinfahr > maxtemperaturefahr) { Console.WriteLine(" To High! Turn down"); }

Det blir mycket lättare att läsa om man skriver behåller allt på samma rad:

if (userinfahr > maxtemperaturefahr) { Console.WriteLine(" To High! Turn down"); }

På samma sätt bör...

static void Main(string[] args) {

...skrivas som...

static void Main(string[] args) {

...för att det ska bli tydligt att blocket ({}) hör ihop med funktionshuvudet (static void Main(string[] args)). Återigen samma sak för while-uttrycket som ligger långt nedanför tillhörande block.

Nyrader för att dela upp kod i ett block är dock inget fel på och det använder du redan på ett bra sätt (variabeldeklarationer, användarinput och beräkningar i ditt fall). Det är även acceptabelt att inleda och avsluta ett block med en nyrad för att uppnå mer lättläst kod. Detta används främst för stora block som klassdeklarationer. För små block blir det ofta bara löjligt platskrävande och hjälper inte läsligheten.

if (userinfahr > maxtemperaturefahr) { Console.WriteLine(" To High! Turn down"); }

Guide: Roota din HTC - BB-Kod-knappar på Prisjakt

              Min burk - Kvävekyld till 80%
8700K@stock
1070 Ti@stock

Ibland har jag fel, men då är det någon annans fel.

Trädvy Permalänk
Medlem
Registrerad
Feb 2018

tackar så mycket för hjälpen

@LemonIllusion:

Hej! Tusen tack för all hjälp och tips, nu har jag fått den lite mer lättare att läsa och mer kompakt.
Har fortfarande problem att läsa in från användaren andra loopen else if to high!

using System;

namespace BastuuppgiftFtoC
{
class FahrtoCProgram
{
static float FahrenheitToCelsisus(float fahrenheit)

{//Gör uträkning Fto C
float celsius = ((fahrenheit - 32) * 5) / 9;
return celsius;//uträkning kommer till c

}
static void Main(string[] args)
{
//skriv temperatur i F
Console.Write("Skriv in temp in Fahr: ");
//konverterar till C och tar information från användare
float fahrenheit = Convert.ToSingle(Console.ReadLine());
float celsius = FahrenheitToCelsisus(fahrenheit);
//FtoC

{

Console.WriteLine(" It's " + celsius + " degres i celsius");

//om användaren(fahrenheit) skriver in ett tal som är mindre än (mintemperature)
//skriv ut "To Low! Turn upp"
while (true)
{
// Float variabler max och min i fahr
float maxtemperaturefahr = 170.6f;

float mintemperaturefahr = 163.4f; //mintempfahr

if (fahrenheit < mintemperaturefahr)
{
Console.WriteLine(" To Low! Turn up");
Console.ReadLine();

} // det här jag inte får själva loopen att köra när jag skriverför högt värde

else if (fahrenheit > maxtemperaturefahr)

{

Console.WriteLine(" To High! Turn Down ");

Console.ReadLine(); // får bara att den första körs, alltså To Low
// det känns som att den inte tar in indata från anvädaren

}
}
}
}
}
}

Trädvy Permalänk
Medlem
Plats
SweClockers forum
Registrerad
Aug 2012
Skrivet av programmering123:

@LemonIllusion:

Hej! Tusen tack för all hjälp och tips, nu har jag fått den lite mer lättare att läsa och mer kompakt.
Har fortfarande problem att läsa in från användaren andra loopen else if to high!

using System;

namespace BastuuppgiftFtoC
{
class FahrtoCProgram
{
static float FahrenheitToCelsisus(float fahrenheit)

{//Gör uträkning Fto C
float celsius = ((fahrenheit - 32) * 5) / 9;
return celsius;//uträkning kommer till c

}
static void Main(string[] args)
{
//skriv temperatur i F
Console.Write("Skriv in temp in Fahr: ");
//konverterar till C och tar information från användare
float fahrenheit = Convert.ToSingle(Console.ReadLine());
float celsius = FahrenheitToCelsisus(fahrenheit);
//FtoC

{

Console.WriteLine(" It's " + celsius + " degres i celsius");

//om användaren(fahrenheit) skriver in ett tal som är mindre än (mintemperature)
//skriv ut "To Low! Turn upp"
while (true)
{
// Float variabler max och min i fahr
float maxtemperaturefahr = 170.6f;

float mintemperaturefahr = 163.4f; //mintempfahr

if (fahrenheit < mintemperaturefahr)
{
Console.WriteLine(" To Low! Turn up");
Console.ReadLine();

} // det här jag inte får själva loopen att köra när jag skriverför högt värde

else if (fahrenheit > maxtemperaturefahr)

{

Console.WriteLine(" To High! Turn Down ");

Console.ReadLine(); // får bara att den första körs, alltså To Low
// det känns som att den inte tar in indata från anvädaren

}
}
}
}
}
}

Din sista kommentar slår spiken på huvudet. Du tar aldrig indata från användaren igen eftersom allt du gör är att köra Console.ReadLine() utan att spara det inmatade värdet. Parsa och spara den inmatade strängen precis som du gör längre upp.

Du bör också se över villkoret för while-loopen så att den slutar köra när temperaturen är rätt. Alternativt lägga in en break inuti loopen när temperaturen är rätt.

Och du bör fortfarande använda [code]kod här[/code]-taggar när du klistrar in kod för att bibehålla indentering. Jag vet inte om det är därför det blir så konstigt med nyraderna, men om du fortfarande har nyrader mellan funktionshuvuden/-kroppar och if-villkoret och tillhörande block borde du ta bort dem.

Guide: Roota din HTC - BB-Kod-knappar på Prisjakt

              Min burk - Kvävekyld till 80%
8700K@stock
1070 Ti@stock

Ibland har jag fel, men då är det någon annans fel.

Trädvy Permalänk
Medlem
Registrerad
Feb 2018

Bastun

@LemonIllusion:

Har nästan fått ihop allt, men nu har jag problemet med att inte loopen körs till det rätta svaret. Kan bara skriva in en gång och sen slutar det.

using System;

namespace BastuuppgiftFtoC
{
class FahrtoCProgram
{
public static float FahrenheitToCelsisus(float fahrenheit)

{//Gör uträkning Fto C
float celsius = ((fahrenheit - 32) * 5) / 9;
return celsius;//uträkning kommer till c

}

public static void Main (string[] args)
{

Console.Write("Skriv in temp in Fahr: ");

int fahrenheit = int.Parse(Console.ReadLine());

float fahrenheit1 = Convert.ToSingle(fahrenheit);

float celsius = FahrenheitToCelsisus(fahrenheit1);

fahrenheit = 176;

float maxtemperaturefahr = 170.6f + 1;

float mintemperaturefahr = 163.4f - 1;

if (fahrenheit1 < mintemperaturefahr)

{
Console.WriteLine(" Du skrev i F " + fahrenheit1 + " Det är för kallt, " + celsius + " degC");

}
else if ((fahrenheit1 >= mintemperaturefahr) && (fahrenheit1 <= maxtemperaturefahr) && (fahrenheit1 != fahrenheit))

{
Console.WriteLine("Du skrev i F " + fahrenheit1 + " Temperaturen är lagom, det blir " + celsius + " degC ");

}

else if (fahrenheit1 == fahrenheit)
{
Console.WriteLine(" Du skrev i F " + fahrenheit + " Temperaturen är perfekt, det blir " + celsius + " degC ");

}

else if (fahrenheit1 > maxtemperaturefahr)
{
Console.WriteLine(" Du skrev i F " + + fahrenheit1 + " Temperaturen är för hög, det blir " + celsius + " degC ");

}
}
}
}

[/center]

Trädvy Permalänk
Medlem
Plats
SweClockers forum
Registrerad
Aug 2012
Skrivet av programmering123:

@LemonIllusion:

Har nästan fått ihop allt, men nu har jag problemet med att inte loopen körs till det rätta svaret. Kan bara skriva in en gång och sen slutar det.

using System;

namespace BastuuppgiftFtoC
{
class FahrtoCProgram
{
public static float FahrenheitToCelsisus(float fahrenheit)

{//Gör uträkning Fto C
float celsius = ((fahrenheit - 32) * 5) / 9;
return celsius;//uträkning kommer till c

}

public static void Main (string[] args)
{

Console.Write("Skriv in temp in Fahr: ");

int fahrenheit = int.Parse(Console.ReadLine());

float fahrenheit1 = Convert.ToSingle(fahrenheit);

float celsius = FahrenheitToCelsisus(fahrenheit1);

fahrenheit = 176;

float maxtemperaturefahr = 170.6f + 1;

float mintemperaturefahr = 163.4f - 1;

if (fahrenheit1 < mintemperaturefahr)

{
Console.WriteLine(" Du skrev i F " + fahrenheit1 + " Det är för kallt, " + celsius + " degC");

}
else if ((fahrenheit1 >= mintemperaturefahr) && (fahrenheit1 <= maxtemperaturefahr) && (fahrenheit1 != fahrenheit))

{
Console.WriteLine("Du skrev i F " + fahrenheit1 + " Temperaturen är lagom, det blir " + celsius + " degC ");

}

else if (fahrenheit1 == fahrenheit)
{
Console.WriteLine(" Du skrev i F " + fahrenheit + " Temperaturen är perfekt, det blir " + celsius + " degC ");

}

else if (fahrenheit1 > maxtemperaturefahr)
{
Console.WriteLine(" Du skrev i F " + + fahrenheit1 + " Temperaturen är för hög, det blir " + celsius + " degC ");

}
}
}
}

[/center]

Det kan vara relaterat till att du inte har någon loop alls.

[code][/code] är fortfarande taggarna för att formatera kod vettigt.

Guide: Roota din HTC - BB-Kod-knappar på Prisjakt

              Min burk - Kvävekyld till 80%
8700K@stock
1070 Ti@stock

Ibland har jag fel, men då är det någon annans fel.

Trädvy Permalänk
Medlem
Plats
Hedesunda
Registrerad
Dec 2005
Skrivet av programmering123:

Kan bara skriva in en gång och sen slutar det.

Kortfattat, kan man inte formulera i ord eller tanke vad som skall lösas går det förmodligen inte heller att programmera.

Trädvy Permalänk
Medlem
Registrerad
Feb 2018

loop och try catch

Tack så mkt för all hjälp

Nu har jag fått nästan allt fungera, vill bara att loopen ska avslutas när man skriver in rätt temperatur alltså 75 c
Och i Fahrenheit 167
och try catches när jag skriver bokstäver

namespace BastuuppgiftFtoC
{
class FahrtoCProgram
{
private static float inputuserfahrenheit;
private static float celsiusoutput;

public static float FahrenheitToCelsisus1(float fahrenheit)

{//Gör uträkning Fto C

float celsiusoutput = ((fahrenheit - 32) * 5) / 9;
return celsiusoutput;//uträkning kommer till c

}

public static void Main(string[] args)

{

float correcttemperaturcelsius = 75;
float mintemperaturecelsius = correcttemperaturcelsius - 2 ;//73 162
float maxtemperaturecelsius = correcttemperaturcelsius + 3; //75 170

do
{
Console.Write("Write down the temperature in Fahrenheit please! : ");

inputuserfahrenheit = Convert.ToInt32(Console.ReadLine());
celsiusoutput = FahrenheitToCelsisus1(inputuserfahrenheit);

if (celsiusoutput > maxtemperaturecelsius)

{
Console.WriteLine(" You wrote in Fahrenheit " + inputuserfahrenheit + " The temp to high, turn down! It's " + FahrenheitToCelsisus1(inputuserfahrenheit) + " degC");

}
if (celsiusoutput < mintemperaturecelsius)

{
Console.WriteLine(" You wrote in Fahrenheit " + inputuserfahrenheit + " Its to low, turn up! Its " + FahrenheitToCelsisus1(inputuserfahrenheit) + " deg In celsius ");

}

else if (celsiusoutput == correcttemperaturcelsius)
{

Console.WriteLine(" You wrote in Fahrenheit " + inputuserfahrenheit + " The temperature is perfect, in celsisus " + FahrenheitToCelsisus1(inputuserfahrenheit) + " deegres in C ");

}

else if (celsiusoutput >= 164 || celsiusoutput <= maxtemperaturecelsius)

{

Console.WriteLine(" You wrote in Fahrenheit " + inputuserfahrenheit + " The temperature it's good but not perfect! It's " + FahrenheitToCelsisus1(inputuserfahrenheit) + "deegres in celsisu");

try
{
inputuserfahrenheit = float.Parse(Console.ReadLine());
celsiusoutput = float.Parse(Console.ReadLine());
}
catch

{

Console.WriteLine(" Skriv nummer!");

}
}

}

while (celsiusoutput < maxtemperaturecelsius || celsiusoutput > mintemperaturecelsius || celsiusoutput != 75);

{

Console.ReadLine();
}
}
}
}

Trädvy Permalänk
Medlem
Plats
Norrköping
Registrerad
Jan 2010

Redigera och lägg koden innanför [ code] [/code] - block(utan mellanslaget i första. Fruktansvärt svårt att läsa utan

Trädvy Permalänk
Medlem
Plats
Norrköping
Registrerad
Jul 2006

Du kan avsluta en loop med.

break;

R5-1600X, GA-AB-350M-G3, 16GB DDR4 @ 2666, RX580 8GB, Corsair CX650M Rev2

Trädvy Permalänk
Medlem
Plats
Götet
Registrerad
Okt 2013

Antingen som svarades ovan, använd Break.
Eller gör en villkorad loop, dvs en While-sats (eller Do/While). Då skapar du en flagga (en boolean som är sann eller falsk) och loopar till dess att flaggan är sann.

Om man använder en flagga så krävs en IF-sats för att sätta flaggan. En annan approach är att skippa flaggan och göra kollen direkt i While-anropet, men för att göra det tydligt för dig själv som är ny på det hela så är en flagga att föredra tycker jag.

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Trädvy Permalänk
Forumledare
Kent
Registrerad
Jan 2005

@programmering123 *Trådar sammanfogade i enlighet med §3.3 i forumreglerna*

Observera att vi inte tillåter korspostning (flera trådar om samma ämne). Detta då vi tycker det är viktigt att alla får samma chans att få sina trådar uppmärksammade.

Synpunkter eller frågor gällande modereringen? Då kan du kontakta mig eller moderatorerna.
Ursäkta min stavning, jag är dansk

Trädvy Permalänk
Medlem
Registrerad
Feb 2018

Tack för all hjälp lyckades fixa uppgiften till slut
Nu har jag problem med nästa uppgift

namespace arrays
{
class Program
{
static void Main(string[] args)
{

/* lottobollar, jag ska be användaren skriva in tio tal, har nu bara fem tal. Men ska öka sen
när jag vet att alt är korrekt. Har fått som jag vill att användaren kan skriva in sina tal och det kommer
ut var anvädaren har skrvit för tal, det jag vill nu är att jag ska försöka få talen hen skriver in
att matcha med min array. Om hen skriver rätta nummer som jag har i min array så ska ju själva if loopen komma in
(vilket jag vet att jag suger rätt hårt på med loopar)har sjukt svårt just med output så den ska starta i loopen. har en fråga om random numret, vet att själva datorn loopar numren själv
i min array, men om jag skriver 23 och datorn slumpar 20, kan man fixa att de kommer i loopen så jag får rätt?
Så output, rando och loop är mitt problem...
Hoppas ni förstår vad jag menar
*/

Console.WriteLine("Skriv in tal 1");
int userguess1 = int.Parse((Console.ReadLine()));// ber anvädaren skriva in önskade tal från ett till fem

Console.WriteLine("Skriv in tal 2");

int userguess2 = int.Parse((Console.ReadLine()));

Console.WriteLine("Skriv in tal 3");
int userguess3 = int.Parse((Console.ReadLine()));

Console.WriteLine("Skriv in tal 4");
int userguess4 = int.Parse((Console.ReadLine()));

Console.WriteLine("Skriv in tal 5");
int userguess5 = int.Parse((Console.ReadLine()));

// Skapar vektor
int[] boll = new int[5];

// tilldela vektorn element olika värde genom index:
boll[0] = 20;
boll[1] = 8;
boll[2] = 25;
boll[3] = 6;
boll[4] = 23;

for (int i = 0; i < boll.Length; i++)

{

Console.WriteLine(" Du skrev " + userguess1 + ", " + userguess2 + ", " + userguess3 + ", " + userguess4 + " och talet " + userguess5);

Random random = new Random();
int number = random.Next(boll.Length);
System.Console.WriteLine("Slumptal är " + boll[number]);

{
userguess1 = (boll[0]);
userguess2 = (boll[1]);
userguess3 = (boll[2]);
userguess4 = (boll[3]);
userguess5 = (boll[4]);

if (userguess1 == number)

if (userguess2 == number)
if (userguess3 == number)
if (userguess4 == number)
if (userguess5 == number)

{
Console.WriteLine("Härligt du vann!");

}

else
{
Console.WriteLine("Tyvärr, fel. Bättre lycka nästa gång!");
}

Console.ReadKey();
}

Trädvy Permalänk
Medlem
Plats
Hedesunda
Registrerad
Dec 2005
Skrivet av programmering123:

men om jag skriver 23 och datorn slumpar 20, kan man fixa att de kommer i loopen så jag får rätt?

Det är HELT omöjligt!

Lixom, man lär sig genom att göra fel, göra om och göra rätt, inte att fråga efter "färdiga" lösningar. "userguess" som array är lite flexiblare och möjligen även en variabel "bool winner = false" i början som blir true vid jackpott dvs förståelse över vad som ska hända.

Pseudo-kod eller flow chart kan du skippa om du kan överblicka hela problemet och kan säga "så här skall det göras".

Trädvy Permalänk
Medlem
Registrerad
Feb 2018
Skrivet av hasenfrasen:

Det är HELT omöjligt!

Lixom, man lär sig genom att göra fel, göra om och göra rätt, inte att fråga efter "färdiga" lösningar. "userguess" som array är lite flexiblare och möjligen även en variabel "bool winner = false" i början som blir true vid jackpott dvs förståelse över vad som ska hända.

Pseudo-kod eller flow chart kan du skippa om du kan överblicka hela problemet och kan säga "så här skall det göras".

Nja fast de var inte fråga om färdiga lösningar utan om de går att göra

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Registrerad
Feb 2018
Skrivet av programmering123:

Nja fast de var inte fråga om färdiga lösningar utan om de går att göra

Skickades från m.sweclockers.com

Men tack!!!

Trädvy Permalänk
Medlem
Registrerad
Feb 2018

Läskback

vill att loopen fortsätter tills userinput är == 25 och att den säger att den är full backen min alltså
så om den är högre än 25 så ska de stå du måste minska med dryck, hur många drycker vill du tabort? (vilket jag fått)
men när jag ska skriva in andar gången så återgår det till menyn igen

case 1:

bool yes = 0;
Console.WriteLine(" Du valde att lägga till Coca-Cola ");
Console.WriteLine(" Hur många vill du lägga till?");
string cocacola = "Coca-Cola";
int userinput = int.Parse(Console.ReadLine());
Console.WriteLine(" Du valde " + userinput + " stycken" + " " + cocacola + "");

do
{
for (int i = 0; i < userinput; i--)
{

antal_flaskor++;

}
yes = true;
if (userinput == 25)
{
Console.WriteLine(" Backen är nu full och det är 25 stycken flaskor i backen");

}
yes = false;
if (userinput > 25)

{
Console.WriteLine(" I Läslabacken ryms det bara 25 drycker, du måste tabort dricka");
Console.WriteLine(" Hur många drickor vill du tabort?");
Console.ReadKey();
userinput = int.Parse(Console.ReadLine());
}
yes = false;

if (userinput < 25)
{

Console.WriteLine(" Hur många drickor vill du lägga till?");
Console.ReadKey();
}

yes = true;
} while (userinput != 25);

break;

Trädvy Permalänk
Medlem
Plats
Fotbollsplanen
Registrerad
Sep 2002

Du tar ju aldrig bort några flaskor från variabeln?
Inte för att vara sån, men jag vet inte riktigt hur du tänkt med koden. Har du bara en sorts dricka behöver du en variabel som håller reda på antal flaskor samt en som fångar input. Whilen körs tills antal_flaskor blivit 25. Du behöver ingen for loop.
När man lägger till kör du antal_flaskor += antal_flaskor och när man tar bort antal_flaskor -= userinput
Skickades från m.sweclockers.com

Trädvy Permalänk
Entusiast
Testpilot
Plats
Chalmers
Registrerad
Aug 2011

@programmering123: Använd [code]-taggen när du klistrar in kod. Hopplöst att läsa den annars. Skriv så här:

[code]
int x = 5;
// ...
[/code]

5930K • Corsair DP 32 GiB • EVGA GTX 980 • 2x Swift PG278Q
Better SweClockersDisplayPort över USB-C

Köp processor för framtiden™, men inte grafikkort.

Trädvy Permalänk
Medlem
Registrerad
Maj 2013

Man blir ju nästan lite smått förbannad när man läser detta. Du har blivit tillsagd att använda [ code ]-taggarna 7 gånger i denna tråd, men inte en enda gång har du brytt dig om att använda dem - varför?

Du kan väl iallafall försöka bry dig lite istället för att bara vara ute efter att få hjälp Försök själv läsa det du skriver, det är inte så enkelt va?

M-ITX: Fractal Design Node 304 Gigabyte H97N i7 4790k Msi GTX980 Gaming Ballistix Sport 16GB @ 1600MHz

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2007

Är det skoluppgifter vi hjälper dig med månne?

"do { for (int i = 0; i < userinput; i--) { antal_flaskor++; } yes = true; if (userinput == 25)"

Vad händer i din loop? Eller snarare vad är villkoren för din loop.
Om du vägrar debugga (vilket många andra rekommenderat) så kan du ju alltid lägga till en utskrift i loopen t.ex. efter antal_flaskor++

Spel: Ryzen 7 1800x, R9 270, 16GB DDR4 Flare X
Har haft dessa GPUer: Tseng ET6000, Matrox M3D, 3DFX Voodoo 1-3, nVidia Riva 128, TNT, TNT2, Geforce 256 SDR+DDR, Geforce 2mx, 3, GT 8600m, GTX460 SLI, GTX580, GTX670 SLI, 1080 ti AMD Radeon 9200, 4850 CF, 6950@70, 6870 CF, 7850 CF, R9 390, Vega 64
Lista beg. priser GPUer ESD for dummies