Java programozás – 2007 októberi emelt informatika érettségi programozási feladatának megoldása (3. verzió)

A feladat leírását, melynek a megoldását közzéteszem innen töltheted le. Ez a megoldás listával dolgozik. Az adattároló osztályban sok feladatot előkészítek, és a végső megoldásban ezeket használom. Ahol csak lehet, foreach ciklust használok. Az utolsó feladatot egy eddig ritkán használt HashMap adatszerkezettel oldottam meg, ínyenceknek ajánlott.

Adattároló osztály:

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

public class Meccs
{
  private int fordulo;
  private int hazaiVeg;
  private int vendegVeg;
  private int hazaiFel;
  private int vendegFel;
  private String hazai;
  private String vendeg;
  
  public Meccs( String[] tomb )
  {
    fordulo = Integer.parseInt(tomb[0]);
    hazaiVeg = Integer.parseInt(tomb[1]);
    vendegVeg = Integer.parseInt(tomb[2]);
    hazaiFel = Integer.parseInt(tomb[3]);
    vendegFel = Integer.parseInt(tomb[4]);
    hazai = tomb[5];
    vendeg = tomb[6];
  }

  public int getFordulo()
  {
    return fordulo;
  }

  public int getHazaiVeg()
  {
    return hazaiVeg;
  }

  public int getVendegVeg()
  {
    return vendegVeg;
  }

  public int getHazaiFel()
  {
    return hazaiFel;
  }

  public int getVendegFel()
  {
    return vendegFel;
  }

  public String getHazai()
  {
    return hazai;
  }

  public String getVendeg()
  {
    return vendeg;
  }

  @Override
  public String toString()
  {
    return "Meccs{" + "fordulo=" + fordulo + ", hazaiVeg="
      + hazaiVeg + ", vendegVeg=" + vendegVeg + ", hazaiFel="
      + hazaiFel + ", vendegFel=" + vendegFel + ", hazai="
      + hazai + ", vendeg=" + vendeg + '}';
  }
  
  public String vegEredmeny()
  {
    return hazai + "-" + vendeg + ": " + hazaiVeg + "-"
      + vendegVeg + " (" + hazaiFel + "-" + vendegFel + ")";
  }
  
  public String golEredmeny()
  {
    String eredmeny;
    if( hazaiVeg > vendegVeg )
    {
      eredmeny = hazaiVeg + "-" + vendegVeg;
    }
    else
    {
      eredmeny = vendegVeg + "-" + hazaiVeg;
    }
    return eredmeny;
  }
  
  public String kiForditott()
  {
    String csapat = "-";
    if( hazaiVeg > vendegVeg && hazaiFel < vendegFel )
    {
      csapat = hazai;
    }
    else if( hazaiVeg < vendegVeg && hazaiFel > vendegFel )
    {
      csapat = vendeg;
    }
    return csapat;
  }
  
  public boolean hazaiKikapott( String csapat )
  {
    return hazai.equals(csapat) && hazaiVeg < vendegVeg;
  }
}

A feladat megoldásai:

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

import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Webotlet_07okt_foci_java_v3
{
  public static void main(String[] args)
  {
    // 1. feladat
    ArrayList<Meccs> meccsek = new ArrayList<>();
    
    try
    {
      RandomAccessFile raf = new RandomAccessFile("meccs.txt", "r");
      raf.readLine();
      
      String sor;
      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
      {
        meccsek.add(new Meccs( sor.split(" ")));
      }
      raf.close();
    }
    catch( IOException e )
    {
      System.out.println("HIBA");
    }
    
//    for( int i = 0; i < meccsek.length; i++ )
//    {
//      System.out.println(meccsek[i].toString());
//    }
    
    // 2. feladat
    System.out.println("2. feladat");
    
    Scanner sc = new Scanner(System.in);
    System.out.println("Add meg a fordulo szamat!");
    int fordulo = sc.nextInt();
    
    for( Meccs meccs : meccsek)
    {
      if( meccs.getFordulo() == fordulo )
      {
        System.out.println(meccs.vegEredmeny());
      }
    }

    // 3. feladat
    System.out.println("3. feladat");
    
    for( Meccs meccs : meccsek)
    {
      if( !meccs.kiFforditott().equals("-") )
      {
        System.out.println(meccs.getFordulo() + " " + meccs.kiForditott());
      }
    }
    
    // 4. feladat
    System.out.println("4. feladat");
    
    sc = new Scanner(System.in);
    System.out.println("Add meg egy csapat nevet!");
    String csapat = sc.nextLine();
    
    // 5. feladat
    System.out.println("5. feladat");
    
    int lott = 0;
    int kapott = 0;
    for( Meccs meccs : meccsek)
    {
      if( meccs.getHazai().equals(csapat) )
      {
        lott += meccs.getHazaiVeg();
        kapott += meccs.getVendegVeg();
      }
      else if( meccs.getVendeg().equals(csapat) )
      {
        lott += meccs.getVendegVeg();
        kapott += meccs.getHazaiVeg();
      }
    }
    
    System.out.println("lott: " + lott + " kapott: " + kapott);
    
    // 6. feladat
    System.out.println("6. feladat");
    
    ArrayList<Meccs> kikapott = new ArrayList<>();
    
    for( Meccs meccs : meccsek)
    {
      if( meccs.hazaiKikapott(csapat) )
      {
        kikapott.add(meccs);
      }
    }
    
    if( kikapott.isEmpty() )
    {
      System.out.println("A csapat otthon veretlen maradt.");
    }
    else
    {
      Meccs eloszor = meccsek.get(0);
      for( Meccs meccs : kikapott)
      {
        if( meccs.getFordulo() < eloszor.getFordulo() )
        {
          eloszor = meccs;
        }
      }
      
      System.out.println(eloszor.getFordulo() + " " + eloszor.getVendeg());
    }
    
    // 7. feladat
    HashMap<String,Integer> eredmenyek = new HashMap<>();
    
    for( Meccs meccs : meccsek)
    {
      if( eredmenyek.containsKey(meccs.golEredmeny()) )
      {
        eredmenyek.replace(meccs.golEredmeny(),
          eredmenyek.get(meccs.golEredmeny()) + 1);
      }
      else
      {
        eredmenyek.put(meccs.golEredmeny(), 1);
      }
    }
    
    try
    {
      RandomAccessFile ki = new RandomAccessFile("stat.txt", "rw");
      ki.setLength(0);
      
      for( Map.Entry<String, Integer> elem : eredmenyek.entrySet())
      {
        ki.writeBytes(elem.getKey() + ": " + elem.getValue() + " darab\n");
      }
      ki.close();
    }
    catch( IOException e )
    {
      System.out.println("HIBA");
    }
  }
}

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 .