Permalänk
Medlem

Fel i koden

Hej!
Är det någon här som kan hjälpa mig att hitta femte felet i koden nedan.
Det finns 5 fel, jag har hittat 4 men lyckas inte hitta den 5:e..
FEL 1: Rad 12, saknar variabel typ och kan åtgärdas om vi lägger till ett int framför loop=0;
FEL 2: Rad 24, metodanropet är skriven med små bokstäver, metodanropet ska skrivas med stora bokstäver som det står på rad 30.
FEL 3: Rad 35, Return är felskrivet, ska skrivas med småbokstäver return.
FEL 4: Rad 32, int summa behöver ha ett värde och det värdet ska vara 0. Summa ska adderas med de värden användaren lägger in och måste vara 0 för att det ska bli rätt resultat.

Någon som ser den 5:e..?

Permalänk
Medlem

Mitt tips är att kolla på if-satsen på rad 19.

Permalänk
Medlem

Metoden kommer inte kunna returnera eventuella decimaler. Kanske är det femte "felet".

Permalänk
Medlem

Är det här en skoluppgift? I så fall är jag glad att jag inte studerar programmering.

Permalänk
Medlem

Först tänker jag påstå att en av sakerna som du påstår är fel inte är fel.

Sedan tänker jag öka på förvirringen med följande: Om man anger tillräckligt stora heltal så kommer man få overflow i medelvärdesberäkningen. Till exempel om man anger int.MaxValue/2 tre gånger. Man hade behövt använda en större typ för summan. För att skjuta problemet en bit framför sig i alla fall.

Varsågod

Permalänk
Medlem
Skrivet av KAD:

Först tänker jag påstå att en av sakerna som du påstår är fel inte är fel.

Det får du nog utveckla i så fall, alla fyra fel som TS hittat ser ut att vara korrekta vad jag kan se.

Permalänk
Medlem

Svaret är ju uppenbart:
1. resultat, summa och sum är inte namngivna på ett godtagbart sätt
2. summa och sum deklareras i ett för brett scope för deras användningsområde
3. tilldelning av summa är separerad från deklaration utan god anledning
4. poänglös tilldelning på rad 35
5. TryParse används på ett sätt som tyst döljer problem som uppkommer som följd av felaktig inmatning

EDIT: Det ser inte ut att vara särskilt nära att kompilera heller, men det är ju ett jämförelsevis litet problem eftersom kompileringsfel aldrig riskerar att bli långvariga problem.

Permalänk
Medlem
Skrivet av perost:

Det får du nog utveckla i så fall, alla fyra fel som TS hittat ser ut att vara korrekta vad jag kan se.

Skrivet av ivana89:

FEL 4: Rad 32, int summa behöver ha ett värde och det värdet ska vara 0. Summa ska adderas med de värden användaren lägger in och måste vara 0 för att det ska bli rätt resultat.

Stämmer, där hade jag otur när jag tänkte. Lokala variabler initieras inte till default(int) (som är 0), det händer bara på medlemmar i klasser. Fel 4 leder därför mycket riktigt till ett kompileringsfel. Så - fel av mig.

Permalänk
Medlem

Hej alla och tack så mycket för att ni tar er till att hjälpa till och är snabba på det:D
Ja, det var en skoluppgift, eller snarare slutprov i Programmering 1.. där jag hade 4 av 5 rätt.
Jag skulle tänka efter vart den 5:e felet fanns innan betygssamtalet, men kunde inte hitta några andra fel.. medans jag fokuserade på alvarligare fel så missade jag if-satsen på rad 19 som "dopedog" tipsar om; där saknades klammerparanteser och jag misslyckades att få 5 av 5 rätt pga något så enkelt och uppenbart :(((
Tack än en gång!!!

Permalänk
Entusiast
Skrivet av ivana89:

medans jag fokuserade på alvarligare fel så missade jag if-satsen på rad 19 som "dopedog" tipsar om; där saknades klammerparanteser och jag misslyckades att få 5 av 5 rätt pga något så enkelt och uppenbart :(((

Du kan trösta dig med att åtminstone jag, som hållit på med programmering sedan högstadiet, läst ett masterprogram med fokus på programmeringsspråk och arbetar som mjukvaruingenjör, skulle säga att om det är något av de aktuella felen som inte är ”enkelt och uppenbart” är det just det där!

Syntaxfel och (statiska) typcheckningsfel är i praktiken inga stora problem, oavsett språk, så snart man kommit förbi nybörjarstadiet. I värsta fall får man fråga någon om hjälp, men det finns ingen risk att sådana fel slinker med in i kodbasen och orsakar problem i produktion. Däremot det oacceptabla oskicket att skriva if-satser på formen

if (condition) DoSomething();

kan fälla vilken erfaren programmerare som helst – särskilt en som inte känner just det aktuella språket som sin egen ficka.

I just det fall du tar upp i trådstarten blir man ”räddad” av else, som ger upphov till ett syntaxfel, men i allmänhet (utan else) är det som upplagt för att någon (inklusive man själv!) senare ska göra en ändring i stil med

if (condition) DoSomething(); + DoSomethingElseToo();

och en sådan bugg kan både gå under radarn under lång tid samt vara förvånansvärt frustrerande att felsöka. Den som tycker att det är uppenbart varför det blir fel efter ovanstående ändring bör inte ha några invändningar mot ett helt program skrivet på en enda rad, helt utan radbrytningar, indentering eller annan whitespace.