Hirdetés
- Feháborodott az Apple, a Meta az iPhone-felhasználók üzeneteit akarja olvasgatni
- A luxusmárkáknak kell a bitcoin, az USA jegybankjának nem
- Letiltja az USA a politikusokat a telefonhívásokról és szöveges üzenetekről
- Nagy áttörés jön a napelemek piacán, nem kell annyi hely a paneleknek
- Belenyúlt az USA az Epic Games igazgatótanácsába, nyomoz az NVIDIA
- SkyShowtime
- Letiltja az USA a politikusokat a telefonhívásokról és szöveges üzenetekről
- Windows 11
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Mikrotik routerek
- Feháborodott az Apple, a Meta az iPhone-felhasználók üzeneteit akarja olvasgatni
- Linux kezdőknek
- Disney+
- DIGI internet
- Microsoft Office és Office 365 topic
Ú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..
[ Szerkesztve ]
https://heureka-kreativ.hu
-
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.
[ Szerkesztve ]
https://heureka-kreativ.hu
-
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();
}https://heureka-kreativ.hu
-
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.
[ Szerkesztve ]
https://heureka-kreativ.hu
-
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
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
-
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
[ Szerkesztve ]
https://heureka-kreativ.hu
-
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(' ');
}
}
}[ Szerkesztve ]
Jester
Ú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!
- Xiaomi Poco F3 5G 8/256 Ocean Blue
- Zalman ZM650-EBT (hibás) eladó
- Újszerű ASUS OLED Zenbook! Csak 1 kg! 13,3 coll/i5-1135g7/512SSD/16GB 4267Mhz RAM
- AKCIÓ!!! GAMER PC: RYZEN 9 5900X + RTX 3060 12GB GDDR6! GARANCIA/SZÁMLA!!!
- BONTATLAN Új Iphone 16 PRO 128Gb - 1TB Független 1év Apple GARANCIA Deák Térnél Azonnal Átvehető.
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Axon Labs Kft.
Város: Budapest