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

De wikiserver
Dreceres ràpides: navegació, cerca
(Prova 1)
 
(Hi ha 53 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
 +
 +
<!--
 
==Prova 1==
 
==Prova 1==
  
1. Transposar una matriu quadrada de N*N sense utilitzar una matriu auxiliar.
+
1. Transposar una matriu quadrada de N*N sense utilitzar una matriu auxiliar. '''2 punts'''
  
 
Ex. N=4
 
Ex. N=4
Línia 12: Línia 14:
 
  13  14  15  16                                          4  8  12  16
 
  13  14  15  16                                          4  8  12  16
  
<source lang="java">
+
2. Indicar si una taula ja declarada per codi que conté Strings diferents està ordenada alfabèticament o no, sense distingir majúscules i minúscules. '''2 punts'''
package provatcted;
 
 
 
import java.util.Scanner;
 
 
 
 
 
public class ex1 {
 
    public static void main(String[] args) {
 
          Scanner teclat = new Scanner(System.in);
 
        int N, cont=0, aux;
 
       
 
        System.out.print("Introduce un numero: ");
 
        N=teclat.nextInt();
 
       
 
        int Mat[][] = new int[N][N];
 
       
 
        //Omplim la matriu
 
       
 
        for (int i = 0; i < Mat.length; i++) {
 
            for (int j = 0; j < Mat[i].length; j++) {
 
                cont++;
 
                Mat[i][j]=cont;
 
            }           
 
        }
 
       
 
        //Transposem la matriu
 
       
 
          for (int i = 0; i < Mat.length; i++) {
 
          int j=0;
 
          while (j<i){
 
              aux=Mat[i][j];
 
              Mat[i][j]=Mat[j][i];
 
              Mat[j][i]=aux;
 
              j++;
 
          }
 
        }
 
         
 
        //Mostrem la matriu transposada 
 
       
 
          for (int i = 0; i < Mat.length; i++) {
 
              System.out.println("");
 
            for (int j = 0; j < Mat[i].length; j++) {
 
                System.out.printf("%2d ",Mat[i][j]);
 
            }
 
             
 
        }
 
    }
 
}
 
</source>
 
 
 
<!---->
 
 
 
2. Indicar si una taula ja declarada per codi que conté Strings diferents està ordenada alfabèticament o no, sense distingir majúscules i minúscules.
 
 
<pre>
 
<pre>
 
Per exemple si tenim:  
 
Per exemple si tenim:  
Línia 79: Línia 29:
 
</pre>
 
</pre>
  
<source lang="java">
 
package provatcted;
 
  
public class ex2 {
+
3. A partir d’una frase introduïda per teclat creu una taula que contingui les paraules que surten més d’una vegada a la frase sense distingir minúscules i majúscules i el número de repeticions de les mateixes. A continuació, imprimiu la taula. '''2 punts'''
        public static void main(String[] args) {
 
        String text[]={"HTML","JAVA","JavaScript","PHP","Python","SQL"};
 
        boolean ordenat=true;
 
        int paraulaAtractar=1;
 
        String paraulaAnterior=text[0],paraulaActual;
 
       
 
        while(paraulaAtractar<text.length&& ordenat){
 
            paraulaActual=text[paraulaAtractar];
 
            if (paraulaAnterior.compareToIgnoreCase(paraulaActual)>0) {
 
                ordenat=false;
 
            }else{
 
                paraulaAnterior=paraulaActual;
 
                paraulaAtractar++;
 
            }
 
        }
 
       
 
        if (ordenat) {
 
            System.out.println("La taula esta ordenada alfabeticament.");
 
        }else{
 
            System.out.println("La taula no esta ordenada alfabeticament.");
 
        }
 
    }
 
}
 
</source>
 
<!---->
 
 
 
3. A partir d’una frase introduïda per teclat creu una taula que contingui les paraules que surten més d’una vegada a la frase sense distingir minúscules i majúscules i el número de repeticions de les mateixes. A continuació, imprimiu la taula.
 
  
 
Per exemple si la frase és:  
 
Per exemple si la frase és:  
Línia 137: Línia 58:
 
|}
 
