Java programozás – 2007 októberi emelt informatika érettségi programozási feladatának megoldása (2. 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. Listával sokkal tömörebb lett az utolsó feladat megoldása.

Adattároló osztály:

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

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 )
  {
    if( hazai.equals(csapat) && hazaiVeg < vendegVeg )
    {
      return true;
    }
    else
    {
      return false;
    }
  }
}

A feladat megoldásai:

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

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

public class Webotlet_07okt_foci_java_v2
{
  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.kiForditott().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
    {
      int min = 0;
      for( int i = 1; i < kikapott.size(); i++ )
      {
        if( meccsek.get(i).getFordulo() < meccsek.get(min).getFordulo() )
        {
          min = i;
        }
      }
      System.out.println(kikapott.get(min).getFordulo() + " "
        + kikapott.get(min).getVendeg());
    }
    
    // 7. feladat
    ArrayList<String> eredmenyek = new ArrayList<>();
    ArrayList<Integer> eredmenyekDb = new ArrayList<>();
    
    int idx;
    for( int i = 0; i < meccsek.size(); i++ )
    {
      idx = eredmenyek.indexOf(meccsek.get(i).golEredmeny());
      if( idx == -1 )
      {
        eredmenyek.add(meccsek.get(i).golEredmeny());
        eredmenyekDb.add(1);
      }
      else
      {
        eredmenyekDb.set(idx, eredmenyekDb.get(idx) + 1);
      }
    }
    
    try
    {
      RandomAccessFile ki = new RandomAccessFile("stat.txt", "rw");
      ki.setLength(0);
      
      for( int i = 0; i < eredmenyek.size(); i++ )
      {
        ki.writeBytes(eredmenyek.get(i) + ": "
          + eredmenyekDb.get(i) + " 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 .