Vinnaren i pepparkakshustävlingen!
2016-09-19, 16:02
  #1
Medlem
Jag har en uppgift i C# där man ska räkna addition med matriser..
jag ska alltså göra addition med 2st 2x2 tabeller och skriva ut värdet i den 3e tabellen av samma storlek. Additionen går ut på att första raden och första kolumnen ska adderas med samma ruta i nästa tabell och skrivas ut i samma ruta i den sista tabellen..
Problemet är att jag lyckas inte göra plus med rätt array.
Jag skapade en metod som ser ut såhär

public int addArrays(int[,] a, int[,] b])
{
int sum = 0;
int x = 0;
int i = 0;
sum = a[i, x] + b[i, x];
return sum;
}


I min knapp som heter "bräkna" gör jag såhär:

forstaArray[0, 0] = int.Parse(uppeVansterForsta.Text);
andraArray[0, 0] = int.Parse(uppeVansterAndra.Text);
.
.
.
uppeHagerSvar.Text = AddArrays(forstaArray, andraArray).ToString();

Detta funkar med skriva ut med skriva ut en gång. Men om jag skriver in tex [1, 0] OCKSÅ. Så kommer den bara köra från första array som matats in.
Så på något sätt måste jag göra om min metod för kunna plocka ut värdet från en viss plats i tabllen och addera med den andra för sen lagra med en variabel. men jag sitter fast. Help me?

Hoppas ni förstår?!
Citera
2016-09-19, 16:45
  #2
Medlem
nedboys avatar
Vid snabb överblick så ser jag att du inte itererar (loopar). Är inte det ett problem tror du?
Citera
2016-09-19, 17:19
  #3
Medlem
MeanMEs avatar
Citat:
Ursprungligen postat av callecarl
Jag har en uppgift i C# där man ska räkna addition med matriser..
jag ska alltså göra addition med 2st 2x2 tabeller och skriva ut värdet i den 3e tabellen av samma storlek. Additionen går ut på att första raden och första kolumnen ska adderas med samma ruta i nästa tabell och skrivas ut i samma ruta i den sista tabellen..
Problemet är att jag lyckas inte göra plus med rätt array.
Jag skapade en metod som ser ut såhär

public int addArrays(int[,] a, int[,] b])
{
int sum = 0;
int x = 0;
int i = 0;
sum = a[i, x] + b[i, x];
return sum;
}


I min knapp som heter "bräkna" gör jag såhär:

forstaArray[0, 0] = int.Parse(uppeVansterForsta.Text);
andraArray[0, 0] = int.Parse(uppeVansterAndra.Text);
.
.
.
uppeHagerSvar.Text = AddArrays(forstaArray, andraArray).ToString();

Detta funkar med skriva ut med skriva ut en gång. Men om jag skriver in tex [1, 0] OCKSÅ. Så kommer den bara köra från första array som matats in.
Så på något sätt måste jag göra om min metod för kunna plocka ut värdet från en viss plats i tabllen och addera med den andra för sen lagra med en variabel. men jag sitter fast. Help me?

Hoppas ni förstår?!
Skicka med några index till ditt metodanrop med.
Annars kommer ju AddArrays att returnera samma värde hela tiden.

E.g:

AddArrays(int[,] a, int[,] b, int indexA0, int indexA1, indexB0, indexB1)
{
return a[indexA0, indexA1] + b[indexB0, indexB1];
}

Sedan anropar du den med så många anrop och olika varianter du vill från "bräkna"

E.g;

AddArrays( minArrayA, minArrayB, 0 , 0, 0, 0);

Om du då har i:
minArrayA
8, 5
6, 8

minArrayB
19, 6
-8, 4

Bör resultatet bli 27, 8 + 19.
__________________
Senast redigerad av MeanME 2016-09-19 kl. 17:21.
Citera
2016-09-19, 18:02
  #4
Medlem
Tjena MeanMe!

