- Apple Watch
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Apple iPhone 16 Pro - rutinvizsga
- Samsung Galaxy S23 Ultra - non plus ultra
- Samsung Galaxy A54 - türelemjáték
- Okosóra és okoskiegészítő topik
- Mégsem kap tükröződésmentes kijelzőt az iPhone 17 Pro
- Yettel topik
- Milyen okostelefont vegyek?
- Honor 200 Pro - mobilportré
Új hozzászólás Aktív témák
-
Peter Kiss
őstag
válasz
metrion #5031 üzenetére
Csak a rend kedvéért, ilyen random feltöltős dolgokat nem így szokás megoldani, hanem egy kicsivel más technikával:
class Program
{
private const int Dim1 = 5;
private const int Dim2 = 5;
private const int Start = 10;
private static int CalculateNumberCollectionRangeLength()
{
return Dim1 * Dim2;
}
static void Main()
{
var numberCollection = Enumerable.Range(Start, CalculateNumberCollectionRangeLength()).ToList();
var random = new Random();
var table = new int[Dim1, Dim2];
for (var i = 0; i < Dim1; i++)
{
for (var j = 0; j < Dim2; j++)
{
var selectedIndex = random.Next(0, numberCollection.Count);
table[i, j] = numberCollection[selectedIndex];
numberCollection.RemoveAt(selectedIndex);
}
}
}
}A lényeg, hogy egy generált halmazból választjuk random módra az elemeket, nem pedig random elemekkel dolgozunk.
-
trisztan94
őstag
válasz
metrion #5029 üzenetére
Könyörgöm, pár hsz.-el korábban magyaráztam el a kétdimenziós tömbök lényeget és be is linkeltem egy könyvet amiben utánajárhatsz a dolgoknak..
Meg ne várd mar el, hogy az idehányt kódrészleteket megcsináljuk. Normális kérdés jó lenne.. Pontosan mi a probléma, mit nem tudsz? Az, hogy nem működik, segítsetek nem a legjobb fajta kérdés, ezt te is bevallhatod..
-
trisztan94
őstag
válasz
metrion #5024 üzenetére
Na most vagy én vagyok nagyon fáradt, vagy te.
if (max > t[x, y])
{
max = t[x, y];
}Ez szavakkal leírva a következő:
HA max változó értéke NAGYOBB, mint az aktuálisan vizsgált tömbelem értéke
AKKOR
max értéke legyen az aktuálisan vizsgált tömbelem értékeTehát így sosem a legnagyobb lesz benne.
if (max < t[x, y])
{
max = t[x, y];
}Így ez lesz leírva:
HA max változó értéke KISEBB, mint az aktuálisan vizsgált tömbelem értéke
AKKOR
max értéke legyen az aktuálisan vizsgált tömbelem értékeMivel ha max kisebb, mint a vizsgált elem, így a nagyobb érték lesz a max értéke. Érted?
Ha így sem jó, akkor szvsz a program azon részével lesz gond, ahol feltöltöd a tömböt elemekkel.
-
trisztan94
őstag
válasz
metrion #5021 üzenetére
A max nevű változó nem létezik az aktuális kontextusban, ergó nincs definiálva.
static void Main(string[] args)
{
int[,] t = new int[5, 5];
int max = 0;
Random r = new Random();
Felt(t, r);
Kiir(t);
Console.WriteLine();
Console.WriteLine("A max: {0}", Max(ref max));
Kiir(t);
Console.ReadKey();
} -
trisztan94
őstag
válasz
metrion #5019 üzenetére
Első ránézésre: a ciklusokon kívülre rakd a return max-ot:
static int Max(int[,] t, ref int max)
{
for (int x = 0; x < 5; x++)
{
for (int y = 0; y < 5; y++)
{
if (max > t[x, y])
{
max = t[x, y];
}
}
}
return max;
}ha így sem jó, pakold fel a progit ide.
Ja és
if (max > t[x, y])
{
max = t[x, y];
}nem jó, helyette:
if (max < t[x, y])
{
max = t[x, y];
}Ugye ha nagyobb az elem, mint a max, akkor adjuk a max értékéül.
-
amargo
addikt
válasz
metrion #5014 üzenetére
Látod ez is a megoldások között van. Szépen alakul ez, esetleg a dimenzió méretét lekérdezhetnéd a ciklus feltételekben, ugyan feltételezed, hogy ki van töltve a tömb, de erre nem tudjuk mi a garancia. Az első sor után visszatérsz a max-al, de persze a többit még nem nézted meg, de szerintem itt csak elnézted a { jelet
-
trisztan94
őstag
válasz
metrion #5012 üzenetére
Ajánlom figyelmedbe Reiter István C# jegyzetét, abban benne vannak ezek elég érthető módon.
Azért leírom a maximum kiválasztás és kétdimenziós tömbök lényegét, elméleti alapon:
Van egy tömböd, legyen most kétdimenziós. Annak van x és y értéke. Az x a sorokat, az y az oszlopokat jelöli. A legcélszerűbb úgy haladni, hogy végigmész egy sor összes oszlopán, majd mész a következő sorra.
Tehát pl, ha a tömböd [5,5] nagyságú, akkor az azt jelenti, hogy 5 sor és 5 oszlop van benne. Kicsit olyasmi, mint az aknakereső felépítése, ott is sorokra és oszlopokra van felosztva a játéktér.
Na most azért kell neked 2 for ciklus, mert az egyikkel a sorokat, a másikkal pedig az oszlopokat lépteted. A külső ciklus a sorokat, a belső az oszlopokat.
for (int i = 0; i< 5; i++)
{
//ez a külső ciklusod.
for (int j = 0; j < 5; j++)
{
//ez a belső ciklusod
}
}Elkezdi a for ciklust, beállítja a sorszámot nullára, majd belép az első oszlopba a belső ciklussal, ott végrehajt egy műveletet, majd növeli a sorszámot egyel.
Na, így durván ennyi a kétdimenziós tömb lényege. Most vegyük át a maximum kiválasztást, ami baromi egyszerű. Az a lényeg, hogy megnézzük, hogy az oszlop értéke amiben vagyunk nagyobb-e a mi változónknál.
pl.
változónk értéke 100
itt a tömb, ahol tömb = [2,5], tehát 2 sor és 2 oszlop
1.sor
1. oszlop érték = 95. kisebb, mint 100, átugorjuk
2. oszlop érték 150. Nagyobb, mint 100, beálltjuk a változónk értékét erre az értékre (tehát változó = tömb[i,j])
3. oszlop érték 70. Nem nagyobb, átugorjuk
4. oszlop 1000. Nagyobb, berakjuk a változó értékének
5. oszlop 80 és ez így folytatódik tovább
2. sor
1. oszlop 50
2. oszlop 12
3. oszlop 06
4. oszlop 343
5. oszlop 34Tényleges kódban:
int tomb[,] = new int[2,5];
int max = 0;
for(int i = 0; i < 2; i++)
{
for (int j = 0; j < 5; j++)
{
if(max > tomb[i,j])
{
max = tomb[i,j];
}
}
}lehetnek benne elírások, de valahogy így néz ki.
Remélem mostmár világosabb
-
Jester01
veterán
válasz
metrion #4754 üzenetére
Ez több sebből vérzik. Ugye 3-3-3 sort kellene kitenni az egyes színekből, és mivel még nem is a sor elején kezdődik ezért minden sor megkezdése előtt oda is kell pozícionálni. Legjobb ha csinálsz egy függvényt ami adott színből kitesz 3 sort, és azt háromszor meghívod.
DrawStripe(kszelesseg, kmagassag, ConsoleColor.Red);
DrawStripe(kszelesseg, kmagassag + 3, ConsoleColor.White);
DrawStripe(kszelesseg, kmagassag + 6, ConsoleColor.Green);
...
static void DrawStripe(int x, int y, ConsoleColor color)
{
Console.BackgroundColor = color;
for(int i = 0; i < 3; i += 1)
{
Console.SetCursorPosition(x, y + i);
for(int j = 0; j < 40; j += 1)
{
Console.Write(' ');
}
}
}
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- AKCIÓ!!! GAMER PC: Új i5-14400F (10 mag/16 szál) +RX 7800 XT 16GB GDDR6 +Új 16-32GB DDR4! GAR/SZÁMLA
- AKCIÓ!!! DDR5 GAMER PC: Új RYZEN 7 8700F + Új RTX 5060 Ti + Új 16-32GB DDR5! GARANCIA/SZÁMLA!
- Razer Book 13 4K+ TOUCH I7 eladó
- HP 2x8 Gb DDR4 2666 Mhz RAM
- Félgép eladó/ Intel i9 9900 / Asus Prime Z390-A / 64GB DDR4 / 500GB Samsung 980 /
- LG 65" C1 OLED - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox Ready!
- ÁRGARANCIA!Épített KomPhone i5 10600KF 16/32/64GB RAM RTX 3050 6GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- Bomba ár! HP ProBook 430 G5 - i5-8GEN I 8GB I 256GB SSD I HDMI I 13,3" I Cam I W11 I Garancia!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest