9 svar
750 visningar
Farbrorgul är nöjd med hjälpen
Farbrorgul 408
Postad: 13 jan 2021 15:59

Villkorsoperatorn ? : Uppgift

Gör ett program som frågar efter ditt kön och som ger svarsalternativen m och k. Därefter ska utskriften bli: "Du är en man" eller "Du är en kvinna", beroende på om du matat in ett 'm' eller inte. Använd villkorsoperatorn i ditt program.

Fungerar inte hur villkorsoperatorn fungerar så behöver hjälp med denna uppgift. Hittills har jag skrivit detta:

Console.WriteLine ("Kön (m/k): ");
string kön = Console.ReadLine();
kön = m ? m : k;
}

Jag vet hur if-satser fungerar, men hur implementerar man samma system i villkoroperator? Har försökt läsa i boken men förstår ingenting. 

Yngve 37767 – Livehjälpare
Postad: 13 jan 2021 16:08

Operatorn fungerar så här.

Jämför satsen if .. else ..

Smaragdalena 78101 – Lärare
Postad: 13 jan 2021 16:37

Vilket cis-perspektiv!

Laguna Online 28423
Postad: 13 jan 2021 17:23

Prova att skriva fungerande kod med if-then-else först så kan vi konvertera den till villkorsoperatorn.

Farbrorgul 408
Postad: 13 jan 2021 17:23 Redigerad: 13 jan 2021 17:24
Yngve skrev:

Operatorn fungerar så här.

Jämför satsen if .. else ..

Jag förstår nu i princip hur den fungerar nu. Men hur ska jag formulera koden? Jag tänker att detta borde fungera:

Console.WriteLine ("Kön (m/k): ");
string kön = Console.ReadLine();
m = ? m : k;
}
}

 

dvs. om m = true så är det m, och om m = false så är det k.

Yngve 37767 – Livehjälpare
Postad: 13 jan 2021 18:13 Redigerad: 13 jan 2021 18:14

Syntaxen är fel, det ska vara

condition ? consequent : alternative

Till exempel:

max = (a>b) ? a : b

"Översatt":

if (a>b) { max = a } else { max = b }

Lindehaven 820 – Lärare
Postad: 13 jan 2021 18:20

m = ? m : k; är inkorrekt vilket du ser direkt om du kompilerar koden. Variabeln m behöver deklareras. Ett villkor (condition) behöver skrivas.

    condition ? consequent : alternative

Se exempel i Microsofts dokumentation.

Visa spoiler
    {
      Console.Write("Kön (m/k): ");
      string val = Console.ReadLine();
      string kön = (val == "m") ? "man" : "kvinna";
      Console.WriteLine("Du är en {0}.", kön);
    }
Farbrorgul 408
Postad: 13 jan 2021 19:38
Lindehaven skrev:

m = ? m : k; är inkorrekt vilket du ser direkt om du kompilerar koden. Variabeln m behöver deklareras. Ett villkor (condition) behöver skrivas.

    condition ? consequent : alternative

Se exempel i Microsofts dokumentation.

Visa spoiler
    {
      Console.Write("Kön (m/k): ");
      string val = Console.ReadLine();
      string kön = (val == "m") ? "man" : "kvinna";
      Console.WriteLine("Du är en {0}.", kön);
    }

Får följande error när jag skriver denna kod: https://prnt.sc/wmt7fs

Yngve 37767 – Livehjälpare
Postad: 13 jan 2021 20:43

MainClass saknar avslutande måsvinge-parentes "}"

Du vet väl att du kan klistra in bilder direkt här i kommentarer?

Tegelhus 225
Postad: 14 jan 2021 19:27
Farbrorgul skrev:
Lindehaven skrev:

m = ? m : k; är inkorrekt vilket du ser direkt om du kompilerar koden. Variabeln m behöver deklareras. Ett villkor (condition) behöver skrivas.

    condition ? consequent : alternative

Se exempel i Microsofts dokumentation.

Visa spoiler
    {
      Console.Write("Kön (m/k): ");
      string val = Console.ReadLine();
      string kön = (val == "m") ? "man" : "kvinna";
      Console.WriteLine("Du är en {0}.", kön);
    }

Får följande error när jag skriver denna kod: https://prnt.sc/wmt7fs

Tips: Läs felmeddelandena, de kan ge mycket information om man lär sig tolka dem.  I det här fallet fick du felmeddelandet "Unexpected symbol `end-of-file`", vilket innebär att filen slutade tidigare än väntat - det vill säga att kompilatorn förväntade sig mer kod innan filen skulle ta slut. Det kan ge dig en ledtråd om att du bör kolla så att alla block avslutas korrekt, alltså att det för varje måsvinge finns en motsvarande avslutande måsvinge.

Svara Avbryt
Close