1. tanár

Egy iskola tanárairól tudjuk, hogy mikor milyen órát tartanak. A tanárokat, a tantárgyakat, a hét napjait, a napokon belüli órákat sorszámukkal azonosítjuk. Készíts programot (tanár.pas, …), amely megadja:

  • A. minden napra a szabadnapos tanárok számát;
  • B. azt a tanárt, akinek a legkevesebb lyukasórája van (lyukasóra: aznap előtte is van órája valamikor és utána is van órája valamikor);
  • C. az adott T tanárt egész héten helyettesíteni tudó tanárt (ha lehetséges, akkor úgy, hogy szabad napján senkit ne kelljen behívni az iskolába).
  • D. adott T tanárt a hét H. napján helyettesítő tanárokat úgy, hogy minden óráján szakos helyettesítés legyen;

Az tanár.be szöveges állomány első sorában a tanárok száma (1< =N< =100), a tantárgyak száma (1< =M< =100), egy tanár sorszáma (1< =T< =N) és egy nap sorszáma van (1< =H< =5), egy-egy szóközzel elválasztva. A következő sorok mindegyikében 4 egész szám van, egy-egy szóközzel elválasztva: tanár sorszáma, tanított tantárgy sorszáma, nap (1 és 5 közötti egész szám), óra (0 és 8 közötti egész szám). Például 3 7 2 0 azt jelenti, hogy a harmadik tanár a hetedik tantárgyat a hét második napján, a nulladik órában tanítja. Az tanár.ki szöveges állományba négy sort kell írni! Az első sorba az A, a másodikba a B, a harmadikba a C, a negyedikbe pedig a D részfeladat eredményét. Ha több megoldás van, a legkisebb sorszámút kell megadni! Ha nincs megoldás (C és D részfeladatban), akkor 1-et kell kiírni! Az első sorban 5 szám szerepeljen, egy-egy szóközzel elválasztva! A negyedik sor első száma a helyettesített órák száma legyen, amit a helyettesítő tanárok sorszámai követnek, órák szerinti sorrendben, egy-egy szóközzel elválasztva!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
 
namespace tanar
{
    class Program
    {
        static void Ki(int[] tomb)
        {
            for (int i = 0; i < tomb.Length; i++)
            {
                Console.Write(tomb[i]);
                if (i < tomb.Length - 1) Console.Write(" ");
            }
            Console.WriteLine();
        }
        static void Main(string[] args)
        {
 
            StreamReader file = new StreamReader("tanar.be");
 
            string line = file.ReadLine();
            string[] mezok = line.Split(' ');
            int tanarDb = Convert.ToInt32(mezok[0]);
            int targyDb = Convert.ToInt32(mezok[1]);
            int tanarIndex = Convert.ToInt32(mezok[2])-1;
            int valasztottNap = Convert.ToInt32(mezok[3]);
 
            int[,,] orak = new int[tanarDb,5,9];
            while ((line = file.ReadLine()) != null)
            {
                Console.WriteLine(line);
                mezok = line.Split(' ');
                int tanar = Convert.ToInt32(mezok[0])-1; // 0-tól indul a sorszámuk
                int targy = Convert.ToInt32(mezok[1]);
                int nap = Convert.ToInt32(mezok[2])-1; // 0-tól indul a sorszámuk
                int ora = Convert.ToInt32(mezok[3]);
                orak[tanar, nap, ora] = targy;
            }
 
            for (int tanar = 0; tanar < tanarDb; tanar++)
            {
                for (int nap = 0; nap < 5; nap++)
                {
                    for (int ora = 0; ora < 9; ora++)
                    {
                        if (orak[tanar,nap,ora] >0)
                        Console.WriteLine("tanar: {0}, nap: {1}, ora: {2}, targy: {3}", tanar+1, nap+1, ora, orak[tanar, nap, ora]);
                    }
                }
            }
 
            // szabadnapos tanárok száma naponként
            int[] szabad = new int[] { 0, 0, 0, 0, 0 };
            for (int nap = 0; nap < 5; nap++)
            {
                for (int tanar = 0; tanar < tanarDb; tanar++)
                {
                    int napiOraszam = 0;
                    for (int ora = 0; ora < 9; ora++) {
                        if (orak[tanar, nap, ora] > 0) napiOraszam++;
                    }
                    if (napiOraszam == 0) szabad[nap]++;
                }
                Console.Write(szabad[nap]);
                if (nap != 4) Console.Write(" ");
            }
            Console.WriteLine();
 
            Ki(szabad);
 
            file.Close();
            Console.ReadKey();
        }
    }
}
oktatas/informatika/programozas/oktv/2012.txt · Utolsó módosítás: 2019/06/04 14:18 szerkesztette: barnkopf
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0