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)
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;
}
}
}
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!
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!
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!