M3 - Programació estructurada / Exercicis UF2: Exercicis mètodes
1. Escriu un programa que donat un vector numèric (de qualsevol mida) amb valors no negatius, permeti fer les següents opcions (cada opció serà un mètode):
- retornar el valor màxim del vector.
- retornar el valor mínim del vector.
2. Fes un mètode que donat un número passat com a paràmetre que representi el dia de la setmana retorni un String amb el nom d'aquest dia
package exercicismetodes;
import java.util.Scanner;
public class Ex2 {
public static void main(String[] args) {
int numDia=0;
boolean numCorrecte=false;
Scanner lector = new Scanner(System.in);
while (!numCorrecte) {
System.out.println("Introdueix el número de dia de la setmana: ");
if(lector.hasNextInt()){
numDia = lector.nextInt();
numCorrecte = (numDia >= 1 && numDia <= 7);
if (!numCorrecte) {
lector.nextLine();
System.out.println("No és un valor vàlid!");
}
}
else{
lector.nextLine();
System.out.println("No és un valor vàlid!");
}
}
String nomDia=diasetmana(numDia);
System.out.println("El dia de la setmana que correspon al número "+numDia+" és: "+nomDia);
}
public static String diasetmana(int dia){
String nomDia="";
switch (dia) {
case 1:
nomDia="Dilluns";
break;
case 2:
nomDia="Dimarts";
break;
case 3:
nomDia="Dimecres";
break;
case 4:
nomDia="Dijous";
break;
case 5:
nomDia="Divendres";
break;
case 6:
nomDia="Disabte";
break;
case 7:
nomDia="Diumenge";
break;
}
return nomDia;
}
}
3. Escriu un mètode que donada una taula de números passada com a paràmetre retorni una altra taula amb els valors invertits.
4. Escriu un mètode per realitzar l'exercici 13 dels "exercicis amb for". EL nombre de línies serà el paràmetre del mètode
5. Crea una classe caràcter que realitzi els 8 punts que es demanen a l’exercici 10 de cadenes. Ha d’haver-hi un mètode per a cada problema. En cap cas el mètode demanarà dades a l’usuari ni imprimirà res per consola. Tot s’ha de fer a través de paràmetres. Cal fer també un programa en un altre fitxer que mitjançant un menú permeti executar aquest mètodes.
6. Construir un Quadrat màgic. Un quadrat màgic és una matriu quadrada (mateix nombre de files que de columnes), amb un nombre senar de files i columnes on la suma dels elements de totes les seves files i les seves columnes i les dues diagonals val igual. En aquest quadrat no hi ha cap número repetit, i els números que hi ha d'haver han d'anar des de 1 fins a n 2 on n és el numero de files i columnes. Com construir-lo?
- El numero 1 el situarem en el quadrat superior al central (per exemple, per n=5, el quadrat central és (2,2) i el que està per sobre seu el (1,2).
- El següent número el situarem un quadrat a la dreta i un per sobre. Si un numero està a la posició (i,j), el següent el situarem en (i-1,j+1) .
- Si resulta que al fer el moviment sortim per la dreta, entendrem que automàticament entrarem per l'esquerra, és a dir, és com si la matriu estigués enganxada la part esquerra amb la part dreta. El mateix passa amb dalt i baix. Si sortim per dalt, entrem per baix.
- A més ens podem trobar que la posició on toca anar un número ja es troba ocupada. Llavors el que farem és tornar a la posició on estàvem i fer el moviment
que puja dos posicions (i-2, j ).Un exemple de quadrat màgic per a N=5 seria:
El programa tindrà les següents funcions:
- llegirDimensio: Li demanem a l’usuari que ens indiqui la mida N de la matriu. Si el valor és correcte, la funció el retorna.
- inicialitzarQuadrat: Simplement posem tots els valors a 0
- calculaPosicioInicial: Segons la dimensió, calculem la primera posició
- assignaValor: Posa un valor en una posició
- calcularNovaPosicio: Retorna els valors de fila i columna vàlids per a col·locar el proper valor.
- imprimirQuadrat: Treu per pantalla el quadrat màgic
Per a fer-ho primer crearem la classe posicio que simplement contindrà els valors de fila i columna i els mètodes per a poder accedir a aquests valors. El programa serà semblant a aquest:
dim=llegirDimensio();
inicialitzarQuadrat();
posicio=calculaPosicioInicial(dim);
limit=dim*dim;
for (valor=0;valor<limit;valor++){
assignaValor(posicio,valor);
posicio =calcularNovaPosicio( ) ;
}
imprimirQuadrat( )