Permalänk
Medlem

Fastnat på en uppgift i C#

Hej,

Jag har nyligen börjat läsa grundläggande programmering i C#, och har tyvärr fastnad på en uppgift.

Uppgiften går ut på att användaren ska skriva in tre tal, följt av att programmet sedan skriver ut det största av talen.

Det måste ju vara en selektionsbit med else och if, väl? Men jag kan bara få in två variabler när jag gör det, vet inte hur jag ska gå tillväga för att få in tre. Vore otroligt tacksam för lite hjälp på hur man lyckas.

Permalänk
Medlem

Det enklaste är att spara talen i en simpel List<int>. Kör sedan en listansvariablenamn.Sort() och skriv sedan ut listansvariablenamn.Last()

Permalänk
Skrivet av Krass:

Det enklaste är att spara talen i en simpel List<int>. Kör sedan en listansvariablenamn.Sort() och skriv sedan ut listansvariablenamn.Last()

Kan kanske kännas som lite fusk vid nybörjarprogrammering
Mitt tips är att ta det i två steg. Om du hittat det största av 2 av talen så kan du ju se om det sista är större eller mindre sen

Skickades från m.sweclockers.com

Visa signatur

Nöken - A Pet Dragon for Bold Princesses

Permalänk

Nja, är det en grunläggande kurs så spara talen i tre separata variabler typ
int tal1 = Console.ReadLine();
int tal2 = Console.ReadLine();
int tal3 = Console.ReadLine();
sedan jämföra om tal1 > tal2 && tal1 > tal3 osv.

Den sista delen blir kanske lite mer trial and error, men det är som bekant nyttigt

Visa signatur

ASUS TUF GAMING X570-PLUS | Ryzen 5 3600 | Corsair 16GB 3200Mhz Vengeance | MSI GeForce GTX 1080 Gaming X 8G | Corsair HX 750W 80+ | Noctua NH-U12A | Fractal Define R5

Permalänk
Medlem
Skrivet av PigPillow:

Kan kanske kännas som lite fusk vid nybörjarprogrammering
Mitt tips är att ta det i två steg. Om du hittat det största av 2 av talen så kan du ju se om det sista är större eller mindre sen

Skickades från m.sweclockers.com

Tycker man ska använda Sort() följt av Last() sålänge som man förstår vad som sker. Det är så jag hade skrivit, det är ju en generisk lösning oavsett hur många variabler man har. Men jag förstår precis vad du menar, OP bör ju kunna lösa det utan listor.

Visa signatur

AMD 7700X (EK 240mm AIO) | ROG Strix B650E-F Gaming | Gigabyte RX 6800 XT 16GB OC | Kingston Fury 32GB DDR5 5600mhz | Kingston Fury Renegade M2 2TB | Alienware AW2723DF 280hz

Permalänk
Medlem
Skrivet av PigPillow:

Kan kanske kännas som lite fusk vid nybörjarprogrammering
Mitt tips är att ta det i två steg. Om du hittat det största av 2 av talen så kan du ju se om det sista är större eller mindre sen

Skickades från m.sweclockers.com

Jag har klarat göra det med 2 tal genom att skriva såhär:

int a;
int b;

Console.WriteLine("Skriv in värde: ");
a = int.Parse(Console.ReadLine());

Console.WriteLine("Skriv in ett till värde: ");
b = int.Parse(Console.ReadLine());

if (a > b)
{
Console.WriteLine("Det största värdet är: ");
Console.WriteLine(a);
}
else
{
Console.WriteLine("Det största värdet är: ");
Console.WriteLine(b);

}

Dold text

Var och hur skulle jag isåfall lägga till en else/if selektion? Det är det jag kört fast på.

Permalänk
Medlem
Skrivet av Fritter:

Jag har klarat göra det med 2 tal genom att skriva såhär:

int a;
int b;

Console.WriteLine("Skriv in värde: ");
a = int.Parse(Console.ReadLine());

Console.WriteLine("Skriv in ett till värde: ");
b = int.Parse(Console.ReadLine());

if (a > b)
{
Console.WriteLine("Det största värdet är: ");
Console.WriteLine(a);
}
else
{
Console.WriteLine("Det största värdet är: ");
Console.WriteLine(b);

}

Dold text

Var och hur skulle jag isåfall lägga till en else/if selektion? Det är det jag kört fast på.

Console.WriteLine("Det största värdet är: "); if (a > b && a > c) { Console.WriteLine(a); } elseif (b > a && b > c) { Console.WriteLine(b); else { Console.WriteLine(c); }

Permalänk
Medlem

Är A > B
Kolla om A > C -> sant=A störst, falskt= C störst
Annars kolla om B > C , samma som ovan

Permalänk
Medlem

En liten hint:

if (a > b && a > c)

Permalänk
Medlem

Lite pseudokod för att beskriva vad du bör göra:

- Läs in dina tal
- Gå igenom dem, via en loop att rekommendera för att få snyggare kod, annars en efter en förutsatt att du har en liten lista
- Skapa en variabel för att spara undan det största talet i
- Kolla om varje tal är större än ditt största tal, isf skriv över din variabel till det nya talet
- Printa ut din variabel

Kodexempel (ej kopieras, och fungerar ej med negativa tecken pga default värde 0):

// Skapar din variabel int biggestNum = 0; // Loopa igenom dina tal for (int i = 0; i < values.size(); i++) { // Kolla om ditt tal är större än det största du sparat if (values[i] > biggestNum) { // Sätt din variabel så att den är störst biggestNum = value; } }

Permalänk
Medlem

Tackar för all hjälp, efter lite tid nu har jag lyckats klura ut det med (a>b && a>c) osv. Mycket uppskattat att ni alla tog er tid!

Permalänk
Medlem

Du bör så snabbt som möjligt kolla på nesoc exempel. Tänk om du skulle hitta största talet av 50.

Permalänk
Medlem

Skapa en lista vars värden kommer vara input från Console, parse för att få in i listan (Convert.ToInt16). Vi förutsätter att dem inte skriver ett värde högre eller lägre än vad int16 klarar.

Sortera, vilket kommer lägga lägsta värdet på 0 och högsta på mängden av objekt i listan. Listan indexeras lite fel för att bara säga [myValues.Count] så lägg -1 där för att få till rätt.

Console.WriteLine är bara till för att skriva ut allting. Glöm inte readkey

Blir så fult med massa if-else frågor...

List<int> myValues = new List<int> { Convert.ToInt16(Console.ReadLine()), Convert.ToInt16(Console.ReadLine()), Convert.ToInt16(Console.ReadLine()) }; myValues.Sort(); Console.WriteLine(myValues[myValues.Count -1].ToString());

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Hedersmedlem
Skrivet av freddyfresh:

Blir så fult med massa if-else frågor...

Om man unnar sig linq får man ju också Max() och liknande direkt:

Console.WriteLine((new[] {int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine())}).Max());

Edit:
eller kanske

Console.WriteLine(Enumerable.Repeat<Func<string>>(Console.ReadLine, 3).Select(f => int.Parse(f())).Max());

Permalänk
Medlem

numbers.Aggregate((a, b) => a<b?b:a); // dancing queen

Visa signatur

Kom-pa-TI-bilitet