A feladat megoldása még nem teljes!
Csak akkor olvass tovább, ha a növények feladatot megoldottad, vagy nem sikerült megoldani.
A letölthető tömörített állományban megtalálod a NetBeans-ben megnyitható projectet. Amennyiben Geany szerkesztővel kívánod megtekinteni a megoldást, akkor töröld ki a források elejéről a következő sorokat:
package webotlet_novenyek;
A megoldásban két osztály található. A Noveny osztály felelős az adattárolásért, a Webotlet_novenyek pedig a vezérlőprogram, mely a forrás beolvasását, valamint a feladatok megoldását tartalmazza.
Noveny osztály az adattárolásra:
/**
*
* @author http://webotlet.hu
*/
package webotlet_novenyek;
public class Noveny
{
private String nev;
private String miert;
private int kezd;
private int veg;
private int gyido;
private int[] honapok;
public Noveny( String[] tomb )
{
nev = tomb[0];
miert = tomb[1];
kezd = Integer.parseInt( tomb[2] );
veg = Integer.parseInt( tomb[3] );
if( kezd <= veg )
{
gyido = veg - kezd + 1;
}
else
{
gyido = 13 - kezd + veg;
}
honapok = ekkorGyujtik();
}
public String getNev()
{
return nev;
}
public String getMiert()
{
return miert;
}
public int getKezd()
{
return kezd;
}
public int getVeg()
{
return veg;
}
public int getGyido()
{
return gyido;
}
public int[] getHonapok()
{
return honapok;
}
private int[] ekkorGyujtik()
{
int[] tomb = new int[gyido];
int db = 0;
if( kezd <= veg )
{
for (int i = kezd; i <= veg; i++)
{
tomb[db++] = i;
}
}
else
{
for (int i = kezd; i < 13; i++)
{
tomb[db++] = i;
}
for (int i = 1; i <= veg; i++)
{
tomb[db++] = i;
}
}
return tomb;
}
public String ekkorGyujtikString()
{
StringBuilder sb = new StringBuilder();
for (int i : honapok)
{
sb.append( i + " " );
}
return sb.toString();
}
public boolean gyujtikEkkor( int honap )
{
return honap >= kezd && honap <= veg;
}
@Override
public String toString()
{
return "Noveny{" + "nev=" + nev + ", miert=" + miert +
", kezd=" + kezd + ", veg=" + veg + ", gyido=" +
gyido + ", honapok=" + ekkorGyujtikString() + '}';
}
}
A main()-t tartalmazó osztály, mely a fájlkezelést és a feladatokat tartalmazza:
/**
*
* @author http://webotlet.hu
*/
package webotlet_novenyek;
import java.io.*;
public class Webotlet_novenyek
{
public static void main( String[] args )
{
RandomAccessFile raf;
String sor;
Noveny[] novenyek;
int db;
try
{
// 1. feladat
raf = new RandomAccessFile( "noveny.txt", "r" );
// sorok megszamlalasa
db = 0;
for (sor = raf.readLine(); sor != null; sor = raf.readLine())
{
db++;
}
novenyek = new Noveny[db];
// adatok beolvasasa
db = 0;
raf.seek( 0 );
for (sor = raf.readLine(); sor != null; sor = raf.readLine())
{
novenyek[db++] = new Noveny( sor.split( ";" ) );
}
/*
for( Noveny n : novenyek)
{
System.out.println( n.toString() );
}
*/
// 2. feladat
System.out.println( "\n2. feladat" );
for (Noveny n : novenyek)
{
if( n.getNev().equalsIgnoreCase( "gyongyvirag" ) )
{
System.out.println( n.getMiert() );
break;
}
}
// 3. feladat
System.out.println( "\n3. feladat" );
int leveldb = 0;
for (Noveny n : novenyek)
{
if( n.getMiert().equals( "level" ) )
{
leveldb++;
}
}
System.out.println( "Ennyi novenyt gyujtenek a leveleert: "
+ leveldb );
// 4. feladat
System.out.println( "\n4. feladat" );
// 0 1 2 3 4 5 6 7 8 9 10 11 12
// { 0,0,0,0,0,1,2,0,0,0, 0, 0, 0 }
int[] honapKezdDb = new int[12];
for (int i = 0; i < novenyek.length; i++)
{
honapKezdDb[novenyek[i].getKezd() - 1]++;
}
int kezdMax = 0;
for (int i = 1; i < honapKezdDb.length; i++)
{
if( honapKezdDb[i] > honapKezdDb[kezdMax] )
{
kezdMax = i;
}
}
for (int i = 0; i < honapKezdDb.length; i++)
{
if( honapKezdDb[i] == honapKezdDb[kezdMax] )
{
System.out.println( "A " + (i + 1) + ". honapban kezdik "
+ "gyujteni a legtobb novenyt." );
}
}
// 5. feladat
System.out.println( "\n5. feladat" );
for (int i = 1; i < honapKezdDb.length; i++)
{
if( honapKezdDb[i] == 0 )
{
System.out.println( "A " + (i + 1) + ". honapban semmit "
+ "nem kezdenek gyujteni." );
}
}
// 6. feladat
System.out.println( "\n6. feladat" );
int egyszodb = 0;
for (int i = 0; i < novenyek.length; i++)
{
if( novenyek[i].getNev().contains( " " ) )
{
egyszodb++;
}
}
System.out.println( "Ennyi noveny neve all egy szobol: " + egyszodb );
// 7. feladat
System.out.println( "\n7. feladat" );
int osszel = 0;
for (int i = 0; i < novenyek.length; i++)
{
if( novenyek[i].getKezd() >= 9 && novenyek[i].getKezd() <= 11 )
{
osszel++;
}
}
System.out.println( "Ennyi novenyt gyujtenek kezdenek "
+ "osszel gyujteni: " + osszel );
// 8. feladat
System.out.println( "\n8. feladat" );
int nyarElejeDb = 0;
for (int i = 0; i < novenyek.length; i++)
{
if( novenyek[i].getKezd() == 6 )
{
nyarElejeDb++;
}
}
System.out.println( "Ennyi novenyt gyujtenek a nyar elejetol: "
+ nyarElejeDb );
// 9. feladat
System.out.println( "\n9. feladat" );
int maxGyIdo = 0;
for (int i = 1; i < novenyek.length; i++)
{
if( novenyek[i].getGyido() > novenyek[maxGyIdo].getGyido() )
{
maxGyIdo = i;
}
}
for (int i = 0; i < novenyek.length; i++)
{
if( novenyek[i].getGyido() == novenyek[maxGyIdo].getGyido() )
{
System.out.println( novenyek[i].getNev() );
}
}
// 10. feladat
System.out.println( "\n10. feladat" );
String csalan = "";
for (int i = 0; i < novenyek.length; i++)
{
if( novenyek[i].getNev().equalsIgnoreCase( "csalan" ) )
{
csalan = novenyek[i].getMiert();
break;
}
}
for (int i = 0; i < novenyek.length; i++)
{
if( novenyek[i].getMiert().equals( csalan )
&& !novenyek[i].getNev().equalsIgnoreCase( "csalan" ) )
{
System.out.println( novenyek[i].getNev() );
}
}
// 11. feladat
System.out.println( "\n11. feladat" );
int viragdb = 0;
for (int i = 0; i < novenyek.length; i++)
{
if( novenyek[i].getMiert().toLowerCase().contains( "virag" ) )
{
viragdb++;
}
}
System.out.println( "Ennyi novenyt gyujtenek viraggal "
+ "kapcsolatban: " + viragdb );
// 13. feladat
boolean van = false;
System.out.println( "\n13. feladat" );
for (int i = 0; i < honapKezdDb.length; i++)
{
if( honapKezdDb[i] == 0 )
{
van = true;
break;
}
}
if( van )
{
System.out.println( "Van olyan honap, amikor semmit nem "
+ "kezdenek gyujteni." );
}
else
{
System.out.println( "Nincs olyan honap, amikor semmit "
+ "nem kezdenek gyujteni." );
}
// 14. feladat
System.out.println( "\n14. feladat" );
int[] honapGyujtDb = new int[12];
for (int i = 0; i < novenyek.length; i++)
{
for (int j = 0; j < novenyek[i].getHonapok().length; j++)
{
honapGyujtDb[novenyek[i].getHonapok()[j] - 1]++;
}
}
int honapGyujtMax = 0;
for (int i = 0; i < honapGyujtDb.length; i++)
{
if( honapGyujtDb[i] > honapGyujtDb[honapGyujtMax] )
{
honapGyujtMax = i;
}
}
for (int i = 0; i < honapGyujtDb.length; i++)
{
if( honapGyujtDb[i] == honapGyujtDb[honapGyujtMax] )
{
System.out.println( (i + 1) + ". honapban gyujtik a legtobb "
+ "fajta novenyt." );
}
}
// 15. feladat
System.out.println( "\n15. feladat" );
Noveny csere;
for (int i = 0; i < novenyek.length - 1; i++)
{
for (int j = i + 1; j < novenyek.length; j++)
{
if( novenyek[i].getKezd() > novenyek[j].getKezd() )
{
csere = novenyek[i];
novenyek[i] = novenyek[j];
novenyek[j] = csere;
}
}
}
for (Noveny n : novenyek)
{
System.out.println( n.toString() );
}
}
catch ( IOException e )
{
System.out.println( "HIBA" );
}
}
}
