
import java.io.*;
import java.util.Scanner;
// A Serializable interfész implementálása az objektumként való mentéshez kell
class Matrix implements Serializable {
// A mátrix sorainak és oszlopainak a száma
int s, o;
// A mátrix (mint kétdimenziós tömb)
int[][] a;
public Matrix(int[][] a) {
this.a = a;
s = a.length;
// Ilyen eset ugyan nem lesz, de biztos ami biztos
o = (s > 0) ? a[0].length : 0;
}
public Matrix() {
String hiba = "Nem megfelelő input!";
Scanner sc = new Scanner(System.in);
boolean ok;
do {
ok = true;
try {
System.out.print("Sorok száma:");
s = Integer.parseInt(sc.next());
if (s <= 0) {
throw new Exception(hiba);
}
System.out.print("Oszlopok száma:");
o = Integer.parseInt(sc.next());
if (o <= 0) {
throw new Exception(hiba);
}
a = new int[s][o];
for (int i = 0; i < s; i++) {
for (int j = 0; j < o; j++) {
System.out.print((i+1) + ". sor " + (j+1) + ". elem:");
a[i][j] = Integer.parseInt(sc.next());
}
}
}
catch (Exception e) {
System.out.println(hiba);
ok = false;
}
} while (!ok);
}
public Matrix(int s, int o, int tol, int ig) {
this.s = s;
this.o = o;
this.a = new int[s][o];
for (int i = 0; i < s; i++) {
for (int j = 0; j < o; j++) {
a[i][j] = (int)Math.floor(Math.random() * (ig - tol + 1) + tol);
}
}
}
public String toString() {
if (s == 0) {
// Ilyen eset ugyan nem lesz, de biztos ami biztos
return "[[]]";
} else {
StringBuffer st = new StringBuffer("[");
for (int i = 0; i < s; i++) {
st.append("[");
for (int j = 0; j < o; j++) {
st.append(a[i][j] + ",");
}
st.replace(st.length() - 1, st.length(), "],");
}
st.replace(st.length() - 1, st.length(), "]");
return new String(st);
}
}
public boolean szimm() {
boolean r = s == o;
for (int i = 0; i < s - 1 && r; i++) {
for (int j = i + 1; j < o && r; j++) {
if (a[i][j] != a[j][i]) {
r = false;
}
}
}
return r;
}
// A mátrix mentése bináris fájlba objektumként
public void ment(String fnev) {
try {
ObjectOutputStream os = new ObjectOutputStream(
new FileOutputStream(fnev));
os.writeObject(this);
os.close();
}
catch (Exception e) {
System.out.println(e);
}
}
// A mátrix betöltése bináris fájlból objektumként
public static Matrix betolt(String fnev) {
try {
ObjectInputStream os = new ObjectInputStream(
new FileInputStream(fnev));
Object obj = os.readObject();
os.close();
return (Matrix)obj;
}
catch (Exception e) {
System.out.println(e);
return null;
}
}
}
public class v_01 {
public static void main(String[] args) {
// Egy szimmetrikus mátrix
int[][] a = {{1, 2, 3}, {2, 5, 7}, {3, 7, 8}};
Matrix mtx = new Matrix(a);
System.out.println("Egy szimmetrikus mátrix:");
System.out.println(mtx);
System.out.println(mtx.szimm());
// Egy billentyűzetről bekért mátrix
mtx = new Matrix();
System.out.println("A bekért mátrix:");
System.out.println(mtx);
System.out.println(mtx.szimm());
// Egy generált mátrix
System.out.println("Egy generált mátrix:");
mtx = new Matrix(2, 2, 1, 2);
System.out.println(mtx);
System.out.println(mtx.szimm());
// Mátrix mentése fájlba
mtx.ment("adat.dat");
// Mátrix betöltése fájlból
mtx = Matrix.betolt("adat.dat");
System.out.println("A fájlból betöltött mátrix:");
System.out.println(mtx);
if (mtx != null) {
System.out.println(mtx.szimm());
}
}
}
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.*;
abstract class SikIdom implements Comparable {
public abstract double terulet();
public int compareTo(Object obj) {
double ter1 = terulet();
double ter2 = ((SikIdom) obj).terulet();
if (ter1 < ter2)
return -1;
if (ter1 > ter2)
return 1;
return 0;
/* Másik megoldás:
return (int)Math.round((terulet()-((SikIdom)obj).terulet()));
*/
}
}
class Kor extends SikIdom {
protected double r;
public Kor(double r) {
this.r = r;
}
public double terulet() {
return Math.pow(r, 2) * Math.PI;
}
public String toString() {
return "Kör: r = " + r + ", terulet = " + terulet();
}
}
class Teglalap extends SikIdom {
protected double a,b;
public Teglalap(double a, double b) {
this.a = a;
this.b = b;
}
public double terulet() {
return a*b;
}
public String toString() {
return "Téglalap: a = " + a + ", b = " + b +
", terület = " + terulet();
}
}
class Negyzet extends Teglalap {
public Negyzet(double a) {
super(a,a);
}
public String toString() {
return "Négyzet: a = " + a +
", terület = " + terulet();
}
}
class SikIdomok {
private Vector idomok = new Vector();
public SikIdomok() {
idomok.add(new Teglalap(6, 9));
idomok.add(new Kor(4));
idomok.add(new Negyzet(5));
idomok.add(new Negyzet(7));
idomok.add(new Kor(1));
}
void lista(String info) {
System.out.println("\n" + info);
for (int i = 0; i < idomok.size(); i++)
System.out.println(idomok.get(i));
}
public void lista_txt(String fnev) {
// Új Vector-t, hogy az eredeti sorrend is megmaradjon
Vector rend = new Vector(idomok);
Collections.sort(rend);
try {
PrintStream ps = new PrintStream(
new FileOutputStream(fnev));
ps.println("Síkidomok száma: " + idomok.size());
for (int i = 0; i < rend.size(); i++)
ps.println(rend.get(i));
ps.close();
}
catch (Exception e) {
System.out.println(e);
}
}
double atlagTerulet() {
if (idomok.isEmpty())
return 0;
double osszTer = 0;
for (int i = 0; i < idomok.size(); i++) {
SikIdom sikIdom = (SikIdom) idomok.get(i);
osszTer += sikIdom.terulet();
}
return osszTer / idomok.size();
}
int korokSzama() {
int ksz = 0;
for (int i = 0; i < idomok.size(); i++)
if (idomok.get(i) instanceof Kor)
ksz++;
return ksz;
}
void run() {
if (idomok.isEmpty()) {
System.out.println("\nNincs egyetlen sikidom sem!");
return;
}
// Lista a sikidomok létrehozásának sorrendjében
lista("Sikidomok:");
// Átlagterület
System.out.println("\nSikidomok átlag területe: " + atlagTerulet());
// Körök száma
System.out.println("\nKörök száma: " + korokSzama());
// Legkisebb és legnagyobb területű síkidom
System.out.println("\nLegkisebb területű sikidom : " + Collections.min(idomok));
System.out.println("Legnagyobb területű sikidom: " + Collections.max(idomok));
// Terület szerint rendezett lista szövegfájlba
Collections.sort(idomok);
lista_txt("adatok.txt");
}
}
public class v_02 {
public static void main(String[] args) {
new SikIdomok().run();
}
}
import java.util.Scanner;
import java.util.TreeSet;
import java.util.Vector;
interface ILotto {
int Db = 5;
int Tol = 1;
int Ig = 90;
}
class Szelveny implements ILotto {
// A szelvény számai
TreeSet<Integer> sz = new TreeSet<>();
Szelveny(boolean general) {
int a, i;
if (general) {
i = 0;
while (i < ILotto.Db) {
a = (int)Math.floor(Math.random() * (Ig - Tol + 1) + Tol);
if (!sz.contains(a)) {
sz.add(a);
i++;
}
}
} else {
String hiba = "Nem megfelelő input!";
Scanner sc = new Scanner(System.in);
boolean ok;
do {
ok = true;
sz.clear();
try {
for (i = 0; i < Db; i++) {
System.out.print((i + 1) + ". szám:");
a = Integer.parseInt(sc.next());
if (a < Tol || a > Ig) {
throw new RuntimeException(hiba);
} else if (sz.contains(a)) {
throw new RuntimeException(hiba);
} else {
sz.add(a);
}
}
}
catch (Exception e) {
System.out.println(hiba);
ok = false;
}
} while (!ok);
}
}
public String toString() {
return sz.toString();
}
}
class Szelvenyek {
//Generált szelvények
Vector<Szelveny> szelv = new Vector<>();
//Nyerőszelvény
Szelveny nysz;
Szelvenyek () {
szelv.add(new Szelveny(true));
szelv.add(new Szelveny(true));
szelv.add(new Szelveny(true));
for (int i = 0; i < szelv.size(); i++) {
System.out.println((i + 1) + ". szelvény:" + szelv.get(i));
}
nysz = new Szelveny(false);
listaz();
}
int talalat(Szelveny sz1, Szelveny sz2) {
TreeSet<Integer> metszet = new TreeSet<>();
metszet.addAll(sz1.sz);
metszet.retainAll(sz2.sz);
return metszet.size();
}
void listaz() {
int i, t;
System.out.println("Nyerőszelvény:" + nysz);
System.out.println("Szelvények és találatuk:");
for (i = 0; i < szelv.size(); i++) {
t = talalat(szelv.get(i), nysz);
System.out.println((i + 1) + ". szelvény:" + szelv.get(i).toString() + ", találat:" + t);
}
}
}
public class v_03 {
public static void main(String[] args) {
new Szelvenyek();
}
}

