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

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. Az adattároló osztályban néhány feladatot előkészítek, és a végső megoldásban ezeket használom. Nem a legelegánsabb megoldás, a következő verzióban majd finomítok rajta.

Adattároló osztály:

/**
 *
 * @author https://webotlet.hu
 */
package webotlet_07maj_sms_szavak_java;

public class Szo
{
  private String szo;
  private String szamkod;
  
  public Szo( String szo )
  {
    this.szo = szo;
  }

  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 + "; ";
  }
  
}

A feladat megoldásai:

/**
 *
 * @author https://webotlet.hu
 */
package webotlet_07maj_sms_szavak_java;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;

public class Webotlet_07maj_sms_szavak_java
{
  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(betukod(c));
    
    // 2. feladat
    System.out.println("2. feladat");
    System.out.println("Adj meg egy szot!");
    String szo = sc.nextLine();
    for( int i = 0; i < szo.length(); i++ )
    {
      System.out.print(betukod(szo.charAt(i)));
    }
    System.out.println();
    
    // 3. feladat
    
    Szo[] szavak = null;
    
    try
    {
      RandomAccessFile raf = new RandomAccessFile("szavak.txt", "r");
      String sor;
      
      int db = 0;
      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
      {
        db++;
      }
      
      szavak = new Szo[db];
      raf.seek(0);
      
      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());
//    }
//    
    // 4. feladat
    System.out.println("4. feladat");
    
    int max = 0;
    for( int i = 0; i < szavak.length; i++ )
    {
      if( szavak[i].getSzo().length() > szavak[max].getSzo().length() )
      {
        max = i;
      }
    }
    
    System.out.println("A leghosszabb szo: "+szavak[max].getSzo()
      + ", hossza:" + szavak[max].getSzo().length());
    
    // 5. feladat
    System.out.println("5. feladat");

    int db5 = 0;
    for( int i = 0; i < szavak.length; i++ )
    {
      if( szavak[i].getSzo().length() <= 5 )
      {
        db5++;
      }
    }
    
    System.out.println("A fajlban " + db5 + " darab rovid szo van.");
    
    // 6. feladat
    
    for( int i = 0; i < szavak.length; i++ )
    {
      String szamkod = "";
      for( int j = 0; j < szavak[i].getSzo().length(); j++ )
      {
        szamkod = szamkod.concat(String.valueOf(betukod(szavak[i].getSzo().charAt(j))));
      }
      szavak[i].setSzamkod(szamkod);
    }
    
    try
    {
      RandomAccessFile ki = new RandomAccessFile("kodok.txt", "rw");
      ki.setLength(0);
      
      for( int i = 0; i < szavak.length; i++ )
      {
        ki.writeBytes(szavak[i].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( int i = 0; i < szavak.length; i++ )
    {
      if( szavak[i].getSzamkod().equals(szamsor) )
      {
        System.out.println(szavak[i].getSzo());
      }
    }
    
    // 8. feladat
    System.out.println("8. feladat");
    for( int i = 0; i < szavak.length - 1; i++ )
    {
      for( int j = i + 1; j < szavak.length; j++ )
      {
        if( szavak[i].getSzamkod().compareTo(szavak[j].getSzamkod()) > 0 )
        {
          Szo csere = szavak[i];
          szavak[i] = szavak[j];
          szavak[j] = csere;
        }
      }
    }
    
    if( szavak[0].getSzamkod().equals(szavak[1].getSzamkod()))
    {
      System.out.print(szavak[0].SzoKod());
    }
    
    for( int i = 1; i < szavak.length - 1; i++ )
    {
      if( szavak[i].getSzamkod().equals(szavak[i + 1].getSzamkod()))
      {
        System.out.print(szavak[i].SzoKod());
      }
      else if( szavak[i].getSzamkod().equals(szavak[i - 1].getSzamkod()))
      {
        System.out.print(szavak[i].SzoKod());
      }
    }
    
    int utolso = szavak.length - 1;
    if( szavak[utolso].getSzamkod().equals(szavak[utolso - 1].getSzamkod()))
    {
      System.out.print(szavak[utolso].SzoKod());
    }
    System.out.println();
    
    // 9. feladat
    System.out.println("9. feladat");
    
    String mibol = szavak[0].getSzamkod();
    int db = 0;
    int maxDb = 1;
    for (int i = 0; i < szavak.length - 1; i++)
    {
      if( szavak[i].getSzamkod().equals(szavak[i + 1].getSzamkod()))
      {
        db++;
        if( db > maxDb )
        {
          maxDb = db;
          mibol = szavak[i].getSzamkod();
        }
      }
      else
      {
        db = 1;
      }
    }
    
    System.out.println(mibol + ": ");
    for (int i = 0; i < szavak.length; i++)
    {
      if( szavak[i].getSzamkod().equals(mibol))
      {
        System.out.print(szavak[i].getSzo() + " ");
      }
    }
    System.out.println();
    
  }
  
  public static int betukod( char betu )
  {
    int kod = 0;
    if( betu == 'a' || betu == 'b' || betu == 'c' )
    {
      kod = 2;
    }
    else if( betu == 'd' || betu == 'e' || betu == 'f' )
    {
      kod = 3;
    }
    else if( betu == 'g' || betu == 'h' || betu == 'i' )
    {
      kod = 4;
    }
    else if( betu == 'j' || betu == 'k' || betu == 'l' )
    {
      kod = 5;
    }
    else if( betu == 'm' || betu == 'n' || betu == 'o' )
    {
      kod = 6;
    }
    else if( betu == 'p' || betu == 'q' || betu == 'r' || betu == 's' )
    {
      kod = 7;
    }
    else if( betu == 't' || betu == 'u' || betu == 'v' )
    {
      kod = 8;
    }
    else
    {
      kod = 9;
    }
    return kod;
  }
  
}

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

*

Ez az oldal az Akismet szolgáltatást használja a spam csökkentésére. Ismerje meg a hozzászólás adatainak feldolgozását .