Java programozás – 2007 októberi emelt informatika érettségi programozási feladatának megoldása (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 néhány feladatot előkészítek, és a végső megoldásban ezeket használom.

Adattároló osztály:

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

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;
  }
}

A feladat megoldásai:

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

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

public class Webotlet_07okt_foci_java
{
  public static void main(String[] args)
  {
    // 1. feladat
    Meccs[] meccsek = null;
    
    try
    {
      RandomAccessFile raf = new RandomAccessFile("meccs.txt", "r");
      
      meccsek = new Meccs[Integer.parseInt(raf.readLine())];
      
      String sor;
      int hely = 0;
      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
      {
        meccsek[hely] = new Meccs( sor.split(" "));
        hely++;
      }
      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( int i = 0; i < meccsek.length; i++ )
    {
      if( meccsek[i].getFordulo() == fordulo )
      {
        System.out.println(meccsek[i].vegEredmeny());
      }
    }

    // 3. feladat
    System.out.println("3. feladat");
    
    for( int i = 0; i < meccsek.length; i++ )
    {
      if( meccsek[i].getHazaiVeg() > meccsek[i].getVendegVeg() 
        && meccsek[i].getHazaiFel() < meccsek[i].getVendegFel() )
      {
        System.out.println(meccsek[i].getFordulo() + " " + meccsek[i].getHazai());
      }
      else if( meccsek[i].getHazaiVeg() < meccsek[i].getVendegVeg() 
        && meccsek[i].getHazaiFel() > meccsek[i].getVendegFel() )
      {
        System.out.println(meccsek[i].getFordulo() + " " + meccsek[i].getVendeg());
      }
    }
    
    // 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( int i = 0; i < meccsek.length; i++ )
    {
      if( meccsek[i].getHazai().equals(csapat) )
      {
        lott += meccsek[i].getHazaiVeg();
        kapott += meccsek[i].getVendegVeg();
      }
      else if( meccsek[i].getVendeg().equals(csapat) )
      {
        lott += meccsek[i].getVendegVeg();
        kapott += meccsek[i].getHazaiVeg();
      }
    }
    
    System.out.println("lott: " + lott + " kapott: " + kapott);
    
    // 6. feladat
    System.out.println("6. feladat");
    
    int dbCsapat = 0;
    for( int i = 0; i < meccsek.length; i++ )
    {
      if( meccsek[i].getHazai().equals(csapat)
        && meccsek[i].getHazaiVeg() < meccsek[i].getVendegVeg() )
      {
        dbCsapat++;
      }
    }
    
    if( dbCsapat == 0 )
    {
      System.out.println("A csapat otthon veretlen maradt.");
    }
    else
    {
      Meccs[] csapatMeccsek = new Meccs[dbCsapat];
      int hely = 0;
      for( int i = 0; i < meccsek.length; i++ )
      {
        if( meccsek[i].getHazai().equals(csapat)
          && meccsek[i].getHazaiVeg() < meccsek[i].getVendegVeg() )
        {
          csapatMeccsek[hely] = meccsek[i];
          hely++;
        }
      }
      
      int min = 0;
      
      for( int i = 1; i < csapatMeccsek.length; i++ )
      {
        if( csapatMeccsek[i].getFordulo() < csapatMeccsek[min].getFordulo() )
        {
          min = i;
        }
      }
      
      System.out.println(csapatMeccsek[min].getFordulo() + " "
        + csapatMeccsek[min].getVendeg());
    }
    
    // 7. feladat
    String[] eredmenyek = new String[meccsek.length];
    int[] eredmenyekDb = new int[meccsek.length];
    
    int hely = 0;
    for( int i = 0; i < meccsek.length; i++ )
    {
      int hol = -1;
      for( int j = 0; j < hely; j++ )
      {
        if( eredmenyek[j].equals(meccsek[i].golEredmeny()) )
        {
          hol = j;
          break;
        }
      }
      
      if( hol == -1 )
      {
        eredmenyek[hely] = meccsek[i].golEredmeny();
        eredmenyekDb[hely] = 1;
        hely++;
      }
      else
      {
        eredmenyekDb[hol]++;
      }
    }
    
    try
    {
      RandomAccessFile ki = new RandomAccessFile("stat.txt", "rw");
      ki.setLength(0);
      
      for( int i = 0; i < hely; i++ )
      {
        ki.writeBytes(eredmenyek[i] + ": "
          + eredmenyekDb[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 .