Magyarországon 1957 óta lehet ötös lottót játszani. A játék lényege a következő: a lottószelvényeken 90 szám közül 5 számot kell a fogadónak megjelölnie. Ha ezek közül 2 vagy annál
több megegyezik a kisorsolt számokkal, akkor nyer. Az évek során egyre többen hódoltak
ennek a szerencsejátéknak és a nyeremények is egyre nőttek.
Adottak a lottosz.dat szöveges állományban a 2003. év 51 hetének ötös lottó számai. Az
első sorában az első héten húzott számok vannak, szóközzel elválasztva, a második sorban a
második hét lottószámai vannak stb.
Például: 37 42 44 61 62
18 42 54 83 89
...
9 20 21 59 68
A lottószámok minden sorban emelkedő számsorrendben szerepelnek.
Az állományból kimaradtak az 52. hét lottószámai. Ezek a következők voltak: 89 24 34 11 64.
Készítsen programot a következő feladatok megoldására!
1. Kérje be a felhasználótól az 52. hét megadott lottószámait!
2. A program rendezze a bekért lottószámokat emelkedő sorrendbe! A rendezett számokat
írja ki a képernyőre!
3. Kérjen be a felhasználótól egy egész számot 1-51 között! A bekért adatot nem kell ellenőrizni!
4. Írja ki a képernyőre a bekért számnak megfelelő sorszámú hét lottószámait, a
lottosz.dat állományban lévő adatok alapján!
5. A lottosz.dat állományból beolvasott adatok alapján döntse el, hogy volt-e olyan
szám, amit egyszer sem húztak ki az 51 hét alatt! A döntés eredményét (Van/Nincs) írja ki
a képernyőre!
6. A lottosz.dat állományban lévő adatok alapján állapítsa meg, hogy hányszor volt páratlan szám a kihúzott lottószámok között! Az eredményt a képernyőre írja ki!
7. Fűzze hozzá a lottosz.dat állományból beolvasott lottószámok után a felhasználótól
bekért, és rendezett 52. hét lottószámait, majd írja ki az összes lottószámot a lotto52.ki
szöveges fájlba! A fájlban egy sorba egy hét lottószámai kerüljenek, szóközzel elválasztva
egymástól!
8. Határozza meg a lotto52.ki állomány adatai alapján, hogy az egyes számokat hányszor
húzták ki 2003-ban. Az eredményt írja ki a képernyőre a következő formában: az első sor
első eleme az a szám legyen ahányszor az egyest kihúzták! Az első sor második eleme az
az érték legyen, ahányszor a kettes számot kihúzták stb.! (Annyit biztosan tudunk az értékekről, hogy mindegyikük egyjegyű.)
Megoldás
/**
*
* @author http://webotlet.hu
*/
package webotlet_e05maj_lotto;
import java.io.*;
import java.util.Scanner;
public class Webotlet_e05maj_lotto
{
public static void main( String[] args )
{
Scanner sc = new Scanner(System.in);
RandomAccessFile raf;
String sor;
int db;
try
{
// 1. feladat
System.out.print("Ird be az 52. het lottoszamait szokozzel elvalasztva: ");
String[] het52 = sc.nextLine().split(" ");
int[] het52sz = new int[5];
for ( int i = 0; i < het52.length; i++ )
{
het52sz[i] = Integer.parseInt(het52[i]);
}
// 2. feladat
System.out.println("\n2. feladat");
int csere;
for ( int i = 0; i < het52sz.length-1; i++ )
{
for ( int j = i+1; j < het52sz.length; j++ )
{
if( het52sz[i] > het52sz[j] )
{
csere = het52sz[i];
het52sz[i] = het52sz[j];
het52sz[j] = csere;
}
}
}
for( int sz : het52sz )
{
System.out.print(sz+" ");
}
System.out.println();
// 3. feladat
System.out.println("\n3. feladat");
System.out.println("Adj meg egy szamot (1-51): ");
int het = sc.nextInt();
// 4. feladat
int[][] szamok = new int[52][5];
raf = new RandomAccessFile("lottosz.dat","r");
db = 0;
String[] heti;
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
heti = sor.split(" ");
for( int i = 0; i < heti.length; i++ )
{
szamok[db][i] = Integer.parseInt(heti[i]);
}
db++;
}
System.out.println("A "+het+". het nyeroszamai: ");
for( int i = 0; i < szamok[het-1].length; i++ )
{
System.out.print(szamok[het-1][i]+" ");
}
System.out.println();
// 5. feladat
System.out.println("\n5. feladat");
int[] szamokDb = new int[90];
// az 52. hét adatait egyelőre kihagyjuk, azért -1
for( int i = 0; i < szamok.length-1; i++ )
{
for( int j = 0; j < szamok[i].length; j++ )
{
szamokDb[szamok[i][j]-1]++;
}
}
boolean van = false;
for( int sz : szamokDb )
{
if( sz == 0 )
{
van = true;
break;
}
}
if( van )
{
System.out.println("Van");
}
else
{
System.out.println("Nincs");
}
// 6. feladat
System.out.println("\n6. feladat");
int paratlan = 0;
// kettesével lépkedünk a megszámolt számokon, hogy csak
// a páratlanok darabszámait adjuk össze
for( int i = 0; i < szamokDb.length; i += 2 )
{
paratlan += szamokDb[i];
}
System.out.println("A fajlban levo szamok alapjan "+paratlan+
" alkalommal huztak paratlan szamot");
// 7. feladat
// az 52. hét számait hozzáfűzzük a többihez
for( int i = 0; i < het52sz.length; i++ )
{
szamok[51][i] = het52sz[i];
}
RandomAccessFile ki = new RandomAccessFile("lotto52.ki","rw");
// ha esetleg létezne a fájl, töröljük a tartalmát
ki.setLength(0);
StringBuilder sb = new StringBuilder();
for( int i = 0; i < szamok.length; i++ )
{
for ( int j = 0; j < szamok[i].length; j++ )
{
sb.append(szamok[i][j]+ " ");
}
sb.append("\n");
}
ki.writeBytes( sb.toString().replaceAll(" \n", "\n") );
// 8. feladat
System.out.println("\n8. feladat");
sb = new StringBuilder();
for( int i = 0; i < szamokDb.length; i++ )
{
sb.append(szamokDb[i]+" ");
if( (i+1) % 15 == 0 )
{
sb.append("\n");
}
}
System.out.println(sb.toString().replaceAll(" \n", "\n"));
// 9. feladat
System.out.println("\n9. feladat");
System.out.print("A kovetkezo primszamokat nem huztak ki: ");
int[] primek = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89 };
// a kezzel beirt 52. het szamainak hozzaszamolasa az eddigiekhez
for( int i = 0; i < het52sz.length; i++ )
{
szamokDb[het52sz[i]-1]++;
}
for( int sz : primek )
{
if( szamokDb[sz-1] == 0 )
{
System.out.print(sz+" ");
}
}
}
catch( IOException e )
{
System.err.println("HIBA");
}
}
}
Nincsenek megjegyzések:
Megjegyzés küldése