M3 - Programació estructurada / Exercicis UF1: Proves T C TD

De wikiserver
La revisió el 20:32, 18 feb 2019 per Rsort (Discussió | contribucions) (Prova 2)
Dreceres ràpides: navegació, cerca

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"

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.

MEMBER
Column_Name 0 1 2 3 4 5
0 background: #f9f9f9; PK
1 NN,U NN NN
2 System Date
3 Number Char Char Char Char Char Date
4 10 25 25 100 30 15


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