A feladat leírását, melynek a megoldását közzéteszem innen töltheted le. Ez a megoldás tömbbel dolgozik.
Adattároló osztály:
/**
*
* @author https://webotlet.hu
*/
package webotlet_10okt_anagram;
public class Szo
{
private String szo;
private String abc;
public Szo(String szo)
{
this.szo = szo;
// minden szo betuit mar a letrehozasakor rendezzuk
char[] tomb = szo.toCharArray();
for( int i = 0; i < tomb.length-1; i++ )
{
for( int j = i + 1; j < tomb.length; j++ )
{
if(tomb[i] > tomb[j])
{
char csere = tomb[i];
tomb[i] = tomb[j];
tomb[j] = csere;
}
}
}
abc = new String(tomb);
}
public String getAbc()
{
return abc;
}
public String getSzo()
{
return szo;
}
@Override
public String toString()
{
return "Szo{" + "szo=" + szo + ", abc=" + abc + '}';
}
}
A feladat megoldásai:
/**
*
* @author https://webotlet.hu
*/
package webotlet_10okt_anagram;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;
public class Webotlet_10okt_anagram
{
public static void main(String[] args)
{
System.out.println("1. feladat");
System.out.println("Adja meg a szoveget:");
Scanner sc = new Scanner(System.in);
String szo = sc.nextLine();
char[] betuk = szo.toCharArray();
int[] betukDb = new int[((int)'z') + 1];
for( int i = 0; i < betuk.length; i++)
{
betukDb[ (int)betuk[i] ]++;
}
for( int i = 0; i < betukDb.length; i++ )
{
if(betukDb[i] > 0)
{
System.out.println(betukDb[i] + " " + (char)i);
}
}
RandomAccessFile raf;
String sor;
Szo[] szavak = null;
try
{
raf = new RandomAccessFile("szotar.txt", "r");
int db = 0;
for(sor = raf.readLine(); sor != null; sor = raf.readLine())
{
db++;
}
raf.seek(0);
szavak = new Szo[db];
int hely = 0;
for(sor = raf.readLine(); sor != null; sor = raf.readLine())
{
szavak[hely] = new Szo(sor);
hely++;
}
raf.close();
}
catch(IOException e)
{
System.out.println("HIBA");
}
// for( int i = 0; i < szavak.length; i++ )
// {
// System.out.println(szavak[i].toString());
// }
try
{
RandomAccessFile ki = new RandomAccessFile("abc.txt", "rw");
ki.setLength(0);
for( int i = 0; i < szavak.length; i++ )
{
ki.writeBytes(szavak[i].getAbc() + "\n");
}
ki.close();
}
catch(IOException e)
{
System.out.println("HIBA");
}
System.out.println("4. feladat");
String szo1;
String szo2;
System.out.print("1. szo: ");
szo1 = sc.nextLine();
System.out.print("2. szo: ");
szo2 = sc.nextLine();
if( rendezett(szo1).equals(rendezett(szo2 )) )
{
System.out.println("Anagramma");
}
else
{
System.out.println("Nem anagramma");
}
System.out.println("5. feladat Adj meg egy szot!");
Scanner sc2 = new Scanner(System.in);
String feladat5 = sc2.nextLine();
feladat5 = rendezett(feladat5);
for( int i = 0; i < szavak.length; i++ )
{
if( szavak[i].getAbc().equals(feladat5) )
{
System.out.println(szavak[i].getSzo());
}
}
System.out.println("6. feladat");
int maxhossz = szavak[0].getSzo().length();
for( int i = 0; i < szavak.length; i++ )
{
if( szavak[i].getSzo().length() > maxhossz )
{
maxhossz = szavak[i].getSzo().length();
}
}
int db = 0;
for( int i = 0; i < szavak.length; i++ )
{
if( szavak[i].getSzo().length() == maxhossz )
{
db++;
}
}
Szo[] leghosszabb = new Szo[db];
int hely = 0;
for( int i = 0; i < szavak.length; i++ )
{
if( szavak[i].getSzo().length() == maxhossz )
{
leghosszabb[hely] = szavak[i];
hely++;
}
}
for( int i = 0; i < leghosszabb.length - 1; i++ )
{
for( int j = i + 1; j < leghosszabb.length; j++ )
{
if( leghosszabb[i].getAbc().compareTo(leghosszabb[j].getAbc()) > 0)
{
Szo csere = leghosszabb[i];
leghosszabb[i] = leghosszabb[j];
leghosszabb[j] = csere;
}
}
}
for( int i = 0; i < leghosszabb.length; i++ )
{
System.out.println(leghosszabb[i].getSzo());
}
Szo[] rendezett = new Szo[szavak.length];
for( int i = 0; i < szavak.length - 1; i++ )
{
for( int j = i + 1; j < szavak.length; j++ )
{
if( szavak[i].getSzo().length() > szavak[j].getSzo().length()
|| (szavak[i].getSzo().length() == szavak[j].getSzo().length()
&& szavak[i].getAbc().compareTo(szavak[j].getAbc()) > 0 ) )
{
Szo csere = szavak[i];
szavak[i] = szavak[j];
szavak[j] = csere; }
}
}
try
{
RandomAccessFile ki = new RandomAccessFile("rendezve.txt", "rw");
ki.setLength(0);
ki.writeBytes(szavak[0].getSzo());
for( int i = 1; i < szavak.length; i++ )
{
if( szavak[i].getAbc().equals(szavak[i - 1].getAbc()))
{
ki.writeBytes(" " + szavak[i].getSzo());
}
else if( szavak[i].getSzo().length() == szavak[i - 1].getSzo().length() )
{
ki.writeBytes("\n" + szavak[i].getSzo());
}
else
{
ki.writeBytes("\n\n" + szavak[i].getSzo());
}
}
ki.close();
}
catch( IOException e )
{
System.out.println(e.getMessage());
System.out.println("HIBA");
}
}
// egy tetszoleges szo betuinek abc rendezese
public static String rendezett( String szo )
{
char[] tomb = szo.toCharArray();
for( int i = 0; i < tomb.length - 1; i++ )
{
for( int j = i + 1; j < tomb.length; j++ )
{
if(tomb[i] > tomb[j])
{
char csere = tomb[i];
tomb[i] = tomb[j];
tomb[j] = csere;
}
}
}
return new String(tomb);
}
}
Ha hibát találsz benne, kérlek jelezd!