|}
  
 +
4. Donada una frase i dos  caràcters introduïts per teclat, mostreu, si existeix, la cadena de caràcters de  cada paraula de la frase compresa entre la primera aparició del primer caràcter i la darrera aparició del segon caràcter (ambdós caràcters inclosos).
 +
'''2 punts'''
  
<source lang="java">
+
Per exemple si la frase és:
package provatcted;
 
  
import java.util.Scanner;
+
'''Quan creus que coneixes totes les respostes arriba l'univers i et canvia totes les preguntes'''
  
public class ex3 {
+
I els caràcters són : primer '''‘e’''' i segon '''‘s’'''.
  
    public static void main(String[] args) {
+
El resultat seria:
        Scanner teclat = new Scanner(System.in);
 
        System.out.println("Introdueix una frase: ");
 
        String text = teclat.nextLine();
 
        String textSeparat[] = text.split(" ");
 
  
        ex3Paraula taula[] = new ex3Paraula[textSeparat.length];
+
'''eus eixes es es espostes ers  es es eguntes'''
       
 
        int numParaules = 0;
 
        int paraulesTaula = 0;
 
  
        while (numParaules < textSeparat.length) {
+
5. Ompliu un vector de 1000 posicions amb números enters del 1 al 9 generats de forma aleatòria i a continuació mostreu la seqüència més llarga de números imparells seguits. '''2 punts'''
            String paraula = textSeparat[numParaules];
+
<pre>                                   
            System.out.println("paraula: "+textSeparat[numParaules]);
+
import java.util.Random;
            //Mirem si ja hem tractar la paraula
+
...
            boolean trobat = false;
+
Random rand = new Random();  
            int index = 0;
 
  
            while (index < paraulesTaula && !trobat) {
+
int rand_int = rand.nextInt(10)+1;
                if (paraula.equalsIgnoreCase(taula[index].paraula)) {
+
</pre>
 +
-->
 +
<!---->
 +
==Prova 2==
  
                    trobat = true;
+
1. Ompliu una matriu de dimensió M*N i un vector de dimensió M amb els dígits 0 o 1 generats aleatòriament. I indiqueu '''quantes columnes''' de la matriu tenen el mateix número de 0’s que el vector.
                } else {
+
:'''2 PUNTS'''
                    index++;
+
<pre>
                }
+
Ex. M=4 i N=5
  
            }
+
  Matriu                                      Vector
            if (!trobat) { //busquem si apareix a la frase més vegades la paraula
+
  1    0    1    0  0                        0    0    1  0
 +
  0    0    1    1  0                                         
 +
  0    1    0    0  1                                       
 +
  0    0    1    1  0                                           
 +
</pre>
 +
La matriu té  3 columnes amb el mateix número de 0’s que el vector.
  
                int segonaAparicio = numParaules + 1;
+
2. Donades dues taules ja declarades per codi que contenen String diferents dins la mateixa taula, '''crea una tercera taula''' que contingui els valors que surten a les dues taules. '''Finalment imprimeix''' aquesta tercera taula.
                boolean igualParaula = false;
+
:'''2 PUNTS'''
  
                while (segonaAparicio < textSeparat.length && !igualParaula) {
+
Per exemple si tenim:
                    if (paraula.equalsIgnoreCase(textSeparat[segonaAparicio])) {
+
<pre>
 +
String[] taula1= {"Python", "JAVA", "PHP", "C#", "C++", "SQL"};
 +
String[] taula2= {"MySQL", "SQL", "SQLite", "Oracle", "PostgreSQL", "DB2", "JAVA"};
  
                        igualParaula = true;
+
Solució:
                    } else {
+
String[] taula3= {"JAVA", "SQL"};
                        segonaAparicio++;
+
Imprimirà: JAVA, SQL.
                    }
+
</pre>
                }
 
                if (igualParaula){ //hem trobat una repetició de la paraula
 
                    ex3Paraula nova_paraula = new ex3Paraula();
 
                    nova_paraula.paraula = paraula;
 
                    nova_paraula.numAparicio=2;
 
                    taula[paraulesTaula]=nova_paraula;
 
                   
 
                    for (int i = segonaAparicio+1; i < textSeparat.length; i++) {
 
                        if (paraula.equalsIgnoreCase(textSeparat[i])){
 
                            taula[paraulesTaula].numAparicio++;
 
                        }
 
                    }
 
                    paraulesTaula++;
 
                }
 
               
 
            }
 
            numParaules++;
 
        }
 
  
        for (int j = 0; j < paraulesTaula; j++) {
+
3. A partir d’una frase introduïda per teclat '''creeu una taula''' que contingui les seves paraules, quantes vocals tenen i quantes consonants. Les paraules repetides no es tindran en compte, . A continuació, mostreu el contingut de la taula.
            if (taula[j].numAparicio > 1) {
+
:'''2 PUNTS'''
                System.out.println(taula[j].paraula + " numAparicio: " + taula[j].numAparicio);
 
            }
 
  
        }
+
Per exemple si la frase és:
    }
 
  
}
+
'''Oblidaran el que vas fer i oblidaran el que vas dir pero mai oblidaran el que els vas fer sentir'''
</source>
 