Jag förstår vad du menar med din kod. Tyvärr går de inte lösa då de returnerade värdet måste vara en " [,] ". Alltså en 2D array.
Den säger bara (just på raden return a[IndexA0, IndexA1]..... att de inte går omvandla en int till en int[])

Så jag måste troligen spara den i en [,] (eller?)..
För sen returnera den 2D arrayen
Citera
2016-09-19, 18:39
  #5
Medlem
MeanMEs avatar
Citat:
Ursprungligen postat av callecarl
Tjena MeanMe!

Jag förstår vad du menar med din kod. Tyvärr går de inte lösa då de returnerade värdet måste vara en " [,] ". Alltså en 2D array.
Den säger bara (just på raden return a[IndexA0, IndexA1]..... att de inte går omvandla en int till en int[])

Så jag måste troligen spara den i en [,] (eller?)..
För sen returnera den 2D arrayen
Du gör så här:

minArrayC[0, 0] = AddArrays( minArrayA, minArrayB, 0 , 0, 0, 0);
minArrayC[0, 1] = AddArrays( minArrayA, minArrayB, 0 , 1, 0, 1);
minArrayC[1, 0] = AddArrays( minArrayA, minArrayB, 1 , 0, 1, 0);
minArrayC[1, 1] = AddArrays( minArrayA, minArrayB, 1 , 1, 1, 1);

Eller om du vill skicka hela vektorn får du definiera om din metod.
Som du skriver den nu:
public int addArrays(int[,] a, int[,] b)
så returnerar du ju en int.

Vill du att den skall returnera en array får du definiera om den till:

public int[,] addArrays(int[,] a, int[,] b)

då returnerar den en 2D array i return och koden blir enligt följande:

public int[,] addArrays(int[,] a, int[,] b)
{
int[,] c = new int[2, 2];

c[0, 0] = a[0, 0] + b[0, 0];
c[0, 1] = a[0, 1] + b[0, 1];
c[1, 0] = a[1, 0] + b[1, 0];
c[1, 1] = a[1, 1] + b[1, 1];

return c;
}

Anropas då enligt:
minArrayC = addArrays(minArrayA, minArrayB)
__________________
Senast redigerad av MeanME 2016-09-19 kl. 18:45. Anledning: Slarvig
Citera
2016-09-19, 19:54
  #6
Medlem
jag förstår vad du menar, men de kommer tyvärr inte funkar.. Då siffran som ska vara i min array matas in via en textruta i designen kommer den lagras med tex

forstaArray[0, 0] = int.Parse(uppeVansterForsta.Text);


Därför kommer de inte gå att skriva så.
Den kommer bara räkna på värdet i en array. Inte utifrån position [0, 0] eller tex positon [1, 1]. Det är där mitt stora problem ligger..

Ett värde ska matas in i en textruta och få tex variabel
FörstaArrayen[0, 0] = int.Par......

Jag förstår metoden du skapade. Men den kommer inte gå att genomföra då, av någon anledning, de inte gick att mata in Tex
addArrays(forstaArray[0, 0], andraArray[0, 0]).ToString();
Citera
2016-09-20, 06:52
  #7
Medlem
MeanMEs avatar
Citat:
Ursprungligen postat av callecarl
jag förstår vad du menar, men de kommer tyvärr inte funkar.. Då siffran som ska vara i min array matas in via en textruta i designen kommer den lagras med tex

forstaArray[0, 0] = int.Parse(uppeVansterForsta.Text);


Därför kommer de inte gå att skriva så.
Den kommer bara räkna på värdet i en array. Inte utifrån position [0, 0] eller tex positon [1, 1]. Det är där mitt stora problem ligger..

Ett värde ska matas in i en textruta och få tex variabel
FörstaArrayen[0, 0] = int.Par......

Jag förstår metoden du skapade. Men den kommer inte gå att genomföra då, av någon anledning, de inte gick att mata in Tex
addArrays(forstaArray[0, 0], andraArray[0, 0]).ToString();
Jag förstår inte vad du menar.
Tyvärr.
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