Ember osztály az adattárolásra és rövidítésre:
package tarsalgo;
public class Ember
{
private int ora;
private int perc;
private int azon;
private String irany;
private boolean be;
public Ember( String[] tomb )
{
ora = Integer.parseInt(tomb[0]);
perc = Integer.parseInt(tomb[1]);
azon = Integer.parseInt(tomb[2]);
irany = tomb[3];
be = tomb[3].equals("be");
}
public int getOra()
{
return ora;
}
public int getPerc()
{
return perc;
}
public int getAzon()
{
return azon;
}
public String getIrany()
{
return irany;
}
public boolean isBe()
{
return be;
}
@Override
public String toString()
{
return "Ember{" + "ora=" + ora + ", perc=" + perc +
", azon=" + azon + ", irany=" + irany + ", be=" + be + '}';
}
}
A main()-t tartalmazó osztály, mely a fájlkezelést és a feladatokat tartalmazza:
package tarsalgo;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;
public class Tarsalgo
{
public static void main(String[] args)
{
// 1. feladat
Ember[] emberek = null;
try
{
RandomAccessFile raf = new RandomAccessFile("ajto.txt","r");
String sor;
int db = 0;
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
db++;
}
emberek = new Ember[db];
raf.seek(0);
db = 0;
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
emberek[db] = new Ember(sor.split(" "));
db++;
}
raf.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
// for( Ember e : emberek )
// {
// System.out.println(e);
// }
// 2. feladat
System.out.println("2. feladat");
System.out.println("Az elso belepo: "+emberek[0].getAzon());
int hely = -1;
for( int i = emberek.length-1; i >= 0; i-- )
{
if( !emberek[i].isBe() )
{
hely = i;
}
}
if( hely != -1 )
{
System.out.println("Az utolso kilepo: "+emberek[hely].getAzon());
}
else
{
System.out.println("Senki nem ment ki a tarsalgobol.");
}
// 3. feladat
int max = 0;
for( int i = 0; i < emberek.length; i++ )
{
if( emberek[i].getAzon() > max )
{
max = emberek[i].getAzon();
}
}
int[] darabok = new int[max+1];
for( int i = 0; i < emberek.length; i++ )
{
darabok[emberek[i].getAzon()]++;
}
try
{
RandomAccessFile ki = new RandomAccessFile("athaladas.txt","rw");
for( int i = 1; i < darabok.length; i++ )
{
ki.writeBytes(i+" "+darabok[i]+"\n");
}
ki.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
// 4. feladat
System.out.println("4. feladat");
int[] bent = new int[max+1];
for( int i = 0; i < emberek.length; i++ )
{
if( emberek[i].isBe() )
{
bent[emberek[i].getAzon()]++;
}
else
{
bent[emberek[i].getAzon()]--;
}
}
System.out.print("A vegen a tarsalgoban voltak: ");
for( int i = 1; i < bent.length; i++ )
{
if( bent[i] > 0 )
{
System.out.print(i+" ");
}
}
System.out.println();
// 5. feladat
System.out.println("5. feladat");
int[] bentvannak = new int[emberek.length];
int elozo = 0;
for( int i = 0; i < emberek.length; i++ )
{
if( emberek[i].isBe() )
{
bentvannak[i] = elozo + 1;
}
else
{
bentvannak[i] = elozo - 1;
}
elozo = bentvannak[i];
}
max = 0;
for( int i = 1; i < bentvannak.length; i++ )
{
if( bentvannak[i] > bentvannak[max] )
{
max = i;
}
}
System.out.println("Peldaul: "+emberek[max].getOra()+":"+
emberek[max].getPerc()+"-kor voltak a legtobben a tarsalgoban.");
// 6. feladat
System.out.println("6. feladat");
System.out.print("Adja meg egy szemely azonositojat: ");
Scanner sc = new Scanner(System.in);
int azon = Integer.parseInt(sc.nextLine());
// 7. feladat
System.out.println("7. feladat");
for( int i = 0; i < emberek.length; i++ )
{
if( emberek[i].getAzon() == azon )
{
if( emberek[i].isBe() )
{
System.out.print(emberek[i].getOra()+":"+
emberek[i].getPerc()+"-");
}
else
{
System.out.println(emberek[i].getOra()+":"+
emberek[i].getPerc());
}
}
}
System.out.println();
// 8. feladat
System.out.println("8. feladat");
int osszeg = 0;
int be = 0;
int ki = 0;
boolean bentvan = false;
for( int i = 0; i < emberek.length; i++ )
{
if( emberek[i].getAzon() == azon )
{
if( emberek[i].isBe() )
{
be = emberek[i].getOra()*60+emberek[i].getPerc();
bentvan = true;
}
else
{
osszeg += (emberek[i].getOra()*60+emberek[i].getPerc()) - be;
bentvan = false;
}
}
}
// ha a legvegen nem jott ki, akkor az utolso bemenetel
// es a 15:00 kozotti idot hozzaadjuk az ossz idejehez
if( bentvan )
{
osszeg += (15*60)-be;
}
System.out.print("A(z) "+azon+". szemely osszesen "+osszeg+
" percet volt bent");
if( bentvan )
{
System.out.println(", a megfigyeles vegen a tarsalgoban volt.");
}
else
{
System.out.println(".");
}
}
}
ITömbös megoldás:
Vasarlas osztály az adattárolásra és rövidítésre:
package webotlet_16maj_otszaz_tomb;
/**
*
* https://webotlet.hu
*/
import java.util.Arrays;
public class Vasarlas
{
private String[] termekek;
private int osszeg;
public Vasarlas( String[] tomb )
{
for( int i = 0; i < tomb.length; i++ )
{
if( tomb[i] == null )
{
termekek = new String[i];
for( int j = 0; j < i; j++ )
{
termekek[j] = tomb[j];
}
break;
}
}
// azert rendezem a termekek neveit nevsorba,
// hogy az azonos nevuek egymas melle keruljenek,
// igy majd konnyen meghatarozhatom, melyikbol hany darab van
String csere;
for( int i = 0; i < termekek.length-1; i++ )
{
for( int j = i+1; j < termekek.length; j++ )
{
if( termekek[i].compareTo(termekek[j]) > 0 )
{
csere = termekek[i];
termekek[i] = termekek[j];
termekek[j] = csere;
}
}
}
// termekek aranak osszege (melyikbol hany darab van)
// nem lenyeges, hogy mi az a termek,
// csak a darabszamuk a lenyeg, pl:
// 2, 2, 1, 3 -> (950 + 950 + 500 + 1350)
int db = 1;
for( int i = 1; i < termekek.length; i++ )
{
if( !termekek[i].equals(termekek[i-1]) )
{
System.out.println(db+" "+termekek[i-1]);
osszeg += ertek(db);
db = 1;
}
else
{
db++;
}
}
osszeg += ertek(db);
}
public String[] getTermekek()
{
return termekek;
}
public int getOsszeg()
{
return osszeg;
}
// megkeressuk, van-e adott termek a vasaroltak kozott
public boolean vettek( String mit )
{
boolean van = false;
for( int i = 0; i < termekek.length; i++ )
{
if( termekek[i].equals(mit) )
{
van = true;
break;
}
}
return van;
}
@Override
public String toString()
{
return "Vasarlas{" + "termekek=" + Arrays.toString(termekek) +
", osszeg=" + osszeg + '}';
}
// osztalymetodus, ami akkor is meghívhato, ha nincs peldany belole
public static int ertek( int db )
{
if( db == 1 )
{
return 500;
}
else if( db == 2 )
{
return 950;
}
else
{
return 950+(db-2)*400;
}
}
}
A main()-t tartalmazó osztály, mely a fájlkezelést és a feladatokat tartalmazza:
package webotlet_16maj_otszaz_tomb;
/**
*
* https://webotlet.hu
*/
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;
public class Webotlet_16maj_otszaz_tomb
{
public static void main(String[] args)
{
Vasarlas[] vasarlasok = null;
try
{
RandomAccessFile raf = new RandomAccessFile("penztar.txt","r");
String sor;
int db = 0;
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
if( sor.equals("F") )
{
db++;
}
}
vasarlasok = new Vasarlas[db];
raf.seek(0);
db = 0;
String[] termekek = new String[20];
int tetelszam = 0;
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
if( sor.equals("F") )
{
vasarlasok[db] = new Vasarlas(termekek);
db++;
termekek = new String[20];
tetelszam = 0;
}
else
{
termekek[tetelszam] = sor;
tetelszam++;
}
}
raf.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
// 2. feladat
System.out.println("2. feladat");
System.out.println("A fizetesek szama: "+vasarlasok.length);
// 3. feladat
System.out.println("3. feladat");
System.out.println("Az elso vasarlo "+
vasarlasok[0].getTermekek().length+
" darab arucikket vasarolt.");
// 4. feladat
System.out.println("4. feladat");
Scanner sc = new Scanner(System.in);
System.out.print("Adja meg egy vasarlas sorszamat! ");
int sorszam = sc.nextInt();
System.out.print("Adja meg egy arucikk nevet! ");
// szam utan String-et bekerni nyugos, ezert a szam utani sortorest
// beolvassuk, hogy atlepjunk rajta
sc.nextLine();
String cikk = sc.nextLine();
System.out.print("Adja meg a vasarolt darabszamot! ");
int darab = sc.nextInt();
// 5. feladat
System.out.println("5. feladat");
for( int i = 0; i < vasarlasok.length; i++ )
{
if( vasarlasok[i].vettek(cikk) )
{
System.out.println("Az elso vasarlas sorszama: "+(i+1));
break;
}
}
for( int i = vasarlasok.length-1; i >= 0; i-- )
{
if( vasarlasok[i].vettek(cikk) )
{
System.out.println("Az elso vasarlas sorszama: "+(i+1));
break;
}
}
int db = 0;
for( int i = 0; i < vasarlasok.length; i++ )
{
if( vasarlasok[i].vettek(cikk) )
{
db++;
}
}
System.out.println(db+" vasarlas soran vettek belole.");
// 6. feladat
System.out.println("6. feladat");
System.out.println(darab+" darab vetelekor fizetendo: "+
Vasarlas.ertek(darab)); // osztalymetodus meghivasa
// 7. feladat
System.out.println("7. feladat");
String[] termekek = vasarlasok[sorszam-1].getTermekek();
db = 1;
for( int i = 1; i < termekek.length; i++ )
{
if( !termekek[i].equals(termekek[i-1]) )
{
System.out.println(db+" "+termekek[i-1]);
db = 1;
}
else
{
db++;
}
}
System.out.println(db+" "+termekek[termekek.length-1]);
try
{
RandomAccessFile raf = new RandomAccessFile("osszeg.txt","rw");
for( int i = 0; i < vasarlasok.length; i++ )
{
raf.writeBytes((i+1)+": "+vasarlasok[i].getOsszeg()+"\n");
}
raf.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
}
}
Listás megoldás:
Vasarlas osztály az adattárolásra és rövidítésre:
package webotlet_16maj_otszaz_lista;
/**
*
* https://webotlet.hu
*/
import java.util.ArrayList;
public class Vasarlas
{
private ArrayList<String> termekek;
private int osszeg;
public Vasarlas( ArrayList<String> tmp )
{
termekek = tmp;
// azert rendezem a termekek neveit nevsorba,
// hogy az azonos nevuek egymas melle keruljenek,
// igy majd konnyen meghatarozhatom, melyikbol hany darab van
String csere;
for( int i = 0; i < termekek.size()-1; i++ )
{
for( int j = i+1; j < termekek.size(); j++ )
{
if( termekek.get(i).compareTo(termekek.get(j)) > 0 )
{
csere = termekek.get(i);
termekek.set(i, termekek.get(j));
termekek.set(j, csere);
}
}
}
// termekek aranak osszege (melyikbol hany darab van)
// nem lenyeges, hogy mi az a termek,
// csak a darabszamuk a lenyeg, pl:
// 2, 2, 1, 3 -> (950 + 950 + 500 + 1350)
int db = 1;
for( int i = 1; i < termekek.size(); i++ )
{
if( !termekek.get(i).equals(termekek.get(i-1)) )
{
System.out.println(db+" "+termekek.get(i-1));
osszeg += ertek(db);
db = 1;
}
else
{
db++;
}
}
osszeg += ertek(db);
}
public ArrayList<String> getTermekek()
{
return termekek;
}
public int getOsszeg()
{
return osszeg;
}
@Override
public String toString()
{
return "Vasarlas{" + "termekek=" + termekek +
", osszeg=" + osszeg + '}';
}
// osztalymetodus, ami akkor is meghívhato, ha nincs peldany belole
public static int ertek( int db )
{
if( db == 1 )
{
return 500;
}
else if( db == 2 )
{
return 950;
}
else
{
return 950+(db-2)*400;
}
}
}
A main()-t tartalmazó osztály, mely a fájlkezelést és a feladatokat tartalmazza:
package webotlet_16maj_otszaz_lista;
/**
*
* https://webotlet.hu
*/
import java.io.RandomAccessFile;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class Webotlet_16maj_otszaz_lista
{
public static void main(String[] args)
{
ArrayList< Vasarlas > vasarlasok = new ArrayList<>();
try
{
RandomAccessFile raf = new RandomAccessFile("penztar.txt","r");
String sor;
ArrayList<String> lista = new ArrayList<>();
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
if( !sor.equals("F") )
{
lista.add(sor);
}
else
{
vasarlasok.add(new Vasarlas(lista));
lista = new ArrayList<>();
}
}
raf.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
// 2. feladat
System.out.println("2. feladat");
System.out.println("A fizetesek szama: "+vasarlasok.size());
// 3. feladat
System.out.println("3. feladat");
System.out.println("Az elso vasarlo "+
vasarlasok.get(0).getTermekek().size()+
" darab arucikket vasarolt.");
// 4. feladat
System.out.println("4. feladat");
Scanner sc = new Scanner(System.in);
System.out.print("Adja meg egy vasarlas sorszamat! ");
int sorszam = sc.nextInt();
System.out.print("Adja meg egy arucikk nevet! ");
// szam utan String-et bekerni nyugos, ezert a szam utani sortorest
// beolvassuk, hogy atlepjunk rajta
sc.nextLine();
String cikk = sc.nextLine();
System.out.print("Adja meg a vasarolt darabszamot! ");
int darab = sc.nextInt();
// 5. feladat
System.out.println("5. feladat");
for( int i = 0; i < vasarlasok.size(); i++ )
{
if( vasarlasok.get(i).getTermekek().contains(cikk) )
{
System.out.println("Az elso vasarlas sorszama: "+(i+1));
break;
}
}
for( int i = vasarlasok.size()-1; i >= 0; i-- )
{
if( vasarlasok.get(i).getTermekek().contains(cikk) )
{
System.out.println("Az utolso vasarlas sorszama: "+(i+1));
break;
}
}
int db = 0;
for( int i = 0; i < vasarlasok.size(); i++ )
{
if( vasarlasok.get(i).getTermekek().contains(cikk) )
{
db++;
}
}
System.out.println(db+" vasarlas soran vettek belole.");
// 6. feladat
System.out.println("6. feladat");
System.out.println(darab+" darab vetelekor fizetendo: "+
Vasarlas.ertek(darab)); // osztalymetodus meghivasa
// 7. feladat
System.out.println("7. feladat");
ArrayList<String> lista = vasarlasok.get(sorszam-1).getTermekek();
db = 1;
for( int i = 1; i < lista.size(); i++ )
{
if( !lista.get(i).equals(lista.get(i-1)) )
{
System.out.println(db+" "+lista.get(i-1));
db = 1;
}
else
{
db++;
}
}
System.out.println(db+" "+lista.get(lista.size()-1));
// 8. feladat
try
{
RandomAccessFile raf = new RandomAccessFile("osszeg.txt","rw");
for( int i = 0; i < vasarlasok.size(); i++ )
{
raf.writeBytes((i+1)+": "+vasarlasok.get(i).getOsszeg()+"\n");
}
raf.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
}
}
package tarsalgo;
public class Ember
{
private int ora;
private int perc;
private int azon;
private String irany;
private boolean be;
public Ember( String[] tomb )
{
ora = Integer.parseInt(tomb[0]);
perc = Integer.parseInt(tomb[1]);
azon = Integer.parseInt(tomb[2]);
irany = tomb[3];
be = tomb[3].equals("be");
}
public int getOra()
{
return ora;
}
public int getPerc()
{
return perc;
}
public int getAzon()
{
return azon;
}
public String getIrany()
{
return irany;
}
public boolean isBe()
{
return be;
}
@Override
public String toString()
{
return "Ember{" + "ora=" + ora + ", perc=" + perc +
", azon=" + azon + ", irany=" + irany + ", be=" + be + '}';
}
}
A main()-t tartalmazó osztály, mely a fájlkezelést és a feladatokat tartalmazza:
package tarsalgo;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;
public class Tarsalgo
{
public static void main(String[] args)
{
// 1. feladat
Ember[] emberek = null;
try
{
RandomAccessFile raf = new RandomAccessFile("ajto.txt","r");
String sor;
int db = 0;
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
db++;
}
emberek = new Ember[db];
raf.seek(0);
db = 0;
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
emberek[db] = new Ember(sor.split(" "));
db++;
}
raf.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
// for( Ember e : emberek )
// {
// System.out.println(e);
// }
// 2. feladat
System.out.println("2. feladat");
System.out.println("Az elso belepo: "+emberek[0].getAzon());
int hely = -1;
for( int i = emberek.length-1; i >= 0; i-- )
{
if( !emberek[i].isBe() )
{
hely = i;
}
}
if( hely != -1 )
{
System.out.println("Az utolso kilepo: "+emberek[hely].getAzon());
}
else
{
System.out.println("Senki nem ment ki a tarsalgobol.");
}
// 3. feladat
int max = 0;
for( int i = 0; i < emberek.length; i++ )
{
if( emberek[i].getAzon() > max )
{
max = emberek[i].getAzon();
}
}
int[] darabok = new int[max+1];
for( int i = 0; i < emberek.length; i++ )
{
darabok[emberek[i].getAzon()]++;
}
try
{
RandomAccessFile ki = new RandomAccessFile("athaladas.txt","rw");
for( int i = 1; i < darabok.length; i++ )
{
ki.writeBytes(i+" "+darabok[i]+"\n");
}
ki.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
// 4. feladat
System.out.println("4. feladat");
int[] bent = new int[max+1];
for( int i = 0; i < emberek.length; i++ )
{
if( emberek[i].isBe() )
{
bent[emberek[i].getAzon()]++;
}
else
{
bent[emberek[i].getAzon()]--;
}
}
System.out.print("A vegen a tarsalgoban voltak: ");
for( int i = 1; i < bent.length; i++ )
{
if( bent[i] > 0 )
{
System.out.print(i+" ");
}
}
System.out.println();
// 5. feladat
System.out.println("5. feladat");
int[] bentvannak = new int[emberek.length];
int elozo = 0;
for( int i = 0; i < emberek.length; i++ )
{
if( emberek[i].isBe() )
{
bentvannak[i] = elozo + 1;
}
else
{
bentvannak[i] = elozo - 1;
}
elozo = bentvannak[i];
}
max = 0;
for( int i = 1; i < bentvannak.length; i++ )
{
if( bentvannak[i] > bentvannak[max] )
{
max = i;
}
}
System.out.println("Peldaul: "+emberek[max].getOra()+":"+
emberek[max].getPerc()+"-kor voltak a legtobben a tarsalgoban.");
// 6. feladat
System.out.println("6. feladat");
System.out.print("Adja meg egy szemely azonositojat: ");
Scanner sc = new Scanner(System.in);
int azon = Integer.parseInt(sc.nextLine());
// 7. feladat
System.out.println("7. feladat");
for( int i = 0; i < emberek.length; i++ )
{
if( emberek[i].getAzon() == azon )
{
if( emberek[i].isBe() )
{
System.out.print(emberek[i].getOra()+":"+
emberek[i].getPerc()+"-");
}
else
{
System.out.println(emberek[i].getOra()+":"+
emberek[i].getPerc());
}
}
}
System.out.println();
// 8. feladat
System.out.println("8. feladat");
int osszeg = 0;
int be = 0;
int ki = 0;
boolean bentvan = false;
for( int i = 0; i < emberek.length; i++ )
{
if( emberek[i].getAzon() == azon )
{
if( emberek[i].isBe() )
{
be = emberek[i].getOra()*60+emberek[i].getPerc();
bentvan = true;
}
else
{
osszeg += (emberek[i].getOra()*60+emberek[i].getPerc()) - be;
bentvan = false;
}
}
}
// ha a legvegen nem jott ki, akkor az utolso bemenetel
// es a 15:00 kozotti idot hozzaadjuk az ossz idejehez
if( bentvan )
{
osszeg += (15*60)-be;
}
System.out.print("A(z) "+azon+". szemely osszesen "+osszeg+
" percet volt bent");
if( bentvan )
{
System.out.println(", a megfigyeles vegen a tarsalgoban volt.");
}
else
{
System.out.println(".");
}
}
}
ITömbös megoldás:
Vasarlas osztály az adattárolásra és rövidítésre:
package webotlet_16maj_otszaz_tomb;
/**
*
* https://webotlet.hu
*/
import java.util.Arrays;
public class Vasarlas
{
private String[] termekek;
private int osszeg;
public Vasarlas( String[] tomb )
{
for( int i = 0; i < tomb.length; i++ )
{
if( tomb[i] == null )
{
termekek = new String[i];
for( int j = 0; j < i; j++ )
{
termekek[j] = tomb[j];
}
break;
}
}
// azert rendezem a termekek neveit nevsorba,
// hogy az azonos nevuek egymas melle keruljenek,
// igy majd konnyen meghatarozhatom, melyikbol hany darab van
String csere;
for( int i = 0; i < termekek.length-1; i++ )
{
for( int j = i+1; j < termekek.length; j++ )
{
if( termekek[i].compareTo(termekek[j]) > 0 )
{
csere = termekek[i];
termekek[i] = termekek[j];
termekek[j] = csere;
}
}
}
// termekek aranak osszege (melyikbol hany darab van)
// nem lenyeges, hogy mi az a termek,
// csak a darabszamuk a lenyeg, pl:
// 2, 2, 1, 3 -> (950 + 950 + 500 + 1350)
int db = 1;
for( int i = 1; i < termekek.length; i++ )
{
if( !termekek[i].equals(termekek[i-1]) )
{
System.out.println(db+" "+termekek[i-1]);
osszeg += ertek(db);
db = 1;
}
else
{
db++;
}
}
osszeg += ertek(db);
}
public String[] getTermekek()
{
return termekek;
}
public int getOsszeg()
{
return osszeg;
}
// megkeressuk, van-e adott termek a vasaroltak kozott
public boolean vettek( String mit )
{
boolean van = false;
for( int i = 0; i < termekek.length; i++ )
{
if( termekek[i].equals(mit) )
{
van = true;
break;
}
}
return van;
}
@Override
public String toString()
{
return "Vasarlas{" + "termekek=" + Arrays.toString(termekek) +
", osszeg=" + osszeg + '}';
}
// osztalymetodus, ami akkor is meghívhato, ha nincs peldany belole
public static int ertek( int db )
{
if( db == 1 )
{
return 500;
}
else if( db == 2 )
{
return 950;
}
else
{
return 950+(db-2)*400;
}
}
}
A main()-t tartalmazó osztály, mely a fájlkezelést és a feladatokat tartalmazza:
package webotlet_16maj_otszaz_tomb;
/**
*
* https://webotlet.hu
*/
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;
public class Webotlet_16maj_otszaz_tomb
{
public static void main(String[] args)
{
Vasarlas[] vasarlasok = null;
try
{
RandomAccessFile raf = new RandomAccessFile("penztar.txt","r");
String sor;
int db = 0;
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
if( sor.equals("F") )
{
db++;
}
}
vasarlasok = new Vasarlas[db];
raf.seek(0);
db = 0;
String[] termekek = new String[20];
int tetelszam = 0;
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
if( sor.equals("F") )
{
vasarlasok[db] = new Vasarlas(termekek);
db++;
termekek = new String[20];
tetelszam = 0;
}
else
{
termekek[tetelszam] = sor;
tetelszam++;
}
}
raf.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
// 2. feladat
System.out.println("2. feladat");
System.out.println("A fizetesek szama: "+vasarlasok.length);
// 3. feladat
System.out.println("3. feladat");
System.out.println("Az elso vasarlo "+
vasarlasok[0].getTermekek().length+
" darab arucikket vasarolt.");
// 4. feladat
System.out.println("4. feladat");
Scanner sc = new Scanner(System.in);
System.out.print("Adja meg egy vasarlas sorszamat! ");
int sorszam = sc.nextInt();
System.out.print("Adja meg egy arucikk nevet! ");
// szam utan String-et bekerni nyugos, ezert a szam utani sortorest
// beolvassuk, hogy atlepjunk rajta
sc.nextLine();
String cikk = sc.nextLine();
System.out.print("Adja meg a vasarolt darabszamot! ");
int darab = sc.nextInt();
// 5. feladat
System.out.println("5. feladat");
for( int i = 0; i < vasarlasok.length; i++ )
{
if( vasarlasok[i].vettek(cikk) )
{
System.out.println("Az elso vasarlas sorszama: "+(i+1));
break;
}
}
for( int i = vasarlasok.length-1; i >= 0; i-- )
{
if( vasarlasok[i].vettek(cikk) )
{
System.out.println("Az elso vasarlas sorszama: "+(i+1));
break;
}
}
int db = 0;
for( int i = 0; i < vasarlasok.length; i++ )
{
if( vasarlasok[i].vettek(cikk) )
{
db++;
}
}
System.out.println(db+" vasarlas soran vettek belole.");
// 6. feladat
System.out.println("6. feladat");
System.out.println(darab+" darab vetelekor fizetendo: "+
Vasarlas.ertek(darab)); // osztalymetodus meghivasa
// 7. feladat
System.out.println("7. feladat");
String[] termekek = vasarlasok[sorszam-1].getTermekek();
db = 1;
for( int i = 1; i < termekek.length; i++ )
{
if( !termekek[i].equals(termekek[i-1]) )
{
System.out.println(db+" "+termekek[i-1]);
db = 1;
}
else
{
db++;
}
}
System.out.println(db+" "+termekek[termekek.length-1]);
try
{
RandomAccessFile raf = new RandomAccessFile("osszeg.txt","rw");
for( int i = 0; i < vasarlasok.length; i++ )
{
raf.writeBytes((i+1)+": "+vasarlasok[i].getOsszeg()+"\n");
}
raf.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
}
}
Listás megoldás:
Vasarlas osztály az adattárolásra és rövidítésre:
package webotlet_16maj_otszaz_lista;
/**
*
* https://webotlet.hu
*/
import java.util.ArrayList;
public class Vasarlas
{
private ArrayList<String> termekek;
private int osszeg;
public Vasarlas( ArrayList<String> tmp )
{
termekek = tmp;
// azert rendezem a termekek neveit nevsorba,
// hogy az azonos nevuek egymas melle keruljenek,
// igy majd konnyen meghatarozhatom, melyikbol hany darab van
String csere;
for( int i = 0; i < termekek.size()-1; i++ )
{
for( int j = i+1; j < termekek.size(); j++ )
{
if( termekek.get(i).compareTo(termekek.get(j)) > 0 )
{
csere = termekek.get(i);
termekek.set(i, termekek.get(j));
termekek.set(j, csere);
}
}
}
// termekek aranak osszege (melyikbol hany darab van)
// nem lenyeges, hogy mi az a termek,
// csak a darabszamuk a lenyeg, pl:
// 2, 2, 1, 3 -> (950 + 950 + 500 + 1350)
int db = 1;
for( int i = 1; i < termekek.size(); i++ )
{
if( !termekek.get(i).equals(termekek.get(i-1)) )
{
System.out.println(db+" "+termekek.get(i-1));
osszeg += ertek(db);
db = 1;
}
else
{
db++;
}
}
osszeg += ertek(db);
}
public ArrayList<String> getTermekek()
{
return termekek;
}
public int getOsszeg()
{
return osszeg;
}
@Override
public String toString()
{
return "Vasarlas{" + "termekek=" + termekek +
", osszeg=" + osszeg + '}';
}
// osztalymetodus, ami akkor is meghívhato, ha nincs peldany belole
public static int ertek( int db )
{
if( db == 1 )
{
return 500;
}
else if( db == 2 )
{
return 950;
}
else
{
return 950+(db-2)*400;
}
}
}
A main()-t tartalmazó osztály, mely a fájlkezelést és a feladatokat tartalmazza:
package webotlet_16maj_otszaz_lista;
/**
*
* https://webotlet.hu
*/
import java.io.RandomAccessFile;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class Webotlet_16maj_otszaz_lista
{
public static void main(String[] args)
{
ArrayList< Vasarlas > vasarlasok = new ArrayList<>();
try
{
RandomAccessFile raf = new RandomAccessFile("penztar.txt","r");
String sor;
ArrayList<String> lista = new ArrayList<>();
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
if( !sor.equals("F") )
{
lista.add(sor);
}
else
{
vasarlasok.add(new Vasarlas(lista));
lista = new ArrayList<>();
}
}
raf.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
// 2. feladat
System.out.println("2. feladat");
System.out.println("A fizetesek szama: "+vasarlasok.size());
// 3. feladat
System.out.println("3. feladat");
System.out.println("Az elso vasarlo "+
vasarlasok.get(0).getTermekek().size()+
" darab arucikket vasarolt.");
// 4. feladat
System.out.println("4. feladat");
Scanner sc = new Scanner(System.in);
System.out.print("Adja meg egy vasarlas sorszamat! ");
int sorszam = sc.nextInt();
System.out.print("Adja meg egy arucikk nevet! ");
// szam utan String-et bekerni nyugos, ezert a szam utani sortorest
// beolvassuk, hogy atlepjunk rajta
sc.nextLine();
String cikk = sc.nextLine();
System.out.print("Adja meg a vasarolt darabszamot! ");
int darab = sc.nextInt();
// 5. feladat
System.out.println("5. feladat");
for( int i = 0; i < vasarlasok.size(); i++ )
{
if( vasarlasok.get(i).getTermekek().contains(cikk) )
{
System.out.println("Az elso vasarlas sorszama: "+(i+1));
break;
}
}
for( int i = vasarlasok.size()-1; i >= 0; i-- )
{
if( vasarlasok.get(i).getTermekek().contains(cikk) )
{
System.out.println("Az utolso vasarlas sorszama: "+(i+1));
break;
}
}
int db = 0;
for( int i = 0; i < vasarlasok.size(); i++ )
{
if( vasarlasok.get(i).getTermekek().contains(cikk) )
{
db++;
}
}
System.out.println(db+" vasarlas soran vettek belole.");
// 6. feladat
System.out.println("6. feladat");
System.out.println(darab+" darab vetelekor fizetendo: "+
Vasarlas.ertek(darab)); // osztalymetodus meghivasa
// 7. feladat
System.out.println("7. feladat");
ArrayList<String> lista = vasarlasok.get(sorszam-1).getTermekek();
db = 1;
for( int i = 1; i < lista.size(); i++ )
{
if( !lista.get(i).equals(lista.get(i-1)) )
{
System.out.println(db+" "+lista.get(i-1));
db = 1;
}
else
{
db++;
}
}
System.out.println(db+" "+lista.get(lista.size()-1));
// 8. feladat
try
{
RandomAccessFile raf = new RandomAccessFile("osszeg.txt","rw");
for( int i = 0; i < vasarlasok.size(); i++ )
{
raf.writeBytes((i+1)+": "+vasarlasok.get(i).getOsszeg()+"\n");
}
raf.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
}
}
Nincsenek megjegyzések:
Megjegyzés küldése