Maximum Keresés

Maximum Keresés
2022-02-26T10:38:23+01:00
2022-03-01T11:58:13+01:00
2022-12-07T00:45:36+01:00
FRETENSIS
---------using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace HegyekMo { class Program { static List<Hegyek> mountains = new List<Hegyek>(); static List<Max> nagy = new List<Max>(); public static void OtodikFeladat() { StreamReader masodikbe = new StreamReader("hegyekMo.txt"); masodikbe.ReadLine(); while (!masodikbe.EndOfStream) { string[] z = masodikbe.ReadLine().Split(';'); int magas = Convert.ToInt32(z[2]); Max d = new Max(magas); nagy.Add(d); /* int[] tomb = { magas }; int max = tomb.Max(); Console.WriteLine(max); */ /*Math.Max(tomb, tomb);*/ int[] tomb = new int[] { magas }; int max = 0; for (int i = 1; i < tomb.Length; i++) { if (tomb[max] < tomb[i] ) { max = i; } } Console.WriteLine(tomb[max]); /* int[] maximum = new int[] {magas}; int max = 0; foreach (var a in maximum) { if (maximum[max]< maximum[a]) { max = a; } } Console.WriteLine(maximum[max]);*/ } /* int[] tomb = new int[] { 2, 3, 4, 1, 5, 10, 6, 8 }; int max = 0; for (int i = 1; i < tomb.Length; i++) { if (tomb[max] < tomb[i]) { max = i; } } Console.WriteLine("A maximum: {0}", tomb[max]); */ Console.ReadLine(); } public static void NegyedikFeladat() { int szum = 0; foreach (var i in mountains) { szum = i.magassag + szum; } double eredmeny = szum / (double)mountains.Count(); Console.WriteLine("A hegycsúcsok átlagos magassága: " + eredmeny + " m"); } public static void MasodikFeladat() { StreamReader be = new StreamReader("hegyekMo.txt"); be.ReadLine(); while (!be.EndOfStream) { string[] a = be.ReadLine().Split(';'); string nev = a[0]; string hegyseg = a[1]; int magassag = Convert.ToInt32(a[2]); Hegyek temp = new Hegyek(nev, hegyseg, magassag); mountains.Add(temp); /* mountains.Add(new Hegyek(a[0], a[1], Convert.ToInt32(a[2]))); */ /* Console.WriteLine(a[0] + " " + a[1] + " " + a[2]);*/ } Console.WriteLine(); Console.WriteLine("3. feladat:" + " Hegycsúcsok száma: " + mountains.Count() + " db"); } static void Main(string[] args) { MasodikFeladat(); NegyedikFeladat(); OtodikFeladat(); Console.ReadLine(); } } class Hegyek { private string nev; public string Nev { get { return nev; } } private string hegyseg; public string Hegyseg { get { return hegyseg; } } public int magassag; public int Magassag { get { return magassag; } } public Hegyek(string nev, string hegyseg, int magassag) { this.nev = nev; this.hegyseg = hegyseg; this.magassag = magassag; } } class Max { public int maximum; public int Maximum { get { return maximum; } } public Max(int maximum) { this.maximum = maximum; } } }

Sziasztok! Egy fájl elemeiből szeretném int alapján megtalálni a legnagyobb értéket! A fájl beolvasása után az adott értékeket egy változóba deklaráltam ("magas") , amit aztán egy tömbe próbálok menteni. Ezután próbálkoztam egy for ciklusos maximum kereséssel. Viszont amikor kiíratom a konzolra az eredményt akkor nem a maximum értéket adja vissza hanem a tömb minden eggyes elemét. Viszont nekem csak a maximum érték kellene.


Tudna valaki segíteni , hogy e megoldást kiegészítve vagy kicsit átírva segítene mit rontottam el. Nem szeretnék másik módszert használni hanem ezt szeretném befejezni , mert így kezdtem el a munkát és szeretném a segítségetekkel átlátni mit hoztam össze. 


ui: Elnézést ha nem nagyon jó a kód de tanuló vagyok. 
Csatoltam a txt fájlt is hátha valakinek kell 

Köszönöm
Mutasd a teljes hozzászólást!
Szia

Mivel a Linq és a Collection.Generic adott, valójában ez a 3 feladat így néz ki:

Console.WriteLine($"3. feladat: Hegycsúcsok száma: {mountains.Count()} db"); Console.WriteLine($"4. feladat: A hegycsúcsok átlagos magassága: {mountains.Average(hegy => hegy.Magasság)} m"); var legmagasabb = mountains.MaxBy(hegy => hegy.Magasság); Console.WriteLine($"5. feladat: A legmagasabb hegycsúcs adatai:\n\tNév: {legmagasabb.Név}\n\tHegység: {legmagasabb.Hegység}\n\tMagasság: {legmagasabb.Magasság} m");

Persze ha a ciklusok gyakorlása a cél, akkor még nagyon sokat kell tanulnod. Hajrá!
Mutasd a teljes hozzászólást!

  • A maximumkeresés arról szól, hogy van egy adatsorod (tömb, lista, stb.), aminek veszed az első elemét, amit kinevezel maximumnak, majd az adatsor többi elemén végigmész. Ha találsz nagyobb elemet annál, amit kineveztél maximumnak, onnantól kezdve az lesz az új maximum.

    int[] adatsor = { 3, 4, 2, 5, 6 }; int maximum = adatsor[0]; //a maximum értéke az adatsor egy eleme for (int i = 1; i < adatsor.GetLength(0); i++) { if (adatsor[i] > maximum) maximum = adatsor[i]; }
    Ha objektumokkal kell dolgoznod, szintén ugyanez a helyzet:

    public record Hegy(int Magassag); Hegy[] adatsor = { new(3), new(5), new(4), new(6), new(1) }; Hegy maximum = adatsor[0]; for (int i = 1; i < adatsor.GetLength(0); i++) { if (adatsor[i].Magassag > maximum.Magassag) maximum = adatsor[i]; }
    Éppen ezért teljesen felesleges bevezetned a Max osztályt.

    szeretném a segítségetekkel átlátni mit hoztam össze

    Ehhez pedig nem kellünk. Egyszerűen csak kezdd el papíron végrehajtani a programot, amit írtál, mintha te lennél a processzor. Vagy tanuld meg használni a debuggert.
    Mutasd a teljes hozzászólást!
  • Szia

    Mivel a Linq és a Collection.Generic adott, valójában ez a 3 feladat így néz ki:

    Console.WriteLine($"3. feladat: Hegycsúcsok száma: {mountains.Count()} db"); Console.WriteLine($"4. feladat: A hegycsúcsok átlagos magassága: {mountains.Average(hegy => hegy.Magasság)} m"); var legmagasabb = mountains.MaxBy(hegy => hegy.Magasság); Console.WriteLine($"5. feladat: A legmagasabb hegycsúcs adatai:\n\tNév: {legmagasabb.Név}\n\tHegység: {legmagasabb.Hegység}\n\tMagasság: {legmagasabb.Magasság} m");

    Persze ha a ciklusok gyakorlása a cél, akkor még nagyon sokat kell tanulnod. Hajrá!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd