C# switch case

C# switch case
2012-02-16T21:18:00+01:00
2012-02-18T14:05:07+01:00
2022-08-05T14:13:12+02:00
ampulla
Sziasztok!

Egy dolgozat ponthatárok szerint, van felosztva pl: 0-50 elégtelen 51-65 elégséges stb. Nos az a kérdés hogy ne keljen 100 db case-t írnom, azt hogy lehetne megoldani. Gondoltam hogy 5 tömböt feltöltök és azokat adom meg esetekként, de zsákutcába futottam.


using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _1gyak5fel { class Program { static void Main(string[] args) { int[] egyes = new int[50]; int pont; Console.WriteLine("Kerem adja meg a dolgozat pontszamat:"); pont = int.Parse(Console.ReadLine()); switch (pont) { case x: Console.WriteLine("Elegtelen"); break; case 51 - 65: Console.WriteLine("Elegseges"); break; default: Console.WriteLine("Helytelen erteket adott meg!"); break; } Console.ReadKey(); } } }
Mutasd a teljes hozzászólást!
gyorsan összedobtam valamit, nem szép de müködik

class Program { static void Main(string[] args) { int pont; Console.WriteLine("Kerem adja meg a dolgozat pontszamat:"); pont = int.Parse(Console.ReadLine()); bool ciklus = true; bool[] jegy = new bool[5]; jegy[0] = pont <= 50; jegy[1] = pont <= 65; jegy[2] = pont <= 75; jegy[3] = pont <= 90; jegy[4] = pont <= 100; int i = 0; while(ciklus && i<jegy.Length) { switch (jegy[i]) { case true: ciklus = false; break; case false: break; } ++i; } Console.WriteLine("A jegyed: " + i); Console.ReadKey(); } }
Mutasd a teljes hozzászólást!

  • miért nem használsz ifeket pl


    if(pont <= 50) { elegtelen... } else if(pont <= 65) { elegseges }
    Mutasd a teljes hozzászólást!
  • Jó ötlet, csak sajnos így írta elő a tanár, ha nem switchet használok 0 pont :(
    Mutasd a teljes hozzászólást!
  • akkor erre én is kiváncsi leszek, hogy mi lesz a megoldás

    pedig akkor szerintem nem fogod megúszni, hogy 100 case-t odaírj
    Mutasd a teljes hozzászólást!
  • csak nem :D
    Mutasd a teljes hozzászólást!
  • gyorsan összedobtam valamit, nem szép de müködik

    class Program { static void Main(string[] args) { int pont; Console.WriteLine("Kerem adja meg a dolgozat pontszamat:"); pont = int.Parse(Console.ReadLine()); bool ciklus = true; bool[] jegy = new bool[5]; jegy[0] = pont <= 50; jegy[1] = pont <= 65; jegy[2] = pont <= 75; jegy[3] = pont <= 90; jegy[4] = pont <= 100; int i = 0; while(ciklus && i<jegy.Length) { switch (jegy[i]) { case true: ciklus = false; break; case false: break; } ++i; } Console.WriteLine("A jegyed: " + i); Console.ReadKey(); } }
    Mutasd a teljes hozzászólást!
  • köszi
    Mutasd a teljes hozzászólást!
  • Nekem is van megoldásom, csak én lassabb voltam.
    Hát ez se szép. De hülye feladatra ne várjon senki semmi jót.

    class Program { static void Main(string[] args) { int pont = -1; while (pont < 0 || pont>100) { Console.Write("Kérem a pontszámot: "); try { pont = int.Parse(Console.ReadLine()); if (pont < 0 || pont > 100) { Console.WriteLine("Hibás adatot adott meg!"); } } catch (Exception e) { Console.WriteLine("Hibás adatot adott meg"); } } List<List<int>> pontok = new List<List<int>>(); for (int i = 0; i < 5; i++) pontok.Add(new List<int>()); for (int i = 0; i <= 51; i++, pontok[0].Add(i)) ; for (int i = 52; i <= 65; i++, pontok[1].Add(i)) ; for (int i = 66; i <= 80; i++, pontok[2].Add(i)) ; for (int i = 81; i <= 90; i++, pontok[3].Add(i)) ; for (int i = 91; i <= 100; i++, pontok[4].Add(i)) ; switch (pontok.IndexOf(pontok.Where(p => p.IndexOf(pont) > -1).Single())) { case 0: Console.Write("Egyes"); break; case 1: Console.Write("Kettes"); break; case 2: Console.Write("Hármas"); break; case 3: Console.Write("Négyes"); break; case 4: Console.Write("Ötös"); break; default: Console.Write("Rossz adat"); break; } Console.ReadLine(); } }
    Mutasd a teljes hozzászólást!
  • szerintem a kérdező(pusztán a kérdéséből ítélve) nem igazán ért(het)i amit te írtál de grat a kódhoz
    Mutasd a teljes hozzászólást!
  • Nem valami olyasmire gondolhatott, hogy pl.:

    if(pont >= 0 && pont <= 50) jegy = 1; if(pont > 61 && pont <= 65) jegy = 2; //... a tovabbi esetek switch(jegy) { case 1: //kiiratas, hogy egyes; break; case 2: //kiiratas, hogy kettes; break; //... a tovabbi esetek }
    Mutasd a teljes hozzászólást!
  • Köszönöm!
    A feladat megoldása volt a célom, nem az érthetőség. Aztán ha beadná hátha lenne egy reakciója a tanárnak, és leszokna róla, hogy hülyeségeket kér.
    Mutasd a teljes hozzászólást!
  • Te, mondasz valamit.
    Mutasd a teljes hozzászólást!
  • a felvetésed jogos, viszont az if-eidet jobblenne egybe ágyazni

    if(blabla) { } else if(blabla) { } ...

    igy alapbol csak az egyik if fog tuti lefutni, és igy nemkell 2 dolgot vizsgálni, elég egy, de persze teljesen jo megoldás ez is
    Mutasd a teljes hozzászólást!
  • Ebben igazad van.
    Sőt, el is irtam a második if-nél az értékeket.
    Mutasd a teljes hozzászólást!
  • Rácuppantam! Tök jó ilyeneket írni!

    class Program { static void Main(string[] args) { List<List<int>> pontok = new List<List<int>>(); Console.WriteLine("Kérem az ponthatárokat: "); int hatar = 0; int hatar2 = 0; for (int i = 1; i < 6; i++) { pontok.Add(new List<int>()); Console.Write("{0} osztályzat: {1} - ", i, hatar); try { hatar2 = int.Parse(Console.ReadLine()); } catch (Exception e) { Console.WriteLine("Hibás adat!"); Console.ReadLine(); return; } for (int j = hatar; j < hatar2; j++, pontok[i - 1].Add(j)) ; hatar = hatar2 + 1; } int pont; do { pont = -1; while (pont < 0 || pont > 100) { Console.Write("Kérem a pontszámot: "); try { pont = int.Parse(Console.ReadLine()); if (pont < 0 || pont > 100) { Console.WriteLine("Hibás adatot adott meg!"); } } catch (Exception e) { Console.WriteLine("Hibás adatot adott meg"); } } switch (pontok.IndexOf(pontok.Where(p => p.IndexOf(pont) > -1).Single())) { case 0: Console.WriteLine("Egyes"); break; case 1: Console.WriteLine("Kettes"); break; case 2: Console.WriteLine("Hármas"); break; case 3: Console.WriteLine("Négyes"); break; case 4: Console.WriteLine("Ötös"); break; default: Console.WriteLine("Rossz adat"); break; } Console.WriteLine("Jöhet a következő? (I,N)"); } while (Console.ReadLine().ToUpper() == "I"); } }
    Hibakezelés nélkül meg fele ekkora :)

    class Program { static void Main(string[] args) { List<List<int>> pontok = new List<List<int>>(); Console.WriteLine("Kérem az ponthatárokat: "); int hatar = 0; int hatar2 = 0; for (int i = 1; i < 6; i++) { pontok.Add(new List<int>()); Console.Write("{0} osztályzat: {1} - ", i, hatar); hatar2 = int.Parse(Console.ReadLine()); for (int j = hatar; j < hatar2; j++, pontok[i - 1].Add(j)) ; hatar = hatar2 + 1; } int pont; do { pont = -1; Console.Write("Kérem a pontszámot: "); pont = int.Parse(Console.ReadLine()); switch (pontok.IndexOf(pontok.Where(p => p.IndexOf(pont) > -1).Single())) { case 0: Console.WriteLine("Egyes"); break; case 1: Console.WriteLine("Kettes"); break; case 2: Console.WriteLine("Hármas"); break; case 3: Console.WriteLine("Négyes"); break; case 4: Console.WriteLine("Ötös"); break; default: Console.WriteLine("Rossz adat"); break; } Console.WriteLine("Jöhet a következő? (I,N)"); } while (Console.ReadLine().ToUpper() == "I"); } }

    Tudom, hogy haszna nincsen itt, csak olyan jól szórakozom.
    Mutasd a teljes hozzászólást!
  • Hogy hasznosat is írjak, a jari_jari féle megoldást is csináld meg szerintem, nehogy az legyen, hogy ő úgy gondolta, és a Galovics féle túl nyakatekert neki.
    Mutasd a teljes hozzászólást!
  • okés, köszi szépen mindenkinek
    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