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!