<!---->
 
  
4. Donada una frase i dos  caràcters introduïts per teclat, mostreu, si existeix, la cadena de caràcters de  cada paraula de la frase compresa entre la primera aparició del primer caràcter i la darrera aparició del segon caràcter (ambdós caràcters inclosos) .
+
El contingut de la taula seria:
  
Per exemple si la frase és:  
+
{|border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;"
 +
! align="left" width="100 px" style="background:Lavender; color:Black"|oblidaran
 +
! align="left" width="100 px" style="background:Lavender; color:Black"|el
 +
! align="left" width="120 px" style="background:Lavender; color:Black"|que
 +
! align="left" width="85 px" style="background:Lavender; color:Black"|vas
 +
! align="left" width="85 px" style="background:Lavender; color:Black"|fer
 +
! align="left" width="85 px" style="background:Lavender; color:Black"|i
 +
! align="left" width="85 px" style="background:Lavender; color:Black"|dir
 +
! align="left" width="85 px" style="background:Lavender; color:Black"|pero
 +
! align="left" width="85 px" style="background:Lavender; color:Black"|mai
 +
! align="left" width="85 px" style="background:Lavender; color:Black"|els
 +
! align="left" width="85 px" style="background:Lavender; color:Black"|sentir
 +
|-
 +
|4||1||2||1||1||1||1||2||2||1||2
 +
|-
 +
|5||1||1||2||2||0||2||2||1||2||4
 +
|}
  
'''Quan creus que coneixes totes les respostes arriba l'univers i et canvia totes les preguntes'''
+
:* Per veure si un caràcter és una vocal, el podeu cercar a '''String vocals="aeiou"'''
  
I els caràcters són : primer '''‘e’''' i segon '''‘s’'''.
+
4. Donada una frase i la següent matriu de caràcters, '''codifiqueu''' una frase introduïda per teclat, substituint cada caràcter per les coordenades (fila, columna) que li corresponen segons la matriu de codificació. Finalment mostreu la frase codificada.
 +
:'''2punts'''
  
El resultat seria:
+
Matriu de codificació:
  
