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

De wikiserver
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

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Í!

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


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


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;

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.

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.

                                                                                              			    
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
import java.util.Random;
...
Random rand = new Random(); 

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

Prova 3

1. Ruleta: feu una simulació de les jugades que es poden produir en una ruleta francesa durant set dies. En concret, simuleu que s’han fet:

   • dilluns i dimecres: 1010 jugades.
   • dimarts i dissabte: 1100 jugades.
   • dijous, divendres i diumenge: 1050 jugades.   

La ruleta francesa consta dels següents números:

- 0 
- Vermells: 1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36
- Negres: 2, 4, 6, 8, 10, 11, 13, 15, 17, 20, 22, 24, 26, 28, 29, 31, 33, 35

Es demana:

a) Defineix una matriu per recollir exactament el número de jugades que s’han fet cada dia.

b) Ompliu la matriu generant números aleatoris vàlids.

c) Definiu una classe que permeti emmagatzemar el número de jugades, quants vermells han sortit, quants negres, quants parells, quants senars, quants «falta» (números del 1 al 18), i quants «passa» (números del 19 al 36).

  • El número 0 no és ni vermell, ni negre, ni parell ni senar, ni «falta», ni «passa».

d) Recolliu en un vector de dimensió adequada els resultats obtinguts en la simulació: vermells, negres, parells, senars, «falta» i «passa» per a cada dia.

e) Indiqueu quin és el màxim de números vermells seguits que s’han produït en un dia i en quin dia ha estat.

2. Tenim una vector amb diferents frases. Una frase en cada posició del vector.

En concret, es demana el següent:

a) Indicar quina és la frase que te més paraules.

b) Indicar quina és la frase que te més lletres (no considereu els espais en blanc).

c) Indicar quina és la paraula de tres lletres que surt més vegades en tot el vector de frases.

d) Mostreu totes les paraules del vector que tenen com a mínim 3 vocals diferents.

Prova 4

1. Resoleu els següents apartats a partir d’una matriu de enters M*N (M i N parells).

a) Ompliu la matriu amb números generats aleatòriament en el rang 0 : N-1. Mostreu la matriu.

import java.util.Random;                    
...
Random rand = new Random(); 
int rand_int = rand.nextInt(N);

 Exemple M=4 i N=6

 3  4  2  5  4  1  
 0  2  3  4  3  4
 1  2  2  5  0  5
 1  2  5  0  3  4

b) Canvieu el contingut de les files parells, pel de les files imparells (fila 0 per fila 1 i fila 1 per fila 0, fila 2 per fila 3 i fila 3 per fila 2, ...). Mostreu el resultat. A continuació feu el mateix per a les columnes (columna 0 per columna 1 i columna 1 per columna 0, columna 2 per columna 3 i columna 3 per columna 2, ...).

Exemple 

Canvi en les files:                                  Canvi en les columnes:

0  2  3  4  3  4                                     2  0  4  3  4  3
3  4  2  5  4  1                                     4  3  5  2  1  4
1  2  5  0  3  4                                     2  1  0  5  4  3
1  2  2  5  0  5                                     2  1  5  2  5  0  

c) Per a cada fila, mostreu els números del rang que no han sortit:

Fila 0: 1 , 5
Fila 1: 0
Fila 2: Han sortit tots
Fila 3: 3 , 4

d) Definiu una classe que permeti recollir per a cada fila el número que més es repeteix a cada fila (en cas d’empat el que ha fet les repeticions primer), i les aparicions de cada número en la fila (un vector d’enters). Definiu un vector de dimensió adequada per recollir les dades de la matriu. Mostreu el resultat.

2. Tenim una vector amb diferents frases. Una frase en cada posició del vector.

En concret, es demana el següent:

a) Mostreu la paraula amb més vocals (String vocals="aeiou").

b) Mostreu totes les paraules acabades en vocal.

c) Recolliu en un vector totes les paraules diferents de la primera frase que apareixen en altres frases, indicant quantes vegades apareixen i en quantes frases (si una paraula està repetida en la primera frase només tracteu-la una vegada). Definiu una classe adient. Mostreu el resultat.

d) Codificació: substituïu totes aparicions de dues vocals seguides per un # (en cas de que hi hagi 3 vocals seguides només codifiqueu les dues primeres). Mostreu les frases codificades.

  • Per a l’apartat d, podeu utilitzar la següent matriu:
aa ae ai ao au
ea ee ei eo eu
ia ie ii io iu
oa oe oi oo ou
ua ue ui uo uu