Kezdőoldal » Számítástechnika » Programozás » C# -ban lévő matrix (tömb)...

C# -ban lévő matrix (tömb) fel van töltve, és ebből kéne nekem az oszlopokat összeadnom egy újabb vektorba. Ehhez szeretnék segítséget kérni Próbálkoztam // eredmeny[j] = eredmeny[j]+szorzat[i, j];// egy ilyennel, de nem működik. Tudnátok segíteni?

Figyelt kérdés

2016. dec. 11. 20:49
 1/6 anonim ***** válasza:
A nem működik elég tág fogalom...
2016. dec. 11. 20:52
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:
A problémám csak az vele, hogy kiír pár felesleges sort, összeadni összeadja a dolgokat de azt matrixként írja ki, nem pedig egy sorba vektorként.
2016. dec. 11. 21:10
 3/6 |Orfeusz| ***** válasza:
40%

A kétdimenziós tömb elképzelhető táblázatként. A külsőtömbtömb-ben vannak belsőtömb elemek.


Ha a belsőtömb-öket sornak veszed a táblázatodban, akkor egy n. oszlop az összes belsőtömb n. elemét fogja tartalmazni.

Inicializálj egy nullákból álló, sorok_száma méretű tömböt eredmeny néven.

FOR ciklus (i<sorok_száma, i++) {

FOR ciklus (j<oszlopok_száma, j++) {

eredmeny[i] += matrix[i][j]

// nézd meg, a cellára úgy hivatkozok, hogy tömb[sorsz][oszlsz]

}}


Ha a belsőtömbök az oszlopok (mert így is lehet értelmezni), akkor máshogy kell.

Ilyenkor a cellára így lehet hivatkozni: tömb[oszlsz][sorsz]


FOR ciklus (j<oszlopok_száma, j++) {

FOR ciklus (i<sorok_száma, i++) {

eredmeny[i] += matrix[j][i]

}

}

2016. dec. 11. 21:15
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:

Console.Write("Add meg a tömb sorainak számát: ");

int n = Convert.ToInt32(Console.ReadLine());

Console.Write("Add meg a tömb oszlopainak számát: ");

int m = Convert.ToInt32(Console.ReadLine());

Random rnd = new Random();


int[,] tomb = new int[n, m];

int[] vektor = new int[n];

int[,] szorzat = new int[n, m];

int[] eredmeny = new int[m];


Console.Write("\n\nA vektor elemei:\n");

for (int i = 0; i < n; i++)

{

vektor[i] = rnd.Next(1, 10);

Console.Write("{0,4}", vektor[i]);

}


Console.Write("\n\nA tömb elemei:\n");


for (int i = 0; i < n; i++)

{

for (int j = 0; j < m; j++)

{

tomb[i, j] = rnd.Next(1, 10);

Console.Write("{0,4}", tomb[i, j]);

}

Console.WriteLine();

}


Console.Write("\n\nA szorzatok elemei:\n");


//szorzás


for (int i = 0; i < n; i++)

{

for (int j = 0; j < m; j++)

{

szorzat[i, j] = tomb[i,j] * vektor[i];

Console.Write("{0, 4}", szorzat[i, j]);

}

Console.WriteLine();

}


Console.Write("\n\nAz oszlopok összege:\n");


//összeadás


for (int j = 0; j < n; j++)

{


for (int i = 0; i < m; i++)

{

eredmeny[j] = eredmeny[j]+=szorzat[i,j];

Console.Write("{0, 4}", eredmeny[i]);


}

Console.WriteLine();

}



Console.ReadLine();


Ennyit tudtam megcsinálni, de ha lefuttatom végén több sort ír ki mint amennyire nekem szükségem lenne.

2016. dec. 11. 21:33
 5/6 anonim ***** válasza:
Mivel a kiíratást a belső ciklusba raktad, így nyilván az összes mátrix elemre ki fogja írni az aktuális összeget.
2016. dec. 11. 21:47
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:
Óóó én hülye, annyira belefeledkeztem hogy mindig oda kellett írni, hogy nem néztem. Most már jó, köszönöm szépen :)
2016. dec. 11. 21:51

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!