Új hozzászólás Aktív témák

  • Lacces

    őstag

    Hali, már rég voltam itt, gondoltam jövők egy kérdéssel ismét :D

    Írni kellett egy metódust. A programkódban van, hogy mit is kértek tőlünk. Na ez kábé nagyjából megvan. (Ha lehetne LINQ-t használni, királyság lenne)
    Egy foreach-ben megkeresem a Dictionary-ben lévő Sör Objektumot, amelynek neve megegyezik a metódus sörnév paraméterével. (más megoldást nem tudok foreach-en kívül... LINQ nem játszhat, lentebb láthatjátók, mely 2 using-ot használhatom csak)

    Visszont van egy probléma, hogy ha megvan az a sör amit a sörnév alapján kerestem, akkor vele párhuzamosan, a Dictionary-ban<Sör obj, int value> a sör objektumhoz tartozó, value-t is módosítanom kell.
    Sajnos a foreach-ben az item.key és item.value csak lekérdező metódus. Van-e beállító metódusa is?
    Foreach esetén hogyan lehetséges egy adott Key-hez tartozó Value módosítása?

    sörök.Values.Add(item.Value - kimertKorso * 5); - erre gondoltam, de ez lehet hülyeség, hiszen honnan tudná a C#, hogy az adott Item.Key-hez tartozó Value-t állítom be?!

    // csak e kettő használható
    using System;
    using System.Collections.Generic;

    IDictionary<Sör, int> sörök = new Dictionary<Sör, int>();
    /// <summary>
    /// <para>Megkísérel eladni adott számú korsót az adott nevű sörből. Az eladott mennyiségnek megfelelően a bevétel nő, a rendelkezésre álló mennyiség korsónként 5 dl-rel csökken.</para>
    /// </summary>
    /// <param name="sörnév">a kért sör neve</param>
    /// <param name="nkorsó">a kért korsók száma</param>
    /// <returns>A korsók száma, amiket sikerült teljesen kimérni. Ha nincs ilyen nevű sör, akkor 0.</returns>
    public int Elad(string sörnév, int nkorsó)
    {
    int d = 5*nkorsó; // 5 deciliter = 1 korsó
    int kimertKorso=0;
    Sör s;

    foreach (var item in sörök)
    {
    if (item.Key.Név == sörnév) // ha megtalálom
    {
    if (item.Value >= d)
    {
    kimertKorso = item.Value % 5; // kimért korsók száma
    bevétel += kimertKorso*5; // bevétel nő eladott mennyiségnek megfelelően - ha dl és nem korsó
    sörök.Values.Add(item.Value - kimertKorso * 5); // talán?
    }
    }
    }
    return kimertKorso;
    }

Új hozzászólás Aktív témák