Java programozás – 2018 októberi emelt informatika érettségi – keríté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. Nem a legszebb megoldásom, de az alap Java ismeretekkel, ameddig 1 tanév alatt eljutunk, megoldható a feladat. A többi megoldás már több helyen is egyszerűsíteni fog.

Adattároló osztály:

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

public class Telek
{
  private int oldal;
  private int szel;
  private char szin;
  
  private int szam;
  private boolean festett;
  
  public Telek(String[] tomb)
  {
    oldal = Integer.parseInt(tomb[0]);
    szel = Integer.parseInt(tomb[1]);
    szin = tomb[2].charAt(0);
  }

  public int getOldal()
  {
    return oldal;
  }

  public int getSzel()
  {
    return szel;
  }

  public char getSzin()
  {
    return szin;
  }

  public int getSzam()
  {
    return szam;
  }

  public void setSzam(int szam)
  {
    this.szam = szam;
  }

  @Override
  public String toString()
  {
    return "Telek{" + "oldal=" + oldal + ", szel="
      + szel + ", szin=" + szin + ", szam=" + szam + '}';
  }
}

A feladat megoldásai:

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

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

public class Webotlet_18okt_kerites
{

  public static void main(String[] args)
  {
    Telek[] telkek = null;
    
    try
    {
      RandomAccessFile raf = new RandomAccessFile("kerites.txt", "r");
      String sor;
      int db = 0;
      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
      {
        db++;
      }
      telkek = new Telek[db];
      raf.seek(0);
      int hely = 0;
      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
      {
        telkek[hely] = new Telek(sor.split(" "));
        hely++;
      }
      raf.close();
    }
    catch( IOException e )
    {
      System.out.println("HIBA");
    }
    
    System.out.println("2. feladat");
    System.out.println("Az eladott telkek szama: " + telkek.length);
    System.out.println();
    
    System.out.println("3. feladat");
    // hazszamok kiosztasa
    int paratlanSzam = 1;
    int parosSzam = 2;
    for( int i = 0; i < telkek.length; i++ )
    {
      if( telkek[i].getOldal() == 0 )
      {
        telkek[i].setSzam(parosSzam);
        parosSzam += 2;
      }
      else
      {
        telkek[i].setSzam(paratlanSzam);
        paratlanSzam += 2;
      }
    }
    
//    for( int i = 0; i < telkek.length; i++ )
//    {
//      System.out.println(telkek[i].toString());
//    }
    
    if( telkek[telkek.length - 1].getOldal() == 0 )
    {
      System.out.println("A paros oldalon adtak el az utolso telket.");
    }
    else
    {
      System.out.println("A paratlan oldalon adtak el az utolso telket.");
    }
    
    System.out.println("Az utolso telek hazszama: " + telkek[telkek.length - 1].getSzam());
    System.out.println();
    
    System.out.println("4. feladat");
    int paratlanDb = 0;
    for( int i = 0; i < telkek.length; i++ )
    {
      if( telkek[i].getOldal() == 1 )
      {
        paratlanDb++;
      }
    }
    
    Telek[] paratlanok = new Telek[paratlanDb];
    int hely = 0;
    for( int i = 0; i < telkek.length; i++ )
    {
      if( telkek[i].getOldal() == 1 )
      {
        paratlanok[hely] = telkek[i];
        hely++;
      }
    }
    
    for( int i = 0; i < paratlanok.length - 1; i++ )
    {
      if( paratlanok[i].getSzin() != ':' && paratlanok[i].getSzin() != '#'
        && paratlanok[i].getSzin() == paratlanok[i + 1].getSzin() )
      {
        System.out.println("A szomszedossal egyezik a kerites szine: "
          + paratlanok[i].getSzam());
        break;
      }
    }
    System.out.println();
    
    System.out.println("5. feladat");
    Telek[] parosok = new Telek[telkek.length - paratlanDb];
    hely = 0;
    for( int i = 0; i < telkek.length; i++ )
    {
      if( telkek[i].getOldal() == 0 )
      {
        parosok[hely] = telkek[i];
        hely++;
      }
    }
    
    Scanner sc = new Scanner(System.in);
    System.out.print("Adjon meg egy hazszamot! ");
    int szam = sc.nextInt();
    int idx = -1;
    char allapot;
    String hasznalt = "";
    if( szam % 2 == 0 )
    {
      idx = szam / 2 - 1;
      allapot = parosok[idx].getSzin();
      hasznalt += allapot;
      if( idx > 0 )
      {
        hasznalt += parosok[idx - 1].getSzin();
      }
      if( idx < parosok.length - 1 )
      {
        hasznalt += parosok[idx + 1].getSzin();
      }
    }
    else
    {
      idx = szam / 2;
      allapot = paratlanok[idx].getSzin();
      hasznalt += allapot;
      if( idx > 0 )
      {
        hasznalt += paratlanok[idx - 1].getSzin();
      }
      if( idx < parosok.length - 1 )
      {
        hasznalt += paratlanok[idx + 1].getSzin();
      }
    }
    System.out.println("A kerites szine / allapota: " + allapot);
    String szinek = "ABCDEFGH";
    
    for( int i = 0; i < szinek.length(); i++ )
    {
      if( !hasznalt.contains(""+szinek.charAt(i)))
      {
        System.out.println("Lehetseges festesi szin: " + szinek.charAt(i));
        break;
      }
    }
    
//    for( int i = 0; i < paratlanok.length; i++ )
//    {
//      System.out.println(paratlanok[i].toString());
//    }
    
    // 6. feladat
    try
    {
      RandomAccessFile ki = new RandomAccessFile("utcakep.txt", "rw");
      ki.setLength(0);

      for( int i = 0; i < paratlanok.length; i++ )
      {
        for( int j = 0; j < paratlanok[i].getSzel(); j++ )
        {
          ki.writeBytes(""+paratlanok[i].getSzin());
        }
      }
      ki.writeBytes("\n");

      for( int i = 0; i < paratlanok.length; i++ )
      {
        ki.writeBytes(""+paratlanok[i].getSzam());
        int start = 1;
        if( paratlanok[i].getSzam() > 9 )
        {
          start++;
        }
        if( paratlanok[i].getSzam() > 99 )
        {
          start++;
        }
        for( int j = start; j < paratlanok[i].getSzel(); j++ )
        {
          ki.writeBytes(" ");
        }
      }
      ki.writeBytes("\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 .