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!