'''eus eixes es es espostes ers  es es eguntes'''
+
{|border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;"
 +
! align="center" width="50 px" style="background:Lavender; color:Black"|
 +
! align="center" width="50 px" style="background:Lavender; color:Black"|0
 +
! align="center" width="50 px" style="background:Lavender; color:Black"|1
 +
! align="center" width="50 px" style="background:Lavender; color:Black"|2
 +
! align="center" width="50 px" style="background:Lavender; color:Black"|3
 +
! align="center" width="50 px" style="background:Lavender; color:Black"|4
 +
|-
 +
!style="background:Lavender |0||a||b||c||ç||d
 +
|-
 +
!style="background:Lavender |1||e||f||g||h||i
 +
|-
 +
!style="background:Lavender |2||j||k||l||m||n
 +
|-
 +
!style="background:Lavender |3||o||p||q||r
 +
|-
 +
!style="background:Lavender |4||s||t||u||v
 +
|-
 +
!style="background:Lavender |5||w||x||y||z
 +
|}
  
 +
'''Compte! No és una matriu quadrada'''.
  
<source lang="java">
+
Per exemple si la frase és:
package provatcted;
 
  
import java.util.Scanner;
+
'''Sempre es massa d’hora per rendir-se'''
  
 +
La frase codificada quedaria com:
  
public class ex4 {
+
'''401023313310 1040 2300404000 04’13303300 311033 331024401433-4010'''
    public static void main(String[] args) {
 
       
 
        Scanner teclat = new Scanner(System.in);
 
        int idxc1, idxc2;
 
       
 
        System.out.println("Introdueix una frase: ");
 
        String frase=teclat.nextLine();
 
        String paraulesFrase[] = frase.split(" ");
 
        System.out.print("Introdueix un caràcter: ");
 
        char car1 =teclat.next().charAt(0);
 
        System.out.print("Introdueix un segon caràcter: ");
 
        char car2 =teclat.next().charAt(0);
 
     
 
        for (int i = 0; i < paraulesFrase.length; i++) {
 
            idxc1 = paraulesFrase[i].indexOf(car1);
 
            idxc2 = paraulesFrase[i].lastIndexOf(car2);
 
            if (idxc1!=-1 && idxc2!=-1){
 
                System.out.print(paraulesFrase[i].substring(idxc1, idxc2+1)+ " ");
 
            }
 
        }
 
       
 
 
 
    }
 
}
 
</source>
 
<!---->
 
  
5. Ompliu un vector de 1000 posicions amb números enters del 1 al 9 generats de forma aleatòria i a continuació mostreu la seqüència més llarga de números imparells seguits.
+
5. Ompliu un vector de 10000 posicions amb números enters del 1 al 9 generats de forma aleatòria i '''a continuació''' indiqueu '''quantes seqüències''' de 3 o més números seguits repetits s’han produït.
<pre>                                   
+
:'''2punts'''
import java.util.Random;
 
...
 
Random rand = new Random();
 
  
int rand_int = rand.nextInt(10)+1;
+
Exemples de seqüències:
 +
<pre>
 +
7 7 7 és una seqüència.
 +
8 8 8 8 és una seqüència
 +
3 3 3 3 3 3 és una seqüència
 
</pre>
 
</pre>
  
 
+
Nota: per generar els nombres entre 0 i 10 pots fer:
 
<source lang="java">
 
<source lang="java">
package provatctd;
 
 
 
import java.util.Random;
 
import java.util.Random;
 +
...
 +
Random rand = new Random();
  
public class Ex6 {
+
int rand_int = rand.nextInt(10)+1;
 
 
    public static void main(String[] args) {
 
 
 
        int MIDATAULA = 1000;
 
        Random rand = new Random();
 
        int taulaEnters[] = new int[MIDATAULA];
 
 
 
        for (int i = 0; i < MIDATAULA; i++) {
 
            taulaEnters[i] = rand.nextInt(10) + 1;
 
        }
 
 
 
        int idxSeqMesLlarga = 0, contSeqMesLlarga = 0, idxSeqActual = -1, contSeqActual = 0;
 
 
 
        for (int i = 0; i < MIDATAULA; i++) {
 
            if (taulaEnters[i] % 2 == 0) {
 
 
 
                if (contSeqActual > contSeqMesLlarga) {
 
                    contSeqMesLlarga = contSeqActual;
 
                    idxSeqMesLlarga = idxSeqActual;
 
                }
 
                idxSeqActual = -1;
 
                contSeqActual = 0;
 
 
 
            } else {
 
                contSeqActual++;
 
                if (idxSeqActual == -1) {
 
                    idxSeqActual = i;
 
                }
 
            }
 
        }
 
 
 
        System.out.println("Seqüència d'imparells més llarga:");
 
        for (int i = idxSeqMesLlarga; i < idxSeqMesLlarga + contSeqMesLlarga; i++) {
 
            System.out.print(taulaEnters[i] + " ");
 
        }
 
    }
 
}
 
 
</source>
 
</source>
<!---->
 

Revisió de 17:35, 27 maig 2021

Prova 2

1. Ompliu una matriu de dimensió M*N i un vector de dimensió M amb els dígits 0 o 1 generats aleatòriament. I indiqueu quantes columnes de la matriu tenen el mateix número de 0’s que el vector.

2 PUNTS
Ex. M=4 i N=5

  Matriu                                      Vector
  1    0    1    0   0                         0    0    1   0 
  0    0    1    1   0                                           
  0    1    0    0   1                                         
  0    0    1    1   0                                            

La matriu té 3 columnes amb el mateix número de 0’s que el vector.

2. Donades dues taules ja declarades per codi que contenen String diferents dins la mateixa taula, crea una tercera taula que contingui els valors que surten a les dues taules. Finalment imprimeix aquesta tercera taula.

2 PUNTS

Per exemple si tenim:

String[] taula1= {"Python", "JAVA", "PHP", "C#", "C++", "SQL"};
String[] taula2= {"MySQL", "SQL", "SQLite", "Oracle", "PostgreSQL", "DB2", "JAVA"};

Solució:
String[] taula3= {"JAVA", "SQL"};
Imprimirà: JAVA, SQL.

3. A partir d’una frase introduïda per teclat creeu una taula que contingui les seves paraules, quantes vocals tenen i quantes consonants. Les paraules repetides no es tindran en compte, . A continuació, mostreu el contingut de la taula.

2 PUNTS

Per exemple si la frase és:

Oblidaran el que vas fer i oblidaran el que vas dir pero mai oblidaran el que els vas fer sentir

El contingut de la taula seria:

oblidaran el que vas fer i dir pero mai els sentir
4 1 2 1 1 1 1 2 2 1 2
5 1 1 2 2 0 2 2 1 2 4
  • Per veure si un caràcter és una vocal, el podeu cercar a String vocals="aeiou"

4. Donada una frase i la següent matriu de caràcters, codifiqueu una frase introduïda per teclat, substituint cada caràcter per les coordenades (fila, columna) que li corresponen segons la matriu de codificació. Finalment mostreu la frase codificada.

2punts

Matriu de codificació:

0 1 2 3 4
0 a b c ç d
1 e f g h i
2 j k l m n
3 o p q r
4 s t u v
5 w x y z

Compte! No és una matriu quadrada.

Per exemple si la frase és:

Sempre es massa d’hora per rendir-se

La frase codificada quedaria com:

401023313310 1040 2300404000 04’13303300 311033 331024401433-4010

5. Ompliu un vector de 10000 posicions amb números enters del 1 al 9 generats de forma aleatòria i a continuació indiqueu quantes seqüències de 3 o més números seguits repetits s’han produït.

2punts

Exemples de seqüències:

7 7 7 és una seqüència.
8 8 8 8 és una seqüència 
3 3 3 3 3 3 és una seqüència

Nota: per generar els nombres entre 0 i 10 pots fer:

import java.util.Random;
...
Random rand = new Random(); 

int rand_int = rand.nextInt(10)+1;