Hirdetés
- Xiaomi Pad 6 - kiapadhatatlan jóság
- Megérkezett az Intel asztali csúcsprocesszora
- Jövő hónapban jönnek a Thermaltake ATX 3.1-es SFX tápjai
- Vezeték nélküli fejhallgatók
- Milyen egeret válasszak?
- Milyen nyomtatót vegyek?
- Sony MILC fényképezőgépcsalád
- Megjött az APO a régebbi Intel Core processzorra
- TCL LCD és LED TV-k
- OLED TV topic
Új hozzászólás Aktív témák
-
K_Gabor
tag
válasz peter9228 #5001 üzenetére
Elégnek elég lenne,én megszokás miatt csináltam így.
Igen,ha do-while van akkor mindenképp bemegy egyszer a ciklusmagba,viszont ha elöltesztelős a ciklus while( feltetel){} akkor csak abban az esetben megy bele ha a feltétel igaz.Hirdetéseim: http://hardverapro.hu/tag/k_gabor_3#aprohirdetesei
-
metrion
aktív tag
Sziasztok!
Kétdimenziós tömb elemeit, hogy lehet csökkenőbe rendezni?
A növekvő megvan: static void Novekvo(int[,] t)
{
for (int x = 0; x < 5; x++)
{
for (int y = 0; y < 4; y++)
{
int min = y;
for (int i = y + 1; i < 5; i++)
if (t[x, i] < t[x, min])
min = i;
if (min != y)
{
int csere = t[x, min];
t[x, min] = t[x, y];
t[x, y] = csere;
}
}
}
}Ez kell csak fordítva?
-
metrion
aktív tag
válasz trisztan94 #5011 üzenetére
De ez nem kétdimenziós. :S Megpróbáltam de nem jött össze.
-
metrion
aktív tag
-
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
-
metrion
aktív tag
válasz trisztan94 #5015 üzenetére
Köszi, de holnapra kéne és nem tudok rájönni. Tuti valami apró hiba.
-
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 trisztan94 #5015 üzenetére
igen, elírtam a végén az if()-et.
Ha max KISEBB, mint TOMB[i,j], akkor adjuk a max értékének a tömb i.,j. elemét
https://heureka-kreativ.hu
-
metrion
aktív tag
válasz trisztan94 #5018 üzenetére
Kezdem feladni: 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;
}
}
static void Main(string[] args)
{
int[,] t = new int[5, 5];
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.
[ Szerkesztve ]
https://heureka-kreativ.hu
-
metrion
aktív tag
válasz trisztan94 #5020 üzenetére
Na már csak 1 hiba: Console.WriteLine("A max: {0}", Max(max));
Error 1 The name 'max' does not exist in the current context
-
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
-
metrion
aktív tag
válasz trisztan94 #5022 üzenetére
Most ez: Error 1 No overload for method 'Max' takes 1 arguments
-
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
-
metrion
aktív tag
válasz trisztan94 #5026 üzenetére
És tényleg, nagyon köszi, jól működik!
-
metrion
aktív tag
Sziasztok!
Ebbe tudnátok segíteni?
A lényeg, hogy kétdimenziós tömbbe nem lehet szám ismétlődés.
Egydimenziós tömbös verzió kész, de nem tudom, hogy kéne átírni 2D-re. :S
Random rnd = new Random();
int[] tomb = new int[5];
int i=0;
while(i<5)
{
tomb[i] = rnd.Next(10, 100);
int x = 0;
while ((x<=i)&&(tomb[x] != tomb[i]))
{
x++;
}
if (x == i)
{
i++;
}
}
for (i = 0; i < 5; i++)
{
Console.WriteLine(tomb[i]);
}
Console.ReadKey();
}
}
} -
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
-
metrion
aktív tag
válasz trisztan94 #5030 üzenetére
Már megoldódott.
-
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.
-
metrion
aktív tag
válasz Peter Kiss #5033 üzenetére
Szia!
Értékelem a segítséged, de én még nem járok ezen a szinten.
-
Karma
félisten
válasz Peter Kiss #5033 üzenetére
Én removeAt helyett jobban szeretem ezt a technikát.
“All nothings are not equal.”
-
trisztan94
őstag
válasz Peter Kiss #5033 üzenetére
Középiskolában egyest kaptam az ilyen megoldásokra, mert csak azt lehetett használni amit órán tanítottak (meg struktogramot kellett rajzolni, mert az nyelvfuggetlen), ezért is írtam neki le a dupla ciklusos módszert, amivel a beadandóját kell csinálni.
[ Szerkesztve ]
https://heureka-kreativ.hu
-
metrion
aktív tag
válasz trisztan94 #5036 üzenetére
Nem beadandóhoz kellett, hanem a vizsgámhoz
Ez volt a vizsgán és még ebből is hiányzik a sorcsere, számbekéréssel: [link]
-
-
trisztan94
őstag
válasz Peter Kiss #5038 üzenetére
Pont ez az, egy "neves" számítástechnikai suliba jártam, a térség legjobbja.
https://heureka-kreativ.hu
-
Karma
félisten
válasz Peter Kiss #5038 üzenetére
Csak sajnos nagy része, ami Guiddal operál, helytelen
“All nothings are not equal.”
-
kalorobi
csendes tag
Sziasztok!
Eladó egy pár C# programozással kapcsolatos könyv:
http://aprod.hu/hirdetes/bradley-l-jones-c-mesteri-szinten-konyv-ID1NB1z.html
http://aprod.hu/hirdetes/jason-price-c-adatbazis-programozas-ID1NAYT.htmlJuval Lövy: .Net komponensek programozása. (1.500 Ft)
Trey Nash: C# 2008 könnyen is lehet. (2.500 Ft)Hátha valakit érdekel.
-
trisztan94
őstag
válasz kalorobi #5041 üzenetére
Na mar miért venne az ember könyvet 2.500-ért egy 6 evvel ezelőtti C# verzióhoz, amikor akar olcsóbban is megkapod e-book formában, sot, van egy teljes C# könyv teljesen ingyen, jogtisztan az interweben?
Es ez miért nem off? Pontosan melyik része illik a topik témájához?
https://heureka-kreativ.hu
-
kalorobi
csendes tag
válasz trisztan94 #5042 üzenetére
Azért nem OFF mert programozással kapcsolatos. Igaz, hogy van az apró, de ott meg könyv kategória nincs.
Az meg hogy 6 éves könyv... Az objektumorientált programozás elvei nem változtak. A nyelvben vannak új dolgok, de az alapok maradtak... Ezek a könyvek, pedig pont erről szólnak.
Ha valakit érdekel, megnézi, alkudozik, megveszi. Ha nem érdekli, nem nézi meg.
-
Karma
félisten
válasz kalorobi #5044 üzenetére
Két dolog:
1) Van könyv kategória.
2) A topikban hirdetés alapszabályzatban tiltott, nem ilyen "nem érdekli nem nézi meg" kategória.[ Szerkesztve ]
“All nothings are not equal.”
-
válasz trisztan94 #5042 üzenetére
Mondjuk te is elolvashatnád a Trey Nash könyvet, van egy olyan érzésem...
-
trisztan94
őstag
válasz Peter Kiss #5047 üzenetére
Na jó, ezt most fejezzük be, mert kezd a tokom tele lenni veled.
[ Szerkesztve ]
https://heureka-kreativ.hu
-
thiclyoon
aktív tag
sziasztok,
van egy "programom", amit egy másik gépen csináltam, hazajöttem, de itt már nem működik..
"Additional information: Nem megfelelő a bemeneti karakterlánc formátuma."
ezt írja ki, miközben egy sort feldaraboltam string-ekké, és konvertálnám double-re
mi lehet a gond? -
fatal`
félisten
válasz thiclyoon #5049 üzenetére
Másik gépen megegyezik az oprendszer területi beállíása? Doublenél szokott olyan gond lenni, hogy angol-szász területi beállítás esetén tizedespont, Magyarországon viszont tizedesvessző van, ezért nem tud parseolni. Illetve tud, csak amikor parseolsz, akkor be kell állítani a culturet.
Ú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!
- Tőzsde és gazdaság
- Víz- gáz- és fűtésszerelés
- Xiaomi Pad 6 - kiapadhatatlan jóság
- Kertészet, mezőgazdaság topik
- Autós topik
- gban: Ingyen kellene, de tegnapra
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- BestBuy topik
- Megérkezett az Intel asztali csúcsprocesszora
- LEGO klub
- További aktív témák...