Permalänk
Medlem

Få fram medelvärdet C#

Hej. har fastnat på en uppgift och tänkte kolla ifall det finns någon som kan hjälpa till.

Det är så att i uppgiften så ska man skriva in en kod som räknar ut medelvärdet av inmatade tal. Har försökt att ändra till i koden men utan lycka därmed har jag gett sum värdet 0 så jag kunde köra programmet och se ifall det finns andra problem.

class Program { static int RullaTärning(Random slumpObjekt) { int tal = slumpObjekt.Next(7); return tal; } static void Main() { Random slump = new Random(); List<int> tärningar = new List<int>(); Console.WriteLine("\n\tVälkommen till tärningsgeneratorn!"); bool kör = true; while (kör) { Console.WriteLine("\n\t[1] Rulla tärning\n" + "\t[2] Kolla vad du rullade\n" + "\t[3] Avsluta"); Console.Write("\tVälj: "); int val; int.TryParse(Console.ReadLine(), out val); switch (val) { case 1: Console.Write("\n\tHur många tärningar vill du rulla: "); bool inmatning = int.TryParse(Console.ReadLine(), out int antal); if (inmatning) { for (int i = 0; i < antal; i++) { tärningar.Add(RullaTärning(slump)); } } break; case 2: int sum = 0; if (tärningar.Count < 0) { Console.WriteLine("\n\tDet finns inga sparade tärningsrull! "); } else { Console.WriteLine("\n\tRullade tärningar: "); foreach (int tärning in tärningar) { Console.WriteLine("\t" + tärning); } Console.WriteLine("\n\tMedelvärdet på alla tärningsrull: " + sum); } break; case 3: Console.WriteLine("\n\tTack för att du rullade tärning!"); Thread.Sleep(1000); kör = false; break; default: Console.WriteLine("\n\tVälj 1-3 från menyn."); break; } } } } }

Permalänk
Medlem

din kod känns som ett hopklipp av gamla rester

T.ex. så anropar du inte din slumpfunktion och case-satsen hänger i luften.

Du får göra ett bättre försök, så kan vi hjälpa dig o rätta felen

// LZ

Permalänk
99:e percentilen

Använd [code] när du klistrar in kod, så att det går att läsa den. Exempel:

[code]
int x = 42;
[/code]

En hint: Din lösning bör innehålla en funktion static double average(int[] numbers) eller något sådant.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem

@Alling: Tack för tipset, tyckte själv att det såg löjligt och svårläst ut när jag först skrev det

Permalänk
Medlem
Skrivet av Tea42BBS:

din kod känns som ett hopklipp av gamla rester

T.ex. så anropar du inte din slumpfunktion och case-satsen hänger i luften.

Du får göra ett bättre försök, så kan vi hjälpa dig o rätta felen

// LZ

Hmmm, förstår inte exakt vad du menar men har nu ändrat lite och tagit med hela koden för att vara så tydligt som möjligt

Permalänk
Medlem

@Aghani: Du har ju redan löst den svåra biten, att lagra alla tärningsslag i en lista, och du vet ju uppenbarligen hur du loopar igenom den listan. Så vad är det du fastnar på egentligen? Hur skulle du göra om du skulle räkna ut medelvärdet för hand?

Permalänk
Medlem
Skrivet av perost:

@Aghani: Du har ju redan löst den svåra biten, att lagra alla tärningsslag i en lista, och du vet ju uppenbarligen hur du loopar igenom den listan. Så vad är det du fastnar på egentligen? Hur skulle du göra om du skulle räkna ut medelvärdet för hand?

Det jag har fastnat på är att jag inte vet hur man får fram medelvärdet. Ja, för hand skulle det vara enkelt ,man tar summan av alla tärningar delat på antal rullningar. Det är detta jag har svårt med.

Permalänk
Inaktiv
Skrivet av Aghani:

Det jag har fastnat på är att jag inte vet hur man får fram medelvärdet. Ja, för hand skulle det vara enkelt ,man tar summan av alla tärningar delat på antal rullningar. Det är detta jag har svårt med.

du repeterar över listan och summerar talen
därefter dividerar du summan med listans längd

var list = [1, 2, 4]; int sum = 0; for (int i = 0; i < list.length; i++) sum += list[i]; int average = sum / list.length;

Det skulle kunna se ut ungefär så. Eller så använder du Linq och anropar list.Average();

Vad är det mer specifikt du inte kan förstå

Permalänk
Medlem
Skrivet av Aghani:

Det jag har fastnat på är att jag inte vet hur man får fram medelvärdet. Ja, för hand skulle det vara enkelt ,man tar summan av alla tärningar delat på antal rullningar. Det är detta jag har svårt med.

Du gör på exakt samma sätt i C#. Det är bara att loopa igenom alla tal, vilket du redan gör när du skriver ut dem, och addera varje värde till sum. Sen delar du bara sum med antalet element i listan, d.v.s. tärningar.Count.

Permalänk
Medlem
Skrivet av perost:

Du gör på exakt samma sätt i C#. Det är bara att loopa igenom alla tal, vilket du redan gör när du skriver ut dem, och addera varje värde till sum. Sen delar du bara sum med antalet element i listan, d.v.s. tärningar.Count.

int sum = 0; foreach (int t in tärningar) { sum += t; } var average = sum / tärningar.Count; Console.WriteLine("\nMedelvärdet är: " + average)

Kan detta stämma ? Skapat en variabel som man sedan delar med sum och t är skriven som tärningar?

Permalänk
Medlem
Skrivet av Aghani:

int sum = 0; foreach (int t in tärningar) { sum += t; } var average = sum / tärningar.Count; Console.WriteLine("\nMedelvärdet är: " + average)

Kan detta stämma ? Skapat en variabel som man sedan delar med sum och t är skriven som tärningar?

ser bra ut tycker jag! I mitt tidigare svar så menade jag att det inte gick att följa din logik då du saxat loss koden.

Glöm inte att tömma Tärningar listan mellan varje komplett omgång - om man skall kunna köra programmet flera ggr

// Lazze

Permalänk
Medlem

Jag vet att jag är OT, men jag tycker det finns många anledningar att alltid hålla sig till engelska. Varav den största är att lära sig rätt ifrån början, du kommer aldrig kunna skriva något på svenska hos ett seriöst företag då dessa har många anställda ifrån olika länder.

Och lär man sig rätt ifrån början så kommer det sitta när man väl får en anstälning efter utbildningen, i dessa dagar där det behövs x-antal tusen nya utvecklare för att fylla marknaden plockas många ifrån andra länder och då är engelska ett krav.

Kanske bara är jag, men detta är något jag irriterar mig på. och skulle personligen aldrig röra något som inte skritivs på engelska.

Permalänk

@Aghani: Jag måste bara få fråga, löste du uppgiften? Sitter själv med samma nu och börjar känna mig lite dum i huvudet

Permalänk
Medlem
Skrivet av Nalletossan:

@Aghani: Jag måste bara få fråga, löste du uppgiften? Sitter själv med samma nu och börjar känna mig lite dum i huvudet

Jag tror du stirrar dig bild på problemet, som diskuterats ovan så försök tänk hur du gör för hand.
Skriv ner det på papper typ

2+6+1+3+3+5=20

20/6=3.33333...

Nu tänk på vilka sätt du smidigt kan göra dessa steg, stressa inte, försök bryta ner problemet i mindre delar.

Skickades från m.sweclockers.com

Visa signatur

"One is always considered mad, when one discovers something that others cannot grasp."
- Ed Wood

Permalänk
Hedersmedlem
Skrivet av gonace:

Jag vet att jag är OT, men jag tycker det finns många anledningar att alltid hålla sig till engelska. Varav den största är att lära sig rätt ifrån början, du kommer aldrig kunna skriva något på svenska hos ett seriöst företag då dessa har många anställda ifrån olika länder.

Och lär man sig rätt ifrån början så kommer det sitta när man väl får en anstälning efter utbildningen, i dessa dagar där det behövs x-antal tusen nya utvecklare för att fylla marknaden plockas många ifrån andra länder och då är engelska ett krav.

Kanske bara är jag, men detta är något jag irriterar mig på. och skulle personligen aldrig röra något som inte skritivs på engelska.

Det är inte en universalsanning att all kod är skriven på engelska.

Jag var så sent som igår inne i en databas för ett välkänt ärendehandehanteringssystem för advokater där alla termer är på svenska. Det finns till exempel en tabell som heter "Ärenden".

Jag har även sett kod som hanterar ekonomisystem som är skriven till 100% på engelska. Vilket bara blir extra krångligt då det finns en massa bokföringstermer på svenska som bara blir konstiga när man översätter dem till engelska.

Jag skulle hålla med om att engelska ofta är ett bra val, men om det handlar om affärssystem eller något annat system där det redan finns en väl etablerad jargong på svenska, och den på engelska inte alls är etablerad, kan det vara logiskt att använda detta istället.

Som ett exempel, vad är ett bättre namn på en funktion som kollar om ett personnummer är giltigt? Är det kontrolleraPersonnummer eller är det validateSwedishPersonalIdentityNumber? Ännu värre om man försöker på att hitta på en "egen" engelsk översättning av ett begrepp som inte stämmer med det vedertagna.

Här är det alltså bra att vara pragmatisk, det finns inte bara ett rätt svar. Precis som att det inte finns ett enda programmeringsspråk som är bäst för alla applikationer.

(Förutom när man installerar en Windows-server. Den installeras på Engelska så att felmeddelanden är begripliga (inte felöversatta) och googlebara. Men det hör inte hit.)

Permalänk

@Ferrat: Tack, det lossnade tillslut så jag har redan löst det

Permalänk
Medlem

@Nalletossan: Super Det är typ standard approachen i programmering oavsett, skriv upp, bryt ner, skapa en funktion för varje sak och sätt ihop

Visa signatur

"One is always considered mad, when one discovers something that others cannot grasp."
- Ed Wood

Permalänk
Medlem
Skrivet av pv2b:

Som ett exempel, vad är ett bättre namn på en funktion som kollar om ett personnummer är giltigt? Är det kontrolleraPersonnummer eller är det validateSwedishPersonalIdentityNumber?

Just frågan kring saker så som dokumentation är i många fall väldigt personliga och finns många "rätt" sätt som likväl kan vara "fel" för någon annan, så jag skulle inte säga att jag påstod att det var en universal sanning.

När det kommer till jargonger så är de inte fackmässiga och jargonger bör ALDRIG användas då jargonger kan betyda olika saker för olika personer, de jargonger som finns i Sverige finns inte alltid i Svensktalande delarna av Finland, när det kommer till affärssystem finns termer som är godkända. När det kommer till dokumentation av lokala ord som inte översätts bra, brukar jag oftast skriva med det svenska ordet om det är ett väldigt specifikt ord som inte används i andra länder.

Skulle aldrig skriva metoder på svenska eller ha med lokaliseringar i metodnamnet, det går att lösa antingen via arv där man har en bas-klass med en metod för validering (Validate) eller att klassnamnet beskriver lokaliseringen men metoden är den samma.

Då är det lättare att med hjälp av localization välja rätt klass (validator), och då man vet att alla dessa klasser (validatorer) har samma metodnamn, med enkelhet inte behöver bry sig så mycket om själva valideringen utan bara implementationen av valideringen.

Men som jag skrev i början, hur man dokumenterar och vad man dokumenterar har och kommer nog alltid vara lite av ett svårt ämne då månag tycker väldigt olika.