Java programozás – 2007 májusi emelt informatika érettségi – SMS szavak (3. verzió)

A feladat leírását, melynek a megoldását közzéteszem innen töltheted le. Ez a megoldás listával, és ahol lehet, foreach ciklusokkal dolgozik. Az adattároló osztályban néhány feladatot előkészítek, és a végső megoldásban ezeket használom. Ide pakoltam a betű – kód átalakítást. Az utolsó két feladathoz TreeMap-et használok. Azért Tree-t, hogy egyúttal rendezett is legyen az eredmény (ami egyébként nem követelmény).

Adattároló osztály:

/**
 *
 */
package webotlet_07maj_sms_szavak_java_v3;
 
public class Szo
{
  private String szo;
  private String szamkod;
   
  public Szo( String szo )
  {
    this.szo = szo;
     
    StringBuilder sb = new StringBuilder();
    char[] tomb = szo.toCharArray();
    for( char c : tomb )
    {
      sb.append(betukod(c));
    }
    szamkod = sb.toString();
 
  }
 
  public String getSzo()
  {
    return szo;
  }
 
  public String getSzamkod()
  {
    return szamkod;
  }
 
  public void setSzamkod(String szamkod)
  {
    this.szamkod = szamkod;
  }
 
  @Override
  public String toString()
  {
    return "Szo{" + "szo=" + szo + ", szamkod=" + szamkod + '}';
  }
   
  public String SzoKod()
  {
    return szo + " : " + szamkod + "; ";
  }
   
  public static int betukod( char betu )
  {
    int kod = 0;
    switch( betu )
    {
      case 'a': case 'b': case 'c':
        kod = 2;
        break;
      case 'd': case 'e': case 'f':
        kod = 3;
        break;
      case 'g': case 'h': case 'i':
        kod = 4;
        break;
      case 'j': case 'k': case 'l':
        kod = 5;
        break;
      case 'm': case 'n': case 'o':
        kod = 6;
        break;
      case 'p': case 'q': case 'r': case 's':
        kod = 7;
        break;
      case 't': case 'u': case 'v':
        kod = 8;
        break;
      default:
        kod = 9;
        break;
    }
    return kod;
  }
}

A feladat megoldásai:

/**
 *
 */
package webotlet_07maj_sms_szavak_java_v3;
 
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
 
public class Webotlet_07maj_sms_szavak_java_v3
{
  public static void main(String[] args)
  {
    // 1. feladat
    System.out.println("1. feladat");
    Scanner sc = new Scanner(System.in);
    System.out.println("Adj meg egy betut!");
    char c = sc.nextLine().charAt(0);
    System.out.println(Szo.betukod(c));
     
    // 2. feladat
    System.out.println("2. feladat");
    System.out.println("Adj meg egy szot!");
    String sz = sc.nextLine();
    for( int i = 0; i < sz.length(); i++ )
    {
      System.out.print(Szo.betukod(sz.charAt(i)));
    }
    System.out.println();
     
    // 3. feladat
     
    ArrayList<Szo>szavak = new ArrayList<>();
     
    try
    {
      RandomAccessFile raf = new RandomAccessFile("szavak.txt", "r");
      String sor;
      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
      {
        szavak.add(new Szo(sor));
      }
      raf.close();
    }
    catch( IOException e )
    {
      System.out.println("HIBA");
    }
     
//    for( int i = 0; i < szavak.length; i++ )
//    {
//      System.out.println(szavak[i].toString());
//    }
//   
    // 4. feladat
    System.out.println("4. feladat");
     
    Szo max = szavak.get(0);
     
    for (Szo szo : szavak)
    {
      if( szo.getSzo().length() > max.getSzo().length() )
      {
        max = szo;
      }
    }
 
    System.out.println("A leghosszabb szo: "+max.getSzo()
      + ", hossza:" + max.getSzo().length());
     
    // 5. feladat
    System.out.println("5. feladat");
 
    int db5 = 0;
     
    for( Szo szo : szavak )
    {
      if( szo.getSzo().length() <= 5 )
      {
        db5++;
      }
    }
     
    System.out.println("A fajlban " + db5 + " darab rovid szo van.");
     
    // 6. feladat
 
    try
    {
      RandomAccessFile ki = new RandomAccessFile("kodok.txt", "rw");
      ki.setLength(0);
       
      for( Szo szo : szavak )
      {
        ki.writeBytes(szo.getSzamkod() + "\n");
         
      }
      ki.close();
       
    }
    catch( IOException e )
    {
      System.out.println("HIBA");
    }
     
    // 7. feladat
    System.out.println("7. feladat");
    sc = new Scanner(System.in);
    System.out.println("Adj meg egy szamkodot!");
    String szamsor = sc.nextLine();
     
    for( Szo szo : szavak )
    {
      if( szo.getSzamkod().equals(szamsor) )
      {
        System.out.println(szo.getSzo());
      }
    }
     
    // 8. feladat
    System.out.println("8. feladat");
     
    TreeMap<String,ArrayList<Szo>> kodDb = new TreeMap<>();
     
    String szamkod = "";
    for( Szo szo : szavak )
    {
      szamkod = szo.getSzamkod();
      if( kodDb.containsKey(szamkod) )
      {
          kodDb.get(szamkod).add(szo);
      }
      else
      {
          kodDb.put(szamkod, new ArrayList<>(Arrays.asList(szo)));
      }
    }
     
    for( ArrayList<Szo> lista : kodDb.values() )
    {
      if( lista.size() > 1 )
      {
        for( Szo szo : lista )
        {
            System.out.print(szo.SzoKod());
        }
      }
    }
    System.out.println();
 
    // 9. feladat
    System.out.println("9. feladat");
     
    int maxDb = 0;
    ArrayList<Szo> maxKod = new ArrayList<>();
    for( ArrayList<Szo> elem : kodDb.values() )
    {
      if( elem.size() > maxDb )
      {
        maxDb = elem.size();
        maxKod = elem;
      }
    }
     
    System.out.print(maxKod.get(0).getSzamkod() + ": ");
    for (Szo szo : maxKod)
    {
      System.out.print(szo.getSzo() + " ");
    }
    System.out.println();
  }
}

Ha hibát találsz benne, kérlek jelezd!

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.