fel
le

Példaprogram

Feladat: készítsünk olyan programot, amely egy (nagyjából) 30 fős osztály tanulóinak neveit és fizika jegyét kéri be. A program adja meg

  • hányan buktak,
  • kik kaptak 5-öst,
  • mi lett az osztályátlag, ha a bukottakat is beleszámoljuk,
  • mi lett az osztályátlag, ha a bukottakat nem számoljuk bele,
  • melyik érdemjegy hányszor fordult elő az osztályban.

Az adatbevitelt oldjuk úgy meg, hogy először a nevet kérjük be, majd az érdemjegyet. Ha a név részt a kezelő üresen hagyja, akkor befejezhető az adatbevitel.

using System;

namespace nagyProgram
{
  // ----------------------------------------------
  class diak
  {
    public string nev;
    public int jegy;
  }
  // ----------------------------------------------
  class FoProgram
  {
     //...............................................................................
     static List<diak> osztaly = new List<diak>();
     //...............................................................................
     public static void Main()
     {
       RekordokBekerese();
       KikKaptakOtost();
       HanyanBuktak();
       Atlag_Bukottakkal();
       Atlag_BukasNelkul();
       Statisztika();
     }
     //...............................................................................
     static void RekordokBekerese()
     {
        Console.WriteLine("Kérem az adatokat az osztályról (név, jegy)");
        Console.WriteLine("Befejezéshez a nevet hagyja üresen");
        int i=0;
        while (true)
        {
           i++;
           Console.Write("Kérem az {0}. nevet:",i);
           string nev = Console.ReadLine();
           if (nev=="") break;
           Console.Write("Kérem {0} fizika jegyét:",nev);
           int jegy = int.Parse( Console.ReadLine() );
           //
           diak d = new diak();
           d.nev = nev;
           d.jegy = jegy;
           osztaly.Add( d );
        }
        Console.WriteLine("-- adatbevitel vége --");
     }
     //...............................................................................
     static void KikKaptakOtost()
     {
       Console.WriteLine("Az alábbi diákok kaptak 5-öst:");
       int db = 0;
       foreach(diak d in osztaly)
       {
         if (d.jegy==5)
         {
           Console.WriteLine(" - {0}",d.nev);
           db++;
         }
       }
       if (db==0) Console.WriteLine("Senki sem kapott 5-öst.");
     }
     //...............................................................................
     static void HanyanBuktak()
     {
       int db = 0;
       foreach(diak d in osztaly)
       {
         if (d.jegy==1)
           db++;
       }
       Console.WriteLine("Bukottak száma = {0}",db);
     }
     //...............................................................................
     static void Atlag_Bukottakkal()
     {
       int osszeg = 0;
       foreach(diak d in osztaly)
       {
         osszeg = osszeg + d.jegy;
       }
       if (osztaly.Count>0)
       {
          double atlag = (double)osszeg / osztaly.Count;
          Console.WriteLine("Az osztály átlaga (bukottakkal) = {0}", atlag);
       }
       else Console.WriteLine("Az osztály üres, nem lehet átlagot számolni");
     }
     //...............................................................................
     static void Atlag_BukasNelkul()
     {
       int osszeg = 0;
       int db = 0;
       foreach(diak d in osztaly)
       {
         if (d.jegy>1)
         {
            osszeg = osszeg + d.jegy;
            db++;
         }
       }
       if (db>0)
       {
          double atlag = (double)osszeg / db;
          Console.WriteLine("Az osztály átlaga (bukások nélkül {0} fővel) = {1}",
                                 db, atlag);
       }
       else Console.WriteLine("Az osztályból senki sem kapott jobb jegyet 1-esnél");
     }
     //...............................................................................
     static void Statisztika()
     {
       int[] jegyek_db = new int[6];
       foreach(diak d in osztaly)
       {
         int j = d.jegy;
         jegyek_db[ j ] ++;
       }
       for(int i=1;i<=5;i++)
       {
         Console.WriteLine("Az {0} érdemjegyet {1} fő kapta meg",i,jegyek_db[i]);
       }
     }
     //...............................................................................
  }
}
 
Hernyák Zoltán
2013-01-24 17:50:50