Tömbös megoldás:
package webotlet_16maj_otszaz_tomb;
/**
*
* Vásárlás osztály az adattárolásra és rövidítésre
*/
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 webotlet_16maj_otszaz_tomb;
/**
*
* Vásárlás osztály az adattárolásra és rövidítésre
*/
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