Kezdőoldal » Számítástechnika » Programozás » Többdimenziós tömbnél a...

Többdimenziós tömbnél a buborékos rendezést hogyan lehetne megoldani? Ezt dobja ki mindig: System. IndexOutOfRangeException: 'Az index a tömb határain kívülre mutatott. ' (a forráskód lent)

Figyelt kérdés

https://

pastebin

.com/BqWmj01q


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace Komplex

{

class Program

{

static double[,] egyhet = new double[7, 3];

static double sum = 0;

static double atlag;


static void Main(string[] args)

{

//a héten három napszakra bontva a napot bekérjük a hőmérsékletet, átlagot számolunk, az értékeket sorba rendezzük buborékos rendezéssel, fv-t használunk, for, foreach, stb.-t szintén, valamint listába vesszük a napokat is és az alapján kérünk be adatot


List<String> napok = new List<string>();

napok.Add("hétfő");

napok.Add("kedd");

napok.Add("szerda");

napok.Add("csütörtök");

napok.Add("péntek");

napok.Add("szombat");

napok.Add("vasárnap");



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

{

//Console.Write("A {0}i nap ", napok[i]);

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

{

Console.Write("A {0}i nap {1}. napszakában mért érték: ", napok[i], j + 1);

egyhet[i, j] = Convert.ToDouble(Console.ReadLine());

}

}


double sum = sum1();


double atlag = atlagszamitas();


Console.WriteLine("A hét átlaghőmérséklete: {0} Celsius fok.",atlag);



//leghűvösebb nap és ennek hőmérséklete

double min_ertek = egyhet[1, 1];

string min_hely = napok[1];

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

{

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

{

if(min_ertek>egyhet[i, j])

{

min_ertek = egyhet[i, j];

min_hely = napok[i];

}

}

}

Console.WriteLine("A {0}i napon volt a leghűvösebb, {1} fok.",min_hely,min_ertek);


//legmelegebb nap és ennek hőmérséklete

double max_ertek = egyhet[1,1];

string max_hely = napok[1];

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

{

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

{

if (max_ertek<egyhet[i,j])

{

max_ertek = egyhet[i, j];

max_hely = napok[i];

}

}

}

Console.WriteLine("A {0}i napon volt a legmelegebb, {1} fok.", max_hely, max_ertek);



//bekért értékek sorba rendezése buborékos rendezéssel


double seged;


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

{

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

{

if(egyhet[i-1, j-1] > egyhet[i, j]) //ha az egyhet[] nagyobb mint az utána lévő elem, akkor felcseréljük

{

seged = egyhet[i + 1, j + 1];

egyhet[i + 1, j + 1] = egyhet[i, j];

egyhet[i, j] = seged;

}

}

}


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

{

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

{

Console.WriteLine(egyhet[i,j]);

}

}



Console.ReadKey();

}

static double sum1()

{

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

{

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

{

sum += egyhet[i, j];

}

}

return sum;

}


static double atlagszamitas()

{

atlag = sum / egyhet.Length;

return atlag;

}

}

}


2019. júl. 17. 11:38
 1/8 anonim ***** válasza:
100%
Ne hivatkozz tömbön kívüli elemre. Ha egy tömb 10 elemből áll, akkor 0-9. elemig hivatkozhatsz. Több dimenziós tömbnél is hasonlóan kell eljárni.
2019. júl. 17. 11:46
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
Hogyan értelmezed több dimenzión a rendezettséget?
2019. júl. 17. 11:56
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
100%

if(egyhet[i-1, j-1] > egyhet[i, j])


Hatigen, vannak itt bajok. Ha az elso dimenzio a nap, masodik a 3 napszak es az ertek a homerseklet, akkor mi ertelme lenne sorba rendezni a homersekleteket, azaz pl. a csutortok deli homerseklet a legnagyobb (vagy legkisebb), akkor azt beallitani, mint hetfo reggeli homerseklet? :D Ha tenyleg egy ilyen novekvo/csokkeno sorrendre van szukseged az osszes homerseklettel, akkor gyujtsd ki a homersekleteket egy egydimenzioju tombbe, hiszen mar nincs ertelme azokat naphoz/napszakhoz tarsitani!

2019. júl. 17. 12:28
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:

Köszönöm a válaszokat!


Időközben nekem is eszembe jutott, hogy egy tömbbe rakjam őket és azt rendezzem.


Egyébként tudom, a feladathoz egyáltalán nem passzol és értelme sincsen, viszont gyakorlás képpen csinálom, hogy legyen benne minden egy feladatban, most ez a lényeg.


Ment a zöld kéz!

2019. júl. 17. 12:34
 5/8 anonim ***** válasza:
Csak ha értelmetlen dolgokat csinálsz az nem gyakoroltat semmit, mert később semmilyen valódi problémára nem tudod majd alkalmazni.
2019. júl. 17. 12:37
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:

Tudsz esetleg valami praktikus feladatgyűjteményt? Nehéz feladatokat és kihívásokat szeretnék.

Egyébként nem sok ideje kezdtem el tanulni programozni, ezért látszódom bénának, bocsi.

2019. júl. 17. 12:41
 7/8 anonim ***** válasza:
Ezer ilyen van a neten, csak rá kell guglizni.
2019. júl. 17. 12:43
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:
Én a Codewars-t szerettem meg, számomra van benne kihívás, de sikerélmény is, és miután megoldottad, megmutatja a többiek megoldásait, amiből sokat lehet tanulni.
2019. júl. 17. 12:48
Hasznos számodra ez a válasz?

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!