Forum » Programiranje » [C#] Domača naloga za faks
[C#] Domača naloga za faks
Ales8 ::
Pozdrav! Za fax imam eno nalogo, ki je ne znam v celoti rešit. In sicer treba je poiskati 3. največje število v polju. To znam narediti a problem nastane, ko je treba v primeru da to število ni najdeno izpisati napako. TO pa zato ker moraš narediti to v primeru:
Vhod: 5 3 5 3 0
Izhod: "Opozorilo o napaki"
ALI
Vhod: 1 2 0
Izhod: "Opozorilo o napaki"
Algoritem:
Vhod: 5 3 5 3 0
Izhod: "Opozorilo o napaki"
ALI
Vhod: 1 2 0
Izhod: "Opozorilo o napaki"
Algoritem:
public static int tretjeNajvecje(int[] polje) { int tretjeNajvecje = 2; int drugoNajvecje = 1; int N = polje.Length; int najvecje = 0; Console.WriteLine("Vnesi do 10 števil!"); for (int i = 1; i < N; i++) { if (polje[i] > polje[najvecje]) { tretjeNajvecje = drugoNajvecje; drugoNajvecje = najvecje; najvecje = tretjeNajvecje; najvecje = i; } else { if() } return polje[tretjeNajvecje]; } public static void Main(string[] args) { int[] polje = new int[10]; Console.WriteLine(tretjeNajvecje(polje)); Console.ReadLine(); }
- premaknil iz Pomoč in nasveti: Mavrik ()
vorantz ::
Vnest moras cifre vecje od nic? Predvidevam da je tista nicla v primerih misljena kot konec vnasanja cifr?
Drugace bi se to dalo resit zelo hitro z lynqom samo ne vem ce ga lahko uporabis
Drugace bi se to dalo resit zelo hitro z lynqom samo ne vem ce ga lahko uporabis
Qushaak ::
Nisi napisal kaj "smeš". Osebno bi najprej sortiral števila in potem poskusil prebrati tretjega (če sploh so vsaj 3 števila). Pa jasno že ko bi bral iz vhoda bi vsako število probal parsat, če se ga da.
C# pa jasno že ima .sort metodo.
C# pa jasno že ima .sort metodo.
Ales8 ::
evo navodilo celo:
Izdelajte program, ki bo prebral od 3 do 10 števil in izpisal tretje največje med njimi. Vnos podatkov lahko predhodno zaključimo z vnosom vrednosti 0 (vrednost 0 pomeni prekinitev nadaljnjega vnašanja podatkov in se ne upošteva pri določanju tretjega največjega števila).
V primeru, da tretjega največjega števila ni mogoče določiti, naj se izpiše opozorilo o napaki.
Izdelajte program, ki bo prebral od 3 do 10 števil in izpisal tretje največje med njimi. Vnos podatkov lahko predhodno zaključimo z vnosom vrednosti 0 (vrednost 0 pomeni prekinitev nadaljnjega vnašanja podatkov in se ne upošteva pri določanju tretjega največjega števila).
V primeru, da tretjega največjega števila ni mogoče določiti, naj se izpiše opozorilo o napaki.
Ales8 ::
vorantz ::
če bi se lahko z lynqom poigral:
manjkajo še varnostna preverjanja
edit: eh škoda :D
var nums = args.Select(x => Int32.Parse(x)).ToList(); nums.Distinct().OrderByDescending(x => x); if (nums.Count() < 3) { Console.WriteLine("ermagerd no third"); } else { Console.WriteLine(nums[2]); } Console.ReadLine();
manjkajo še varnostna preverjanja
edit: eh škoda :D
Zgodovina sprememb…
- spremenil: vorantz ()
Ales8 ::
Nisi napisal kaj "smeš". Osebno bi najprej sortiral števila in potem poskusil prebrati tretjega (če sploh so vsaj 3 števila). Pa jasno že ko bi bral iz vhoda bi vsako število probal parsat, če se ga da.
C# pa jasno že ima .sort metodo.
Tudi tega se ne sme. Pač dovoljena so polja, zanke..
Mavrik ::
Ales8: Prosim naslednjič uporabi "st.koda" značko za lepši prikaz tvoje kode :)
The truth is rarely pure and never simple.
vorantz ::
sicer pa ja
najboljše naredit podobno kot sem jaz z lynqom
naredi en enostaven distinct sort (v nek array dodajaš eno številko po eno na ustrezno mesto oz ne če že obstaja) in vzemi tretjega če obstaja
najboljše naredit podobno kot sem jaz z lynqom
naredi en enostaven distinct sort (v nek array dodajaš eno številko po eno na ustrezno mesto oz ne če že obstaja) in vzemi tretjega če obstaja
Spura ::
Verjetno ni fora da sortiras ampak da najdes tretjega z enim scanom. Ce bi dali omejitev, da mora imet algoritem linearno casovno zahtevnost al pa konstantno prostorsko zahtevnost, bi lepo sli teli vasi sorti papa. Sam na tej stopnji ne mores tega dat v navodila ker folk itak ne bi razumel.
boogie_xlr ::
Vbistvu se lahko števila sproti preverja, ko se vnašajo. (Če se že gre za šolski primer.)
Yacked2 ::
Jaz bi tako naredil:
for zanka, ki breaka če je vpisana številka 0, drugače pa rabiš tri spremenljivke v katere shranjuješ prve tri največje številke. Na koncu izpišeš tretjo :) Ti še sestavim.
for zanka, ki breaka če je vpisana številka 0, drugače pa rabiš tri spremenljivke v katere shranjuješ prve tri največje številke. Na koncu izpišeš tretjo :) Ti še sestavim.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Yacked2 ::
static void Main(string[] args) { int[] save = new int[3]; Console.WriteLine("Vpisujte številke:"); for (int i = 0; i < 11; i++) { int dump = Int32.Parse(Console.ReadLine()); if (dump == 0) //če je 0 končamo { break; } else { //preverimo na katero mesto gre if (i == 0) { save[0] = dump; } else if(dump > save[0]) //največji { save[2] = save[1]; save[1] = save[0]; save[0] = dump; } else if (dump > save[1]) //drugi največji { save[2] = save[1]; save[1] = dump; } else if (dump > save[2]) //tretji največji { save[2] = dump; } } } Console.WriteLine("Tretje največje število je: " + save[2].ToString()); Console.ReadLine(); }
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
vorantz ::
Hja kaj pa dela to drugega kot sort
Samo, da je hardcodirano na 3. največje število
Kaj pa če ti reče ok zdej pa spremeni, da bo izpisovalo 5. največjo?
Samo, da je hardcodirano na 3. največje število
Kaj pa če ti reče ok zdej pa spremeni, da bo izpisovalo 5. največjo?
Zgodovina sprememb…
- spremenil: vorantz ()
Yacked2 ::
Hja kaj pa dela to drugega kot sort
Samo, da je hardcodirano na 3. največje število
Kaj pa če ti reče ok zdej pa spremeni, da bo izpisovalo 5. največjo?
Glede na to, da število številk med 3 in 10, bi za izpisovanje do vlkjučno 6 shranjeval največje, če bi pa želel shranjevati 7. največjo pa bi shranjeval najmanjše.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Spura ::
Hja kaj pa dela to drugega kot sort
Samo, da je hardcodirano na 3. največje število
Kaj pa če ti reče ok zdej pa spremeni, da bo izpisovalo 5. največjo?
To ni noben problem, samo za razliko od yackeda moras dejansko dvojno zanko uporabit, ki je iz neznanega razloga ni.
findNthBiggest(int[] data, int n) { if (n < 1) throw new IllegalArgumentException(); int[] topN = new int[n]; for (int i = 0;i < data.length;i++) { if (topN[0] < data[i]) { topN[0] = data[i]; for (int j = 1;j < n && topN[j] < data[i];j++) { topN[j - 1] = topN[j]; topN[j] = data[i]; } } } return topN[0]; }Tut ne stekam zakaj je primerjava z najvecjim na vrhu, ne pa s 3. najvecjim, ker statisticno bo to trikrat vec ifov naredil.
Zgodovina sprememb…
- spremenil: Spura ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | križci krožci c # (strani: 1 2 )Oddelek: Programiranje | 11956 (10615) | Yacked2 |
» | [C#] Domača naloga - osnoveOddelek: Programiranje | 2507 (1724) | 11tomi12 |
» | Sode ter Lihe(C Sharp)Oddelek: Programiranje | 1673 (1471) | detroit |
» | [C#] Reševanje domačih nalogOddelek: Programiranje | 3282 (2786) | krastača |
» | Pomoč pri programčkihOddelek: Programiranje | 2940 (2590) | Mitja Bonča |