Java programozás – 2013 májusi 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, semmi extra nincs benne.

Adattároló osztály:

/**
 *
 * @author https://webotlet.hu
 */
package webotlet_13maj_valasztasok

public class Jelolt
{
  private int kerulet;
  private int szavazatok;
  private String nev;
  private String part;
  
  public Jelolt( String[] tomb )
  {
    kerulet = Integer.parseInt(tomb[0]);
    szavazatok = Integer.parseInt(tomb[1]);
    nev = tomb[2] + " " + tomb[3];
    part = tomb[4];
    if( part.equals("-"))
    {
      part = "fuggetlen";
    }
  }

  public int getKerulet()
  {
    return kerulet;
  }

  public int getSzavazatok()
  {
    return szavazatok;
  }

  public String getNev()
  {
    return nev;
  }

  public String getPart()
  {
    return part;
  }

  @Override
  public String toString()
  {
    return "Jelolt{" + "kerulet=" + kerulet + ", szavazatok="
      + szavazatok + ", nev=" + nev + ", part=" + part + '}';
  }
}

A feladat megoldásai:

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

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

public class Webotlet_13maj_valasztasok
{
  public static void main(String[] args)
  {
    System.out.println("1. feladat");
    Jelolt[] jeloltek = null;
    
    try
    {
      RandomAccessFile raf;
      raf = new RandomAccessFile("szavazatok.txt","r");
      String sor;
      int db = 0;
      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
      {
        db++;
      }
      jeloltek = new Jelolt[db];
      
      raf.seek(0);
      int hely = 0;
      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
      {
        jeloltek[hely] = new Jelolt(sor.split(" "));
        hely++;
      }
      raf.close();
    }
    catch( IOException e )
    {
      System.out.println("HIBA");
    }
    
//    for( int i = 0; i < jeloltek.length; i++ )
//    {
//      System.out.println(jeloltek[i].toString());
//    }
    System.out.println("2. feladat");
    System.out.println("A helyhatosagi valasztason " 
      + jeloltek.length + " kepviselojelolt indult.");
    
    System.out.println("3. feladat");
    Scanner sc = new Scanner(System.in);
    System.out.println("Adja meg egy jelolt nevet:");
    String nev = sc.nextLine();
    
    boolean vanNev = false;
    for( int i = 0; i < jeloltek.length; i++ )
    {
      if( jeloltek[i].getNev().equals(nev))
      {
        System.out.println("A jelolt " 
          + jeloltek[i].getSzavazatok() + " szavazatot kapott.");
        vanNev = true;
        break;
      }
    }
    if( !vanNev )
    {
      System.out.println("Ilyen nevu kepviselojelolt "
        + "nem szerepel a nyilvantartasban!");
    }
    
    System.out.println("4. feladat");
    int osszSzavazat = 0;
    for( int i = 0; i < jeloltek.length; i++ )
    {
      osszSzavazat += jeloltek[i].getSzavazatok();
    }
    
    double szazalek = (osszSzavazat / (double)12345) * 100;
    System.out.println(String.format("A valasztason %d "
      + "allampolgar, a jogosultak %.2f%%-a vett reszt.",
      osszSzavazat, szazalek));
    
    
    System.out.println("5. feladat");
    // GYEP, HEP, TISZ, ZEP, fuggetlen
    int[] szavazatok = new int[5];
    
    for( int i = 0; i < jeloltek.length; i++ )
    {
      if( jeloltek[i].getPart().equals("GYEP") )
      {
        szavazatok[0] += jeloltek[i].getSzavazatok();
      }
      else if( jeloltek[i].getPart().equals("HEP") )
      {
        szavazatok[1] += jeloltek[i].getSzavazatok();
      }
      else if( jeloltek[i].getPart().equals("TISZ") )
      {
        szavazatok[2] += jeloltek[i].getSzavazatok();
      }
      else if( jeloltek[i].getPart().equals("ZEP") )
      {
        szavazatok[3] += jeloltek[i].getSzavazatok();
      }
      else
      {
        szavazatok[4] += jeloltek[i].getSzavazatok();
      }
    }
    
    System.out.println(String.format("Gyumolcsevok Partja= %.2f%%", 
      (szavazatok[0] / (double)osszSzavazat) * 100 ));
    System.out.println(String.format("Husevok Partja= %.2f%%", 
      (szavazatok[1] / (double)osszSzavazat) * 100 ));
    System.out.println(String.format("Tejivok Partja= %.2f%%", 
      (szavazatok[2] / (double)osszSzavazat) * 100 ));
    System.out.println(String.format("Zoldsegevok Partja= %.2f%%", 
      (szavazatok[3] / (double)osszSzavazat) * 100 ));
    System.out.println(String.format("Fuggetlen jeloltek= %.2f%%", 
      (szavazatok[4] / (double)osszSzavazat) * 100 ));
    
    
    System.out.println("6. feladat");
    int maxSzavazat = jeloltek[0].getSzavazatok();
    for( int i = 1; i < jeloltek.length; i++ )
    {
      if( jeloltek[i].getSzavazatok() > maxSzavazat )
      {
        maxSzavazat = jeloltek[i].getSzavazatok();
      }
    }
    
    for( int i = 0; i < jeloltek.length; i++ )
    {
      if( jeloltek[i].getSzavazatok() == maxSzavazat )
      {
        System.out.println( jeloltek[i].getNev() 
          + " " + jeloltek[i].getPart());
      }
    }
    
// 7. feladat        
    Jelolt[] nyertesek = new Jelolt[9];
    
    for( int i = 0; i < jeloltek.length; i++ )
    {
      if( nyertesek[ jeloltek[i].getKerulet() ] == null )
      {
        nyertesek[ jeloltek[i].getKerulet() ] = jeloltek[i];
      }
      else if( nyertesek[ jeloltek[i].getKerulet() ].getSzavazatok() <
        jeloltek[i].getSzavazatok() )
      {
        nyertesek[ jeloltek[i].getKerulet() ] = jeloltek[i];
      }
    }
    
    try
    {
      RandomAccessFile out;
      out = new RandomAccessFile("kepviselok.txt", "rw");
// ha esetleg többször hoznánk létre a fájlt,
// töröljük az előző tartalmát
      out.setLength(0);
      for( int i = 1; i < nyertesek.length; i++ )
      {
        out.writeBytes(i + " " + nyertesek[i].getNev() 
          + " " + nyertesek[i].getPart() + "\n");
      }
      out.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 .