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 2)
(Prova 2)
Línia 351: Línia 351:
 
El contingut de la taula seria:
 
El contingut de la taula seria:
 
</pre>
 
</pre>
 +
{|border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;"
 +
|-
 +
|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 buscar dins del String vocals="aeiou"'''
 
'''* Per veure si un caràcter és una vocal el podeu buscar dins del String vocals="aeiou"'''

Revisió del 16:22, 18 feb 2019

Prova 1

1. Transposar una matriu quadrada de N*N sense utilitzar una matriu auxiliar.

Ex. N=4

 Matriu Original                                     Matriu Transposada
 1   2   3   4                                           1  5   9  13 
 5   6   7   8                                           2  6  10  14
 9  10  11  12                                           3  7  11  15
13  14  15  16                                           4  8  12  16
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]);
            }
              
        }
    }
}


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.

Per exemple si tenim: 

String[] taula1= {"Python", "JAVA", "PHP", "HTML", "JavaScript","SQL"};

NO!

I si tenim:

String[] taula1= {"HTML",  "JAVA","JavaScript","PHP","Python", "SQL"};

SÍ!
package provatcted;

public class ex2 {
        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.");
        }
    }
}

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:

Oblidaran el que vas fer i oblidaran el que vas dir però mai oblidaran el que els vas fer sentir

El contingut de la taula seria:

Oblidaran el que vas fer
3 3 3 3 2

I si la frase és:

Abans que la sang de les teves venes retorni al mar i la pols dels teus ossos a la terra recorda que aquesta terra no et pertany sinó que ets tu qui pertany a aquesta terra

El contingut de la taula seria:

que la a terra aquesta pertany
3 3 2 3 2 2


package provatcted;

import java.util.Scanner;

public class ex3 {

    public static void main(String[] args) {
        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];
        
        int numParaules = 0;
        int paraulesTaula = 0;

        while (numParaules < textSeparat.length) {
            String paraula = textSeparat[numParaules];
            System.out.println("paraula: "+textSeparat[numParaules]);
            //Mirem si ja hem tractar la paraula
            boolean trobat = false;
            int index = 0;

            while (index < paraulesTaula && !trobat) {
                if (paraula.equalsIgnoreCase(taula[index].paraula)) {

                    trobat = true;
                } else {
                    index++;
                }

            }
            if (!trobat) { //busquem si apareix a la frase més vegades la paraula

                int segonaAparicio = numParaules + 1;
                boolean igualParaula = false;

                while (segonaAparicio < textSeparat.length && !igualParaula) {
                    if (paraula.equalsIgnoreCase(textSeparat[segonaAparicio])) {

                        igualParaula = true;
                    } else {
                        segonaAparicio++;
                    }
                }
                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++) {
            if (taula[j].numAparicio > 1) {
                System.out.println(taula[j].paraula + " numAparicio: " + taula[j].numAparicio);
            }

        }
    }

}

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) .

Per exemple si la frase és:

Quan creus que coneixes totes les respostes arriba l'univers i et canvia totes les preguntes

I els caràcters són : primer ‘e’ i segon ‘s’.

El resultat seria:

eus eixes es es espostes ers es es eguntes


package provatcted;

import java.util.Scanner;


public class ex4 {
    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)+ " ");
            }
        }
        
   
    }
}

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.

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

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


package provatctd;

import java.util.Random;

public class Ex6 {

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

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.

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 te  3 columnes amb el mateix número de 0’s que el vector.

2. Donat una taula de cadenes de caràcters. ordeneu-la alfabèticament, sense distingir entre minúscules i majúscules. A continuació, mostreu el contingut de la taula.

Taula desordenada: 

String[] taula1= {"Python", "JAVA", "php", "HTML", "JavaScript","SQL"};

Taula ordenada: 

String[] taula1= {"HTML",  "JAVA","JavaScript","php","Python", "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.

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 buscar dins del String vocals="aeiou"