Java programozás – 2019 májusi idegen nyelvű emelt informatika érettségi – tantárgyfelosztás (1. verzió)

A feladat leírását, melynek a megoldását közzéteszem innen töltheted le. Ez a megoldás tömbbel dolgozik. Az adattároló osztályban egy új tulajdonságot is felveszek. Ez a feladat szerintem túl könnyű volt 🙂
Adattároló osztály:

/**
 *
 * @author https://webotlet.hu
 */
package webotlet_19majma_tantargyfelosztas;

public class Adat
{
  private String tanar;
  private String tantargy;
  private String osztaly;
  private int db;
  private boolean osztalyfonok;
  
  public Adat(String sor1, String sor2, String sor3, String sor4)
  {
    tanar = sor1;
    tantargy = sor2;
    osztaly = sor3;
    db = Integer.parseInt(sor4);
    if( tantargy.equals("osztalyfonoki"))
    {
      osztalyfonok = true;
    }
  }

  public String getTanar()
  {
    return tanar;
  }

  public String getTantargy()
  {
    return tantargy;
  }

  public String getOsztaly()
  {
    return osztaly;
  }

  public int getDb()
  {
    return db;
  }

  public boolean isOsztalyfonok()
  {
    return osztalyfonok;
  }

  @Override
  public String toString()
  {
    return "Adat{" + "tanar=" + tanar + ", tantargy=" 
      + tantargy + ", osztaly=" + osztaly + ", db=" 
      + db + ", osztalyfonok=" + osztalyfonok + '}';
  }
}

A feladat megoldásai:

/**
 *
 * @author https://webotlet.hu
 */
package webotlet_19majma_tantargyfelosztas;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;

public class Webotlet_19majma_tantargyfelosztas
{

  public static void main(String[] args)
  {
    Adat[] adatok = null;
    try
    {
      RandomAccessFile raf = new RandomAccessFile("beosztas.txt", "r");
      String sor;
      int db = 0;
      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
      {
        db++;
      }
      
      adatok = new Adat[db / 4];
      raf.seek(0);
      
      int hely = 0;
      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
      {
        adatok[hely] = new Adat(sor, raf.readLine(),
          raf.readLine(), raf.readLine());
        hely++;
      }
      raf.close();
    }
    catch( IOException e )
    {
      System.out.println("HIBA");
    }
    
//    for( int i = 0; i < adatok.length; i++ )
//    {
//      System.out.println(adatok[i].toString());
//    }

    System.out.println("2. feladat");
    System.out.println("A fajlban " + adatok.length
      + " bejegyzes van.");
    
    System.out.println("3. feladat");
    int orak = 0;
    for( int i = 0; i < adatok.length; i++ )
    {
      orak += adatok[i].getDb();
    }
    
    System.out.println("Az iskolaban a heti osszoraszam: " + orak);
    
    System.out.println("4. feladat");
    Scanner sc = new Scanner(System.in);
    System.out.print("Egy tanar neve= ");
    String tanar = sc.nextLine();
    int tanarOrak = 0;
    for( int i = 0; i < adatok.length; i++ )
    {
      if( adatok[i].getTanar().equals(tanar) )
      {
        tanarOrak += adatok[i].getDb();
      }
    }
    
    System.out.println("A tanar heti oraszama: " + tanarOrak);
    
    try
    {
      RandomAccessFile ki = new RandomAccessFile("of.txt", "rw");
      ki.setLength(0);
      for( int i = 0; i < adatok.length; i++ )
      {
        if( adatok[i].isOsztalyfonok() )
        {
          ki.writeBytes(adatok[i].getOsztaly() + " - "
            + adatok[i].getTanar() + "\n");
        }
      }
    }
    catch( IOException e )
    {
      System.out.println("HIBA");
    }
    
    System.out.println("6. feladat");
    System.out.print("Osztaly= ");
    String osztaly = sc.nextLine();
    System.out.print("Tantargy= ");
    String tantargy = sc.nextLine();
    int db = 0;
    for( int i = 0; i < adatok.length; i++ )
    {
      if( adatok[i].getOsztaly().equals(osztaly)
        && adatok[i].getTantargy().equals(tantargy) )
      {
        db++;
      }
    }
    
    if( db == 2 ) // feltetelezzuk, hogy nincs nagyobb bontas
    {
      System.out.println("Csoportbontasban tanuljak.");
    }
    else
    {
      System.out.println("Osztalyszinten tanuljak.");
    }
    
    System.out.println("7. feladat");
    
    String[] tanarok = new String[adatok.length];
    int hely = 0;
    for( int i = 0; i < adatok.length; i++ )
    {
      boolean benne = false;
      for( int j = 0; j < hely; j++ )
      {
        if( tanarok[j].equals(adatok[i].getTanar()) )
        {
          benne = true;
          break;
        }
      }
      
      if( !benne )
      {
        tanarok[hely] = adatok[i].getTanar();
        hely++;
      }
    }
    
    System.out.println("Az iskolaban " + hely + " tanar tanit.");
  }
  
}

Ha hibát találsz benne, kérlek jelezd!

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

*

Ez az oldal az Akismet szolgáltatást használja a spam csökkentésére. Ismerje meg a hozzászólás adatainak feldolgozását .