Forum » Programiranje » [C#] Omejitev izpisa v foreach
[C#] Omejitev izpisa v foreach
Cvenemir ::
Lp. Kako bi popravil metodo, da bi izpisala napako "Osebe ni na seznamu" šele ko preleti celoten seznam, ne pa za vsako osebo, ki se ne ujema z iskanjem?
public static void IzpisiOseboIme(List<Oseba> osebe) { Console.WriteLine("\nVnesite ime osebe, katere podatke želite prikazati: "); string firstName = Console.ReadLine(); foreach (Oseba os in osebe) { if (firstName == os.Ime) { Console.WriteLine("\n************************************"); Console.WriteLine("Podatki iskane osebe so:\n "); Console.WriteLine("Ime: {0}", os.Ime); Console.WriteLine("Priimek: {0}", os.Priimek); Console.WriteLine("Datum rojstva: {0}", os.DatumRojstva); Console.WriteLine("Kraj bivanja: {0}", os.Naslov); Console.WriteLine("************************************"); break; } else { Console.WriteLine("\nIskane osebe ni na seznamu. "); } } }
Jeremias ::
Že sam prav razmišljaš, samo še udejaniš to. Torej "Osebe ni na seznamu" hočeš izpisati ko preletiš cel seznam. To pomeni da izpis moraš prestavit iz foreach zanke. Drugi korak, to hočeš izpisat samo takrat ko vpisane osebe res ni v seznamu, to pa dosežeš tako, da ko najdeš osebo "si nastaviš zastavico osebaNajdena" in po zanki preverjaš to "zastavico", če ta zastavica ni nastavljena, torej oseba ne obstaja, izpišeše "Osebe ni na seznamu".
Lp
Jernej
Jernej
Cvenemir ::
Mogoče kakšen primer? Kaj sploh so zastavice? Neki sem na googlu iskau "c# flags" pa nisem nič koristnega našu.
noraguta ::
ja funkcija naj ne bo viod ampak string. in če je leta prazen izjaviš tisto kar si hotel. al pa naj bo bool. scope ti pomaga pri kodiranju.
Pust' ot pobyedy k pobyedye vyedyot!
mallard ::
Če v seznamu ni podvojenih imen, se lahko vrneš iz funkcije takoj, ko najdeš rezultat:
V nasprotnem primeru pa kot je Jeremias rekel, z zastavico (ker moraš pač čez cel seznam).
public static void IzpisiOseboIme(List<Oseba> osebe) { Console.WriteLine("\nVnesite ime osebe, katere podatke želite prikazati: "); string firstName = Console.ReadLine(); foreach (Oseba os in osebe) { if (firstName == os.Ime) { Console.WriteLine("\n************************************"); Console.WriteLine("Podatki iskane osebe so:\n "); Console.WriteLine("Ime: {0}", os.Ime); Console.WriteLine("Priimek: {0}", os.Priimek); Console.WriteLine("Datum rojstva: {0}", os.DatumRojstva); Console.WriteLine("Kraj bivanja: {0}", os.Naslov); Console.WriteLine("************************************"); return; } } Console.WriteLine("\nIskane osebe ni na seznamu. "); }
V nasprotnem primeru pa kot je Jeremias rekel, z zastavico (ker moraš pač čez cel seznam).
Zgodovina sprememb…
- spremenilo: mallard ()
Cvenemir ::
Seznam ne vsebuje podvojenih imen, tako, da bom v tem primeru uporabil kar nasvet od mallard-a. Se mi zdi še najpreprostejše.
^TMS^ ::
Morda ti svetujem še preprostejši način, če so ti bolj všeč kolekcije. Glede na to, da imaš podatke shranjene v Listu se lahko poslužuješ metode Contains(T). Ta ti vrne boolean vrednost, ki pove, ali se podani objekt nahaja v seznamu. Tako bi lahko pogoj preverjal še pred zanko in ustrezno odreagiral.
Pravtako bi za iskanje lahko uporabil metodo Find, ki ti vrne prvi element v seznamu, kateri ustreza predikatu. Da pa bi bilo še manj pisanja, pa bi lahko tudi to metodo združil s Contains in preverjal, če je vrnjeni element null.
Edinole, kar bi moral dodati, da bi zadeva delala, je metodo Equals v razred Oseba.
Pravtako bi za iskanje lahko uporabil metodo Find, ki ti vrne prvi element v seznamu, kateri ustreza predikatu. Da pa bi bilo še manj pisanja, pa bi lahko tudi to metodo združil s Contains in preverjal, če je vrnjeni element null.
Edinole, kar bi moral dodati, da bi zadeva delala, je metodo Equals v razred Oseba.
To iterate is human, to recurse divine.
Cvenemir ::
Lp,
Zvedel sem, da profesor preverja tudi, če so na seznamu podvojena imena, oz. katerakoli druga lastnost. Lahko nekdo pokaže primer uporabe zastavice?
Zvedel sem, da profesor preverja tudi, če so na seznamu podvojena imena, oz. katerakoli druga lastnost. Lahko nekdo pokaže primer uporabe zastavice?
^TMS^ ::
public static void IzpisiOseboIme(List<Oseba> osebe) { Console.WriteLine("\nVnesite ime osebe, katere podatke želite prikazati: "); string firstName = Console.ReadLine(); bool obstaja = false; foreach (Oseba os in osebe) { if (firstName == os.Ime) { Console.WriteLine("\n************************************"); Console.WriteLine("Podatki iskane osebe so:\n "); Console.WriteLine("Ime: {0}", os.Ime); Console.WriteLine("Priimek: {0}", os.Priimek); Console.WriteLine("Datum rojstva: {0}", os.DatumRojstva); Console.WriteLine("Kraj bivanja: {0}", os.Naslov); Console.WriteLine("************************************"); obstaja = true; } } if(!obstaja) Console.WriteLine("\nIskane osebe ni na seznamu. "); }
To iterate is human, to recurse divine.
Zgodovina sprememb…
- spremenil: ^TMS^ ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] Evidenca osebOddelek: Programiranje | 1163 (848) | DaMachk |
» | [C#] DeserializacijaOddelek: Programiranje | 1871 (1474) | Cvenemir |
» | [c#] Ustvarjanje objekta v drugem razreduOddelek: Programiranje | 1667 (1612) | Cvenemir |
» | c sharp LinkedList - NalogaOddelek: Programiranje | 1865 (1816) | Msatir |
» | [C#] Kopiranje osebe iz seznama v drug seznamOddelek: Programiranje | 1506 (1367) | Presidente |