Vinnaren i pepparkakshustävlingen!
2017-11-27, 10:22
  #1
Medlem
MataRengis avatar
Antag att jag har en matris definierad som
int[,] xxxx = new int[3,3] { { 1, 2, 3 }, { 2, 3, 4 }, { 3, 4, 5 } }; ;

Antag vidare att jag vill ha medelvärdet av dessa tal.
Jag prövar med
int ave = xxxx.Average();
Syntaxfel. Jag prövar med
int ave = xxxx.Sum();
Syntaxfel. Jag prövar med
int len = xxxx.Length;
Funkar bra och ger värdet 9.

Så då återstår det att loopa runt i matrisen och addera för att sen dividera med len.
Eller har jag missat nåt?
Citera
2017-11-27, 12:25
  #2
Medlem
Citat:
Ursprungligen postat av MataRengi
Så då återstår det att loopa runt i matrisen och addera för att sen dividera med len.
Eller har jag missat nåt?
det verkar sunt & korrekt. Vilket språk programmerar du i?
Citera
2017-11-27, 13:01
  #3
Medlem
MataRengis avatar
Citat:
Ursprungligen postat av Vattu
det verkar sunt & korrekt. Vilket språk programmerar du i?

Jag försöker i C#.

Tror du man kan göra nåt i LINQ för att få fram ett snabbt average...?
Citera
2017-11-27, 16:49
  #4
Medlem
Sane?s avatar
Kod:
var xxxx = new[] { new[] { 1, 2, 3 }, new[] { 1, 2, 3 }, new[] { 1, 2, 3 } };
var avg = xxxx.SelectMany(x => x).Average();
Citera
2017-11-27, 18:10
  #5
Medlem
Hur definierar du medelvärdet av en matris? Ska returtypen vara en matris, eller en skalär?
Citera
2017-11-27, 18:58
  #6
Medlem
Citat:
Ursprungligen postat av ybx
Hur definierar du medelvärdet av en matris? Ska returtypen vara en matris, eller en skalär?
En bra fråga, men eftersom hen skriver:

Citat:
Ursprungligen postat av MataRengi
Antag vidare att jag vill ha medelvärdet av dessa tal.
Så tolkar jag det som att hen vill ha en skalär.

Citat:
Ursprungligen postat av MataRengi
Jag försöker i C#.
Tror du man kan göra nåt i LINQ för att få fram ett snabbt average...?
Din pseudokod i först inlägget fungerar som sagt, men ett alternativ i LINQ som du frågar om skulle kunna vara:
Kod:
int[,] myArr = new int[3, 3] { { 1, 2, 3 }, { 2, 3, 4 }, { 3, 4, 5 } }; ;
var avg = myArr.Cast<int>().Average();
EDIT: Korrigerade fel.
EDIT 2: Det där är givetvis extension-metoder från linq-namespacet. Jag vet inte om det faktiskt var det du sökte.
__________________
Senast redigerad av Blippster 2017-11-27 kl. 19:05.
Citera
2017-11-27, 20:15
  #7
Medlem
Citat:
Ursprungligen postat av Sane?
Kod:
var xxxx = new[] { new[] { 1, 2, 3 }, new[] { 1, 2, 3 }, new[] { 1, 2, 3 } };
var avg = xxxx.SelectMany(x => x).Average();
Du har skapat en jagged array, inte en tvådimensionell array. Det är inte samma sak.
Citera
2017-11-27, 21:59
  #8
Medlem
MataRengis avatar
Citat:
Ursprungligen postat av ybx
Hur definierar du medelvärdet av en matris? Ska returtypen vara en matris, eller en skalär?

En vanlig sketen skalär. Medelvärdet på matrisen i exemplet blilr väl =3 om jag räknat rätt i huvet.

Citat:
Ursprungligen postat av Blippster
Din pseudokod i först inlägget fungerar som sagt, men ett alternativ i LINQ som du frågar om skulle kunna vara:
Kod:
int[,] myArr = new int[3, 3] { { 1, 2, 3 }, { 2, 3, 4 }, { 3, 4, 5 } }; ;
var avg = myArr.Cast<int>().Average();
EDIT: Korrigerade fel.
EDIT 2: Det där är givetvis extension-metoder från linq-namespacet. Jag vet inte om det faktiskt var det du sökte.

Ska titta vidare på det här! Tack!
__________________
Senast redigerad av MataRengi 2017-11-27 kl. 22:01.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback