Gyakorlati alapok

Rajzolgassunk!

 

Átlós szöveg

 

Most pedig alkossunk egy olyan algoritmust, amelyik ferdén ír ki egy, a felhasználó által megadott szót vagy tetszőleges karakterfüzért. Rengetegféle implementálás lehetséges, én egy állandó méretű, String típusú szóköztömbből indultam ki...

 

String szokozTomb [] = new String[10];
    szokozTomb[0] = "\n";
    szokozTomb[1] = "\n ";
    szokozTomb[2] = "\n  ";
    szokozTomb[3] = "\n   ";
    szokozTomb[4] = "\n    ";
    szokozTomb[5] = "\n     ";
    szokozTomb[6] = "\n      ";
    szokozTomb[7] = "\n       ";
    szokozTomb[8] = "\n        ";
    szokozTomb[9] = "\n         ";

 

...amely egyre növekvő, majd csökkenő mértékben a bekért szóból a substring() függvény által kiemelt karakterek elé van illesztve. Mivel szokozTomb mérete véges (10), fontos szempont, hogy ne kerüljön a rendszerbe nagyobb (több karaktert tartalmazó) szó, mert léptetés esetén tömbhatárátlépés fog keletkezni. Ezt a problémát úgy oldjuk meg, hogy a szó bekérésekor ellenőrizzük a szó hosszát (szoveghossz = szoveg.length();) és egy hátultesztelő ciklus használatával nem engedünk meg 9 karakternél hosszabb szót (while(szoveghossz > 9);). Erre természetesen a felhasználót is figyelmeztetjük (System.out.println("Kérem, hogy adja meg a szót (max. 9 karakter)!");).

Az átlós szövegkiírást további 2 hátultesztelő ciklus végzi el, de for ciklusokkal is megoldható.

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
    String szokozTomb [] = new String[10];
        szokozTomb[0] = "\n";
        szokozTomb[1] = "\n ";
        szokozTomb[2] = "\n  ";
        szokozTomb[3] = "\n   ";
        szokozTomb[4] = "\n    ";
        szokozTomb[5] = "\n     ";
        szokozTomb[6] = "\n      ";
        szokozTomb[7] = "\n       ";
        szokozTomb[8] = "\n        ";
        szokozTomb[9] = "\n         ";

    Scanner in = new Scanner(System.in);
    String szoveg = "";
    int szoveghossz = 0;

    do{
        System.out.println("Kérem, hogy adja meg a szót (max. 9 karakter)!");
        szoveg = in.nextLine();
        szoveghossz = szoveg.length();
        }while(szoveghossz > 9);

    int n = 0;

    do {
        System.out.print(szoveg.substring(n, n+1));
        System.out.print(szokozTomb[n+1]);
        n++;
        }while (n != szoveghossz);

    n = 0;
    int tarolo = szoveg.length();

    do {
        System.out.print(szokozTomb[tarolo - 1]);
        System.out.print(szoveg.substring(n, n+1));
        n++;
        tarolo--;
        } while (n != szoveg.length());
    }
}

 

Végeredmény (például):

Kérem, hogy adja meg a szót!
Átlós szöveg
Kérem, hogy adja meg a szót!
Átlósan
Á
 t
  l
   ó
    s
     a
      n

      Á
      t
     l
   ó
  s
 a
n