C# Nybegynder, HJÆLP!
-
- Begynder
- Indlæg:2
- Tilmeldt:26. feb 2019, 10:46
Hej herinde.
Jeg er nybegynder indenfor programmering, og i den anledning fået fat i nogle øvelser jeg skal lave.
Jeg sidder dog fast ved en opgave, som jeg ikke lige kan få til at gå op.
Opgaven hedder
Lav et program, der kan beregne den korrekte karakter i forhold til procent
korrekt besvarelse. Programmet skal spørge brugeren efter et antal procent og udlæse
tilhørende karakter.
Omregningen foregår efter følgende nøgle:
92 - 100 % = 12
75 - 91 % = 10
67 - 74 % = 7
58 - 66 % = 4
50 - 57 % = 02
20 - 49 % = 00
0 - 19 % = -3
Jeg ville blive meget glad hvis der var en som ville hjælpe mig med at lave koden. Eller give mig nogle fif.
Jeg laver det i C# sproget, Console.App.
Håber der sidder nogle hajer derude.
Tak på forhånd.
Jeg er nybegynder indenfor programmering, og i den anledning fået fat i nogle øvelser jeg skal lave.
Jeg sidder dog fast ved en opgave, som jeg ikke lige kan få til at gå op.
Opgaven hedder
Lav et program, der kan beregne den korrekte karakter i forhold til procent
korrekt besvarelse. Programmet skal spørge brugeren efter et antal procent og udlæse
tilhørende karakter.
Omregningen foregår efter følgende nøgle:
92 - 100 % = 12
75 - 91 % = 10
67 - 74 % = 7
58 - 66 % = 4
50 - 57 % = 02
20 - 49 % = 00
0 - 19 % = -3
Jeg ville blive meget glad hvis der var en som ville hjælpe mig med at lave koden. Eller give mig nogle fif.
Jeg laver det i C# sproget, Console.App.
Håber der sidder nogle hajer derude.
Tak på forhånd.
Re: C# Nybegynder, HJÆLP!
Du kunne gøre noget alá nedenstående, og evt. yderligere tjekke at tallet er gyldigt (mellem 0 og 100) osv.
Kode: Vælg alt
int percentage = Convert.ToInt32(Console.ReadLine());
if (percentage >= 92)
Console.WriteLine("12");
else if (percentage >= 75)
Console.WriteLine("10");
else if (percentage >= 67)
Console.WriteLine("7");
else if (percentage >= 58)
Console.WriteLine("4");
else if (percentage >= 50)
Console.WriteLine("2");
else if (percentage >= 20)
Console.WriteLine("00");
else
Console.WriteLine("-3");
-
- Begynder
- Indlæg:2
- Tilmeldt:26. feb 2019, 10:46
Re: C# Nybegynder, HJÆLP!
Tak for dit indlæg. Jeg vil lige prøve det af engang imorgen.
Jeg siger tak.
Jeg siger tak.
Re: C# Nybegynder, HJÆLP!
Else if bygget på denne måde virker ret omstændeligt, da du altid er nød til at teste det meste af kæden for det du søger.
Jo dårligere karakteren er jo mere af kæden skal testes.
Det bliver også hurtigt ret uoverskueligt, tag og læs denne diskussion omkring if-else vs switch statements
https://stackoverflow.com/questions/670 ... er-than-if
I denne diskussion er det Java vi taler om, men hav i mente at C# er bygget med udgangspunkt fra Java.
Jo dårligere karakteren er jo mere af kæden skal testes.
Det bliver også hurtigt ret uoverskueligt, tag og læs denne diskussion omkring if-else vs switch statements
https://stackoverflow.com/questions/670 ... er-than-if
I denne diskussion er det Java vi taler om, men hav i mente at C# er bygget med udgangspunkt fra Java.
Re: C# Nybegynder, HJÆLP!
Der er dog tale om intervaller og ikke bare enkelte tal som switch-statements som regelt forventer. C# 7 kommer dog med fede opdateringer til switch, hvor det nok er muligt med en guard der tester om værdien er i intervallet. Jeg tror dog det vil være ækvivalent med if-else, da jeg tvivler på at der kan foretages et lookup som ved almindelige switch-statements. https://devblogs.microsoft.com/dotnet/n ... d765048836cristian skrev: ↑4. mar 2019, 09:15Else if bygget på denne måde virker ret omstændeligt, da du altid er nød til at teste det meste af kæden for det du søger.
Jo dårligere karakteren er jo mere af kæden skal testes.
Det bliver også hurtigt ret uoverskueligt, tag og læs denne diskussion omkring if-else vs switch statements
https://stackoverflow.com/questions/670 ... er-than-if
I denne diskussion er det Java vi taler om, men hav i mente at C# er bygget med udgangspunkt fra Java.
Re: C# Nybegynder, HJÆLP!
Jeg kan selvfølgelig godt se hvad du mener. Jeg ved ikke hvor omstændigt det er da jeg ikke selv har testet det, men man kunne kigge på f.eks. Dette eksempel.
Tænker der er en bedre løsning end if else efter hinanden, selvom at det ikke nødvendigvis denne. Men det giver inspiration.
Kode: Vælg alt
case 1: case 2: case 3: case 4: case 5:
System.out.println("testing case 1 to 5");
break;
case 6: case 7: case 8: case 9: case 10:
System.out.println("testing case 6 to 10");
break;
default:
System.out.println("default");
Re: C# Nybegynder, HJÆLP!
Tja, jeg synes det er overkill at overveje performance/vedligeholdelse for eksemplet ovenfor. Hvis algoritmen skulle køre på et ukendt input, så kunne man overveje en smartere søgning med en træ-struktur eller lignende.cristian skrev: ↑4. mar 2019, 19:37Jeg kan selvfølgelig godt se hvad du mener. Jeg ved ikke hvor omstændigt det er da jeg ikke selv har testet det, men man kunne kigge på f.eks. Dette eksempel.
Tænker der er en bedre løsning end if else efter hinanden, selvom at det ikke nødvendigvis denne. Men det giver inspiration.Kode: Vælg alt
case 1: case 2: case 3: case 4: case 5: System.out.println("testing case 1 to 5"); break; case 6: case 7: case 8: case 9: case 10: System.out.println("testing case 6 to 10"); break; default: System.out.println("default");
Re: C# Nybegynder, HJÆLP!
Det er min erfaring at det er oftest det der leder os til gode og effektive løsninger.Tja, jeg synes det er overkill at overveje performance/vedligeholdelse for eksemplet ovenfor.
Re: C# Nybegynder, HJÆLP!
Jeg siger ikke at man ikke skal overveje performance/vedligeholdelse generelt.
Men for eksemplet her i tråden, giver det ikke mening at optimere if/else, og da slet ikke ved at plastre koden til med switch-cases.
Karakter-systemet ændrer sig nok ikke, og hvis det gør kræver det ikke den store indsats at rette mit snippet til.
Mit snippet udnytter desuden allerede at der kun behøves én sammenligning per interval, hvilket er muligt da der ikke er huller i intervallerne.