Diferència entre revisions de la pàgina «M3 - Programació estructurada / Exercicis UF1: Cadenes»

De wikiserver
Dreceres ràpides: navegació, cerca
Línia 25: Línia 25:
 
   22 – E
 
   22 – E
 
</pre>
 
</pre>
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
import java.util.Scanner;
 
import java.util.Scanner;
Línia 40: Línia 40:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
  
 
2. Genera un programa que encripti una cadena de caràcters. Per exemple: '“avadakedavra”' encriptat es '“bwbeblfebwsb”' i el mètode d’encriptació és canviar un caràcter pel seu successor a l’abecedari (el successor de ‘z’ és ‘a’).
 
2. Genera un programa que encripti una cadena de caràcters. Per exemple: '“avadakedavra”' encriptat es '“bwbeblfebwsb”' i el mètode d’encriptació és canviar un caràcter pel seu successor a l’abecedari (el successor de ‘z’ és ‘a’).
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
import java.util.Scanner;
 
import java.util.Scanner;
Línia 65: Línia 65:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
3. Feu un programa que si li passem un nom com a paràmetre ens doni la benvinguda:
 
3. Feu un programa que si li passem un nom com a paràmetre ens doni la benvinguda:
Línia 73: Línia 73:
 
     Hola desconegut.
 
     Hola desconegut.
 
</pre>
 
</pre>
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
public class Exercici3 {
 
public class Exercici3 {
Línia 86: Línia 86:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
4. Feu un programa que calculi la mitjana aritmètica dels valors passats com a paràmetres. Si no es passa cap paràmetre sortirà un missatge d’error i si el primer paràmetre és '''–ajut''' el programa traurà una petita explicació del funcionament.
 
4. Feu un programa que calculi la mitjana aritmètica dels valors passats com a paràmetres. Si no es passa cap paràmetre sortirà un missatge d’error i si el primer paràmetre és '''–ajut''' el programa traurà una petita explicació del funcionament.
  
 
:*Double.parseDouble(cad); // Intenta convertir el String cad a Double.
 
:*Double.parseDouble(cad); // Intenta convertir el String cad a Double.
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
public class Exercici4 {
 
public class Exercici4 {
Línia 113: Línia 113:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
5. Genereu un programa anomenat '''ComptaAsString''' que compti quantes lletres 'a' conté una cadena de text. El text per tractar pot ser qualsevol i el podeu declarar com una constant en el codi font.
 
5. Genereu un programa anomenat '''ComptaAsString''' que compti quantes lletres 'a' conté una cadena de text. El text per tractar pot ser qualsevol i el podeu declarar com una constant en el codi font.
  
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
public class Exercici5 {
 
public class Exercici5 {
Línia 148: Línia 148:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
6. Feu un programa anomenat '''ParaulesSenars''' que llegeixi una frase escrita en una sola línia des del teclat i tot seguit escrigui les paraules que hi ha en posició senar (la primera, la tercera, etc.). Per exemple, si s'escriu “Hi havia una vegada un lloc...”, es mostrarà “Hi una un”.
 
6. Feu un programa anomenat '''ParaulesSenars''' que llegeixi una frase escrita en una sola línia des del teclat i tot seguit escrigui les paraules que hi ha en posició senar (la primera, la tercera, etc.). Per exemple, si s'escriu “Hi havia una vegada un lloc...”, es mostrarà “Hi una un”.
  
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
import java.util.Scanner;
 
import java.util.Scanner;
Línia 174: Línia 174:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
7. Fés un programa que, primer demani a l’usuari escriure una rere l’altra, tres paraules que només continguin lletres minúscules. A continuació el programa ha d’escriure quina és la paraula més llarga i quina és l’alfabèticament menor.  
 
7. Fés un programa que, primer demani a l’usuari escriure una rere l’altra, tres paraules que només continguin lletres minúscules. A continuació el programa ha d’escriure quina és la paraula més llarga i quina és l’alfabèticament menor.  
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
import java.util.Scanner;
 
import java.util.Scanner;
Línia 211: Línia 211:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
8. Fes un programa que llegeixi una frase i un número enter N i ens digui quines paraules tenen longitud N.
 
8. Fes un programa que llegeixi una frase i un número enter N i ens digui quines paraules tenen longitud N.
  
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
import java.util.Scanner;
 
import java.util.Scanner;
Línia 239: Línia 239:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
9. Fes un programa que llegeixi una frase i la mostri invertida.
 
9. Fes un programa que llegeixi una frase i la mostri invertida.
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
import java.util.Scanner;
 
import java.util.Scanner;
Línia 260: Línia 260:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
10. Volem un programa per treballar amb cadenes que mitjançant un menú ens permeti les següents opcions:
 
10. Volem un programa per treballar amb cadenes que mitjançant un menú ens permeti les següents opcions:
Línia 396: Línia 396:
 
11. Escriu un programa que utilitzi el mètode regionMatches de la classe String per comparar dues cadenes introduïdes per l’usuari. L’aplicació rebrà com a entrada el nombre de caràcters a comparar i l’índex inicial de la comparació. L’aplicació haurà d’indicar si les cadenes són iguals. Ignoreu si els caràcters estan en majúscules o no en el moment de la comparació.
 
11. Escriu un programa que utilitzi el mètode regionMatches de la classe String per comparar dues cadenes introduïdes per l’usuari. L’aplicació rebrà com a entrada el nombre de caràcters a comparar i l’índex inicial de la comparació. L’aplicació haurà d’indicar si les cadenes són iguals. Ignoreu si els caràcters estan en majúscules o no en el moment de la comparació.
  
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
import java.util.Scanner;
 
import java.util.Scanner;
Línia 423: Línia 423:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
12. Escriu una aplicació que rebi com a entrada una línia de text i un caràcter de cerca i que utilitzi el mètode indexOf de la classe String per a determinar el nombre d’ocurrències del caràcter en el text.
 
12. Escriu una aplicació que rebi com a entrada una línia de text i un caràcter de cerca i que utilitzi el mètode indexOf de la classe String per a determinar el nombre d’ocurrències del caràcter en el text.
  
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
import java.util.Scanner;
 
import java.util.Scanner;
Línia 451: Línia 451:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
13. Féu un programa que llegeixi una cadena de caràcters i indiqui si la cadena és un palíndrom. Un palíndrom és una cadena que es llegeix d’igual manera d’esquerra a dreta que de dreta a esquerra. Com per exemple : dabale arroz a la zorra el abad. Cal entendre que per poder-ho fer d’aquesta manera no han d’haver-hi espais en blanc.
 
13. Féu un programa que llegeixi una cadena de caràcters i indiqui si la cadena és un palíndrom. Un palíndrom és una cadena que es llegeix d’igual manera d’esquerra a dreta que de dreta a esquerra. Com per exemple : dabale arroz a la zorra el abad. Cal entendre que per poder-ho fer d’aquesta manera no han d’haver-hi espais en blanc.
  
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
import java.util.Scanner;
 
import java.util.Scanner;
Línia 480: Línia 480:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
14. Escriu una aplicació que utilitzi la generació de números aleatoris per a crear enunciats. Utilitza quatre taules de cadenes anomenades article, substantiu, verb i preposicio. Crea una oració seleccionant una paraula a l’atzar de cada una de
 
14. Escriu una aplicació que utilitzi la generació de números aleatoris per a crear enunciats. Utilitza quatre taules de cadenes anomenades article, substantiu, verb i preposicio. Crea una oració seleccionant una paraula a l’atzar de cada una de
Línia 491: Línia 491:
 
això genera un valor >= 0 i < maxim
 
això genera un valor >= 0 i < maxim
 
</source>
 
</source>
<!--
+
 
 
<source lang= "java">
 
<source lang= "java">
 
import java.util.Random;
 
import java.util.Random;
Línia 527: Línia 527:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
15. '''languageGames''': En molts idiomes disposem de variants lúdiques de l'idioma. Aquest programa codificarà dos mètodes que ens permetran traduir paraules d'idiomes coneguts a variants lúdiques d'aquests. Expliquem primer aquestes variants:
 
15. '''languageGames''': En molts idiomes disposem de variants lúdiques de l'idioma. Aquest programa codificarà dos mètodes que ens permetran traduir paraules d'idiomes coneguts a variants lúdiques d'aquests. Expliquem primer aquestes variants:

Revisió del 17:42, 10 juny 2021

1. L’última lletra del DNI pot calcular-se a partir del seus números. Per a això només has de dividir el número per 23 i quedar-te amb la resta. Fes un programa per calcular la lletra d’un DNI. La lletra que correspon a cada número la tens en aquesta taula:

    0 - T
    1 - R
    2 - W
    3 - A
    4 - G
    5 - M
    6 - Y
    7 - F
    8 - P
    9 - D
   10 - X
   11 - B
   12 - N
   13 - J
   14 - Z
   15 - S
   16 - Q
   17 - V
   18 - H
   19 - L
   20 - C
   21 - K
   22 – E
import java.util.Scanner;

public class Exercici1 {

    public static void main(String[] args) {
        String lletres = "TRWAGMYFPDXBNJZSQVHLCKE";
        Scanner lector = new Scanner(System.in);
        System.out.print("Introdueix el número del DNI: ");
        int numero = lector.nextInt();
        System.out.println("La teva lletra és: " + lletres.charAt(numero % 23));
    }
}


2. Genera un programa que encripti una cadena de caràcters. Per exemple: '“avadakedavra”' encriptat es '“bwbeblfebwsb”' i el mètode d’encriptació és canviar un caràcter pel seu successor a l’abecedari (el successor de ‘z’ és ‘a’).

import java.util.Scanner;

public class Exercici2 {

    public static void main(String[] args) {
        String abc = "abcdefghijklmnopqrstvwxyza  ";
        Scanner lector = new Scanner(System.in);
        System.out.print("Introdueix el text a encriptar: ");
        String text = lector.nextLine();
        System.out.print("El text codificat és: ");
        for (int i = 0; i < text.length(); i++) {
            int pos = abc.indexOf(text.charAt(i));
            System.out.print(abc.charAt(pos + 1));

        }
        System.out.println("");
    }
}

3. Feu un programa que si li passem un nom com a paràmetre ens doni la benvinguda:

    Benvingut Sr. ...
    i si no l'hi donem digui :
    Hola desconegut.
public class Exercici3 {

    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("Hola desconegut");
        } else {
            System.out.println("Hola Sr. " + args[0]);
        }
    }
}

4. Feu un programa que calculi la mitjana aritmètica dels valors passats com a paràmetres. Si no es passa cap paràmetre sortirà un missatge d’error i si el primer paràmetre és –ajut el programa traurà una petita explicació del funcionament.

  • Double.parseDouble(cad); // Intenta convertir el String cad a Double.
public class Exercici4 {

    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("Aquest programa necessita paràmetres");
        } else if (args[0].equals("-ajut")) {
            System.out.println("Aquest programa calcula la mitjana dels valors passats com a paràmetres");
        } else {
            double mitjana;
            double suma = 0;
            for (int i = 0; i < args.length; i++) {
                suma = suma + Double.parseDouble(args[i]);
            }
            mitjana =  suma / args.length;
            System.out.printf("La mitjana és: %.2f\n\n", mitjana);

        }
    }
}

5. Genereu un programa anomenat ComptaAsString que compti quantes lletres 'a' conté una cadena de text. El text per tractar pot ser qualsevol i el podeu declarar com una constant en el codi font.


public class Exercici5 {

    //Versió 1
    
//    public static void main(String[] args) {
//        final String text = "Com m'agrada la programació";
//        int comptador = 0;
//        for (int i = 0; i < text.length(); i++) {
//            if (text.charAt(i) == 'a') {
//                comptador++;
//            }
//        }
//        System.out.println("Hi ha " + comptador + " as.");
//    }
    
    //Versió 2
    public static void main(String[] args) {
        final String text = "Com m'agrada la programació";
        int comptador = 0,pos;
        pos=text.indexOf('a');
        while(pos !=-1){
            comptador++;
            pos=text.indexOf('a', pos+1);
        }
        System.out.println("Hi ha " + comptador + " as.");
            
    }
}

6. Feu un programa anomenat ParaulesSenars que llegeixi una frase escrita en una sola línia des del teclat i tot seguit escrigui les paraules que hi ha en posició senar (la primera, la tercera, etc.). Per exemple, si s'escriu “Hi havia una vegada un lloc...”, es mostrarà “Hi una un”.


import java.util.Scanner;
import java.util.StringTokenizer;

public class Exercici6 {

    public static void main(String[] args) {
        Scanner lector = new Scanner(System.in);

        System.out.println("Escriu una frase de diverses paraules:");
        String frase = lector.nextLine();
        String paraules[] = frase.split(" ");
        for (int i = 0; i < paraules.length; i +=2) {
            System.out.println(paraules[i]);

        }

    }

}

7. Fés un programa que, primer demani a l’usuari escriure una rere l’altra, tres paraules que només continguin lletres minúscules. A continuació el programa ha d’escriure quina és la paraula més llarga i quina és l’alfabèticament menor.

import java.util.Scanner;

public class Exercici7 {

    public static void main(String[] args) {
        Scanner lector = new Scanner(System.in);

        System.out.print("Escriu la primera paraula: ");
        String par1 = lector.next();
        System.out.print("Escriu la segona paraula: ");
        String par2 = lector.next();
        System.out.print("Escriu la tercera paraula: ");
        String par3 = lector.next();
        String mesLlarga = par1;
        String menor = par1;
        if (par2.length() > mesLlarga.length()) {
            mesLlarga = par2;
        } 
        if (par3.length() > mesLlarga.length()) {
            mesLlarga = par3;
        }
        if (menor.compareTo(par2) > 0) {
            menor = par2;
        } 
        if (menor.compareTo(par3) > 0) {
            menor = par3;
        }
        System.out.println("La paraula més llarga és: " + mesLlarga);
        System.out.println("La paraula menor alfabèticament és : " + menor);
    }
}

8. Fes un programa que llegeixi una frase i un número enter N i ens digui quines paraules tenen longitud N.


import java.util.Scanner;
import java.util.StringTokenizer;

public class Exercici8 {

    public static void main(String[] args) {
        Scanner lector = new Scanner(System.in);
        System.out.print("Escriu una frase de diverses paraules: ");
        String frase = lector.nextLine();
        System.out.print("Introdueix la llargada: ");
        int longitud = lector.nextInt();
        String paraules[] = frase.split(" ");
        for (String paraula : paraules) {
            if (paraula.length() == longitud) {
                System.out.println(paraula);
            }
        }

    }

}

9. Fes un programa que llegeixi una frase i la mostri invertida.

import java.util.Scanner;

public class Exercici9 {

    public static void main(String[] args) {
        Scanner lector = new Scanner(System.in);
        System.out.print("Escriu una frase: ");
        String frase = lector.nextLine();
        for (int i = frase.length() - 1; i >= 0; i--) {
            System.out.print(frase.charAt(i));

        }
        System.out.println("");
    }
}

10. Volem un programa per treballar amb cadenes que mitjançant un menú ens permeti les següents opcions:

  • Mostrar els n primers caràcters d’una cadena
  • Mostrar els n últims caràcters d’una cadena (d’esquerra a dreta)
  • Eliminar els espais en blanc que hi hagi al final de la cadena
  • Eliminar els espais en blanc que hi hagi al principi de la cadena
  • Eliminar d’una cadena els n caràcters que apareixen a partir de la posició p
  • Inserir una cadena dins d’una altra a partir de la posició p
  • Comptar el nombre de vegades que apareix una cadena dins d’una altra
  • Esborrar totes les aparicions d’una cadena dins d’una altra
import java.util.Scanner;

public class Exercici10 {

    final static String menu = "1. Mostrar els n primers caràcters d’una cadena\n"
            + "2. Mostrar els n últims caràcters d’una cadena (d’esquerra a dreta)\n"
            + "3. Eliminar els espais en blanc que hi hagi al final de la cadena\n"
            + "4. Eliminar els espais en blanc que hi hagi al principi de la cadena\n"
            + "5. Eliminar d’una cadena els n caràcters que apareixen a partir de la posició p\n"
            + "6. Inserir una cadena dins d’una altra a partir de la posició p\n"
            + "7. Comptar el nombre de vegades que apareix una cadena dins d’una altra\n"
            + "8. Esborrar totes les aparicions d’una cadena dins d’una altra\n"
            + "Tria una opció: ";
    final static String missatgeEntrada = "Inútil, introdueix un valor entre 1 i 8";
    final static String missatgeNumero = "Has d'introduir un valor numèric";

    public static void main(String[] args) {
        Scanner lector = new Scanner(System.in);
        System.out.print("Introdueix una cadena de text: ");
        String text = lector.nextLine();
        System.out.print(menu);
        int i, num, pos;
        String cad;
        if (lector.hasNextInt()) {

            int opcio = lector.nextInt();
            switch (opcio) {
                case 1:
                    System.out.print("Introdueix el nombre de caràcters a mostrar: ");
                    if (lector.hasNextInt()) {
                        num = lector.nextInt();
                        System.out.println("\"" + text.substring(0, num) + "\"");

                    } else {
                        System.out.println(missatgeNumero);
                    }
                    break;
                case 2:
                    System.out.print("Introdueix el nombre de caràcters a mostrar: ");
                    if (lector.hasNextInt()) {
                        num = lector.nextInt();
                        System.out.println("\"" + text.substring(text.length() - num, text.length()) + "\"");

                    } else {
                        System.out.println(missatgeNumero);
                    }
                    break;
                case 3:
                    i = text.length() - 1;
                    while (text.charAt(i) == ' ') {
                        i--;
                    }
                    System.out.println("\"" + text.substring(0, i + 1) + "\"");
                    break;
                case 4:
                    i = 0;
                    while (text.charAt(i) == ' ') {
                        i++;
                    }
                    System.out.println("\"" + text.substring(i) + "\"");
                    break;
                case 5:
                    System.out.print("Introdueix el nombre de caràcters a eliminar: ");
                    if (lector.hasNextInt()) {
                        num = lector.nextInt();
                        System.out.print("Introdueix la posició inicial: ");
                        if (lector.hasNextInt()) {
                            pos = lector.nextInt();
                            System.out.println("\"" + text.substring(0, pos) + text.substring(pos + num) + "\"");
                        } else {
                            System.out.println(missatgeNumero);
                        }
                    } else {
                        System.out.println(missatgeNumero);
                    }
                    break;
                case 6:
                    System.out.print("Introdueix la cadena a insertar: ");
                    lector.nextLine();
                    cad = lector.nextLine();
                    System.out.print("Introdueix la posició inicial: ");
                    if (lector.hasNextInt()) {
                        pos = lector.nextInt();
                        System.out.println("\"" + text.substring(0, pos) + cad + text.substring(pos) + "\"");
                    } else {
                        System.out.println(missatgeNumero);
                    }

                    break;
                case 7:
                    System.out.print("Introdueix la cadena a comptar: ");
                    lector.nextLine();
                    cad = lector.nextLine();
                    int compt = 0;
                    pos = text.indexOf(cad);
                    while (pos != -1) {
                        compt++;
                        pos = text.indexOf(cad, pos + 1);
                    }
                    System.out.println("Apareix " + compt + " vegades");
                    break;
                case 8:
                    System.out.print("Introdueix la cadena a esborrar: ");
                    lector.nextLine();
                    cad = lector.nextLine();
                    System.out.println(text.replace(cad, ""));
                    break;
                default:
                    System.out.println(missatgeEntrada);
            }

        } else {
            System.out.println(missatgeEntrada);

        }
    }
}

11. Escriu un programa que utilitzi el mètode regionMatches de la classe String per comparar dues cadenes introduïdes per l’usuari. L’aplicació rebrà com a entrada el nombre de caràcters a comparar i l’índex inicial de la comparació. L’aplicació haurà d’indicar si les cadenes són iguals. Ignoreu si els caràcters estan en majúscules o no en el moment de la comparació.


import java.util.Scanner;

public class Exercici11 {

    public static void main(String[] args) {
        Scanner lector = new Scanner(System.in);

        System.out.print("Escriu la primera cadena: ");
        String par1 = lector.nextLine();
        System.out.print("Escriu la segona cadena: ");
        String par2 = lector.nextLine();
        System.out.print("Introdueix el nombre de caracters a comparar: ");
        int num = lector.nextInt();
        System.out.print("Introdueix a partir de quina posició: ");
        int pos = lector.nextInt();
        if (par1.regionMatches(true, pos, par2, pos, num)) {
            System.out.println("Les subcadenes coincideixen");
        } else {
            System.out.println("Les subcadenes no coincideixen");
        }


    }
}

12. Escriu una aplicació que rebi com a entrada una línia de text i un caràcter de cerca i que utilitzi el mètode indexOf de la classe String per a determinar el nombre d’ocurrències del caràcter en el text.


import java.util.Scanner;

public class Exercici12 {

    public static void main(String[] args) {
        Scanner lector = new Scanner(System.in);

        System.out.print("Escriu el text: ");
        String text = lector.nextLine();
        System.out.print("Introdueix el caràcter a comptar: ");
        char car = lector.next().charAt(0);
        int compt = 0;
        int index = text.indexOf(car);

        while (index != -1) {
            compt++;
            index = text.indexOf(car, index + 1);
        }
        System.out.println("El caràcter " + car + " apareix " + compt + " vegades");
    }
}

13. Féu un programa que llegeixi una cadena de caràcters i indiqui si la cadena és un palíndrom. Un palíndrom és una cadena que es llegeix d’igual manera d’esquerra a dreta que de dreta a esquerra. Com per exemple : dabale arroz a la zorra el abad. Cal entendre que per poder-ho fer d’aquesta manera no han d’haver-hi espais en blanc.


import java.util.Scanner;

public class Exercici13 {

    public static void main(String[] args) {
        Scanner lector = new Scanner(System.in);

        System.out.print("Escriu el text sense espais en blanc: ");
        String text = lector.next();
        int i = text.length() - 1;
        int j = 0;
        while ((j < i) && (text.charAt(i) == text.charAt(j))) {
            i--;
            j++;
        }
        if (i == j) {
            System.out.println("És palíndrom");
        } else {
            System.out.println("No és palíndrom");
        }
    }
}

14. Escriu una aplicació que utilitzi la generació de números aleatoris per a crear enunciats. Utilitza quatre taules de cadenes anomenades article, substantiu, verb i preposicio. Crea una oració seleccionant una paraula a l’atzar de cada una de les taules en el següent ordre: article, substantiu, verb, preposicio, article i substantiu. A mesura que es triï una paraula s’ha de concatenar amb les anteriors a l’enunciat. Les paraules es separen per espais. Quan es mostri l’enunciat final, haurà de començar amb una lletra majúscula i acabar amb punt. El programa ha de generar 20 enunciats.

Nota: Per generar números aleatoris cal fer el codi següent:

Random aleatori = new Random();
int valor = aleatori.nextInt(maxim);
això genera un valor >= 0 i < maxim
import java.util.Random;

public class Exercici14 {

    public static void main(String[] args) {
        String article[] = {"el", "la", "els", "les", "un", "una", "uns", "unes"};
        String substantiu[] = {"gos", "gats", "pècora", "tontos", "pixats", "mama", "home", "dona"};
        String verb[] = {"corre", "peguen", "salta", "morir", "jugar", "priva", "programo", "mengen"};
        String preposicio[] = {"a", "amb", "de", "en", "per", "per a", "contra", "fins"};
        int quants = 0;
        while (quants < 20) {
            Random aleatori = new Random();
            int art1 = aleatori.nextInt(article.length);
            int art2 = aleatori.nextInt(article.length);
            int subst1 = aleatori.nextInt(article.length);
            int subst2 = aleatori.nextInt(article.length);
            int verb1 = aleatori.nextInt(article.length);
            int prep = aleatori.nextInt(article.length);
            String arti1 = Character.toUpperCase(article[art1].charAt(0)) + article[art1].substring(1) + " ";
            String arti2 = article[art2] + " ";
            String sub1 = substantiu[subst1] + " ";
            String sub2 = substantiu[subst2] + ".";
            String verbs = verb[verb1] + " ";
            String prepo = preposicio[prep] + " ";
            System.out.println(arti1 + sub1 + verbs + prepo + arti2 + sub2);
            quants++;


        }


    }
}

15. languageGames: En molts idiomes disposem de variants lúdiques de l'idioma. Aquest programa codificarà dos mètodes que ens permetran traduir paraules d'idiomes coneguts a variants lúdiques d'aquests. Expliquem primer aquestes variants:

a) Jerigonza (variant lúdica del castellà): després de cada vocal s'afegeix una 'p' i es repeteix la vocal.

Exemples:

  • “casa” seria “capasapa”
  • “Gabriel” seria “Gapabripiepel”
  • “murcielago” seria “mupurcipiepelapagopo”

NOTA: Per simplificar-ho suposarem que no s'introdueixen accents.

b) Basic Pig Latin (variant lúdica de l'anglès): tenim dues regles:
A les paraules que comencen per vocal se'ls afegeix al darrera el sufix “ay”. Exemples:
  • “ant” seria “antay”
  • “astronaut” seria “astronautay”
A les paraules que comencen per consonant, es mouen totes les consonants del davant de la primera vocal al final i s'afegeix el sufix “ay”. Exemples:
  • “mess” seria “essmay”
  • “father” seria “atherfay”
  • “chick” seria “ickchay”
  • “star” seria “arstay”

El programa ha d'implementar dos mètodes: un que tradueixi paraules del castellà al jerigonza i un altre que tradueixi paraules de l'anglès al basic pig latin.

A continuació posem alguns exemples d'execució:

> Program p = new Program()
> p.spanish2jerigonza("casa")
"capasapa"
> p.spanish2jerigonza("murcielago")
"mupurcipiepelapagopo"
> p.english2basicPigLatin("astronaut")
"astronautay"
> p.english2basicPigLatin("father")
"atherfay"
> p.english2basicPigLatin("star")
"arstay"

NOTA: Per simplificar, podeu suposar que la dada d'entrada serà UNA ÚNICA paraula i que aquesta no tindrà ni accents ni caràcters diferents de lletres.


16. mySplit: L'objectiu d'aquest exercici és codificar una funcionalitat similar al mètode split de la classe String.

Donades dues cadenes s i sub, construirem un array de cadenes amb les subcadenes de s delimitades per la subcadena sub. A continuació posem alguns exemples d'execució:

>Program p = new Program()
>p.mySplit("El gat s'ha escapat.", " ")
{El, gat, s'ha, escapat. }
>p.mySplit("El gat s'ha escapat.", "a")
{El g, t s'h, esc, p, t. }
>p.mySplit("El gat s'ha escapat.", "at")
{El g, s'ha escap, . }

NOTA 1: NO podeu usar el mètode split de la classe String. NOTA 2: Podeu afegir al programa qualsevol mètode o fragment de codi fet a classe.