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

De wikiserver
Dreceres ràpides: navegació, cerca
Línia 3: Línia 3:
 
1. Fes un programa que donades dues taules inicialitzades amb els valors {-3, 5, 1, -4, 8, 20, -9, 2, 11, -1}, posi a una tercera taula, per a cada posició, la suma dels elements de les altres taules.
 
1. Fes un programa que donades dues taules inicialitzades amb els valors {-3, 5, 1, -4, 8, 20, -9, 2, 11, -1}, posi a una tercera taula, per a cada posició, la suma dels elements de les altres taules.
  
<!--
+
<!---->
 
<source lang="java">
 
<source lang="java">
 
package taules;
 
package taules;
Línia 22: Línia 22:
 
}
 
}
 
</source>
 
</source>
-->
+
 
  
 
2. Fes un programa que donada una taula de números ja inicialitzada, la recorri amb un for i quan surti del for imprimeixi el valor més petit de la taula.
 
2. Fes un programa que donada una taula de números ja inicialitzada, la recorri amb un for i quan surti del for imprimeixi el valor més petit de la taula.
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package taules;
 
package taules;
Línia 46: Línia 46:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
3. Fes un programa que donada una taula de números ja inicialitzada, imprimeixi per pantalla els valors en ordre invers.
 
3. Fes un programa que donada una taula de números ja inicialitzada, imprimeixi per pantalla els valors en ordre invers.
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package taules;
 
package taules;
Línia 65: Línia 65:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
4. Fes un programa que faci una rotació cap a l’esquerra o cap a la dreta (segons ens indiqui l’usuari) de tots els elements del vector (en rotació esquerra l’element que està a la primera posició passarà a l’ultima i en rotació dreta l’element que està l’últim passarà a la primera posició).
 
4. Fes un programa que faci una rotació cap a l’esquerra o cap a la dreta (segons ens indiqui l’usuari) de tots els elements del vector (en rotació esquerra l’element que està a la primera posició passarà a l’ultima i en rotació dreta l’element que està l’últim passarà a la primera posició).
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package taules;
 
package taules;
Línia 107: Línia 107:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
5. Escriure un programa que, donat una taula de 10 enters (introduïts per codi), li doni la volta. Per exemple, si el vector original és: 0-1-2-3-4-5-6-7-8-9 acabi sent : 9-8-7-6-5-4-3-2-1-0. No s'ha de fer servir cap taula auxiliar.
 
5. Escriure un programa que, donat una taula de 10 enters (introduïts per codi), li doni la volta. Per exemple, si el vector original és: 0-1-2-3-4-5-6-7-8-9 acabi sent : 9-8-7-6-5-4-3-2-1-0. No s'ha de fer servir cap taula auxiliar.
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package taules;
 
package taules;
Línia 132: Línia 132:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
6. Fes un programa que, donat una taula de 10 enters ( introduïts per codi), generi un diagrama de barres que representi el seus valors. Les barres aniran
 
6. Fes un programa que, donat una taula de 10 enters ( introduïts per codi), generi un diagrama de barres que representi el seus valors. Les barres aniran
Línia 144: Línia 144:
 
</pre>
 
</pre>
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package taules;
 
package taules;
Línia 162: Línia 162:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
7. Fes un programa que llegeixi les temperatures mitjanes dels dotze mesos de l’any, les vagi guardant en una taula i al final calculi la temperatura mitjana de l’any.
 
7. Fes un programa que llegeixi les temperatures mitjanes dels dotze mesos de l’any, les vagi guardant en una taula i al final calculi la temperatura mitjana de l’any.
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
public class Ex7 {
 
public class Ex7 {
Línia 194: Línia 194:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
<!--
+
 
 
'''Si introdueixen un Double amb un "." el programa acabarà de forma abrupta, per evitar-ho utilitzem la funció hasNestDouble() i un bucle while...'''
 
'''Si introdueixen un Double amb un "." el programa acabarà de forma abrupta, per evitar-ho utilitzem la funció hasNestDouble() i un bucle while...'''
  
Línia 239: Línia 239:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
8. Modifica l’exercici anterior de forma que el programa tregui per pantalla al final, els mesos amb temperatura inferior a la mitjana anual.
 
8. Modifica l’exercici anterior de forma que el programa tregui per pantalla al final, els mesos amb temperatura inferior a la mitjana anual.
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package taules;
 
package taules;
Línia 293: Línia 293:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
9. Modifica l’exercici anterior de forma que el programa indiqui el mes amb la temperatura mínima i el mes amb la temperatura màxima.
 
9. Modifica l’exercici anterior de forma que el programa indiqui el mes amb la temperatura mínima i el mes amb la temperatura màxima.
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package taules;
 
package taules;
Línia 360: Línia 360:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
10. Fes un programa que llegeixi les notes obtingudes pels alumnes d’una assignatura. La introducció de dades finalitzarà amb la introducció de -1. El programa a continuació ha de treure per pantalla la nota mitjana del grup.
 
10. Fes un programa que llegeixi les notes obtingudes pels alumnes d’una assignatura. La introducció de dades finalitzarà amb la introducció de -1. El programa a continuació ha de treure per pantalla la nota mitjana del grup.
  
 
Considereu, utilitzant una constant, que el nombre màxim d’alumnes és 100.
 
Considereu, utilitzant una constant, que el nombre màxim d’alumnes és 100.
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package taules;
 
package taules;
Línia 408: Línia 408:
 
</source>
 
</source>
  
-->
+
<!---->
  
 
11. Fes un programa que llegint un número per teclat ens indiqui si aquest element està o no a la taula.
 
11. Fes un programa que llegint un número per teclat ens indiqui si aquest element està o no a la taula.
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package taules;
 
package taules;
Línia 443: Línia 443:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
12. Fes un programa que vagi llegint una seqüència de números naturals (entre 0 i 9) finalitzada amb el valor -1. El programa ha de dir quantes vegades apareix cada valor. Lògicament s’ha de fer servir una taula i no 10 variables comptador!!!!!!
 
12. Fes un programa que vagi llegint una seqüència de números naturals (entre 0 i 9) finalitzada amb el valor -1. El programa ha de dir quantes vegades apareix cada valor. Lògicament s’ha de fer servir una taula i no 10 variables comptador!!!!!!
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package taules;
 
package taules;
Línia 477: Línia 477:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
13. Fes una taula que emmagatzemi els 100 números primers més petits. Per a fer-ho la tàctica és que un nombre serà primer sinó es divisible per cap número primer més petit. Cal posar per codi, a la primera posició de la taula el valor 2. Imprimeix els valors.
 
13. Fes una taula que emmagatzemi els 100 números primers més petits. Per a fer-ho la tàctica és que un nombre serà primer sinó es divisible per cap número primer més petit. Cal posar per codi, a la primera posició de la taula el valor 2. Imprimeix els valors.
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package taules;
 
package taules;
Línia 515: Línia 515:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
==Matrius==
 
==Matrius==
Línia 521: Línia 521:
 
14. Fes un programa que sumi dos matrius quadrades (mateix nombre de files que de columnes) de mida de les mateixes mides. El resultat es guardarà en una altra matriu. Cal recordar que la suma de les matrius funciona de la següent forma : a la posició [x][y] de la matriu resultat se li assigna la suma de les posicions [x][y] de les dues matrius originals. És per això que la matriu resultat haurà de ser de les mateixes dimensions que les altres.
 
14. Fes un programa que sumi dos matrius quadrades (mateix nombre de files que de columnes) de mida de les mateixes mides. El resultat es guardarà en una altra matriu. Cal recordar que la suma de les matrius funciona de la següent forma : a la posició [x][y] de la matriu resultat se li assigna la suma de les posicions [x][y] de les dues matrius originals. És per això que la matriu resultat haurà de ser de les mateixes dimensions que les altres.
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package matrius;
 
package matrius;
Línia 552: Línia 552:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
15. Fes un programa que ens digui si dos matrius són exactament iguals, o sigui que per tot i,j, matriu1[i][j] = matriu2[i][j]
 
15. Fes un programa que ens digui si dos matrius són exactament iguals, o sigui que per tot i,j, matriu1[i][j] = matriu2[i][j]
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package matrius;
 
package matrius;
Línia 587: Línia 587:
 
</source>
 
</source>
  
-->
+
<!---->
  
 
16. Fes un programa que donada una matriu d’enters de 2 files i 3 columnes (amb els valors introduïts per codi), escrigui el valor màxim de cada una de les files.
 
16. Fes un programa que donada una matriu d’enters de 2 files i 3 columnes (amb els valors introduïts per codi), escrigui el valor màxim de cada una de les files.
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package matrius;
 
package matrius;
Línia 613: Línia 613:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
17. Fes un programa que donada una matriu d'enters de 5 files i 5 columnes (amb els valors entre 0 i 9 introduïts per codi), ens indiqui quants valors hi ha de cada número.
 
17. Fes un programa que donada una matriu d'enters de 5 files i 5 columnes (amb els valors entre 0 i 9 introduïts per codi), ens indiqui quants valors hi ha de cada número.
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package matrius;
 
package matrius;
Línia 639: Línia 639:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
18. Fes un programa que calculi el producte de dos matrius de 3 files i 3 columnes (amb els valors entre 0 i 9 introduïts per codi).
 
18. Fes un programa que calculi el producte de dos matrius de 3 files i 3 columnes (amb els valors entre 0 i 9 introduïts per codi).
  
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package matrius;
 
package matrius;
Línia 684: Línia 684:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
19. Fes un programa que calculi el producte de dos matrius: la primera de 2 files i 3 columnes i la segona de 3 files i 2 columnes (amb els valors entre 0 i 9 introduïts per codi).
 
19. Fes un programa que calculi el producte de dos matrius: la primera de 2 files i 3 columnes i la segona de 3 files i 2 columnes (amb els valors entre 0 i 9 introduïts per codi).
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package matrius;
 
package matrius;
Línia 729: Línia 729:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
20. Fes un programa que intercanvii els mínims d'un matriu amb els màxims d'una altra matriu.
 
20. Fes un programa que intercanvii els mínims d'un matriu amb els màxims d'una altra matriu.
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
class JavaMatrices1
 
class JavaMatrices1
Línia 854: Línia 854:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
  
 
21. Invertiu la diagonal d'una matriu quadrada.
 
21. Invertiu la diagonal d'una matriu quadrada.
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
class JavaMatrices2
 
class JavaMatrices2
Línia 918: Línia 918:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
  
 
22. Invertiu la diagonal secundaria d'una matriu quadrada.
 
22. Invertiu la diagonal secundaria d'una matriu quadrada.
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
package matrius;
 
package matrius;
Línia 950: Línia 950:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
class JavaMatrices3
 
class JavaMatrices3
Línia 1.010: Línia 1.010:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
  
Línia 1.031: Línia 1.031:
 
</pre>
 
</pre>
 
    
 
    
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
class JavaMatrices4
 
class JavaMatrices4
Línia 1.108: Línia 1.108:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
  
 
24. Fes un programa que intercanvii els elements de la primera columna d'una matriu pels de la d'última.
 
24. Fes un programa que intercanvii els elements de la primera columna d'una matriu pels de la d'última.
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
class JavaMatrices5
 
class JavaMatrices5
Línia 1.172: Línia 1.172:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
  
Línia 1.185: Línia 1.185:
 
    
 
    
  
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
class JavaMatrices6
 
class JavaMatrices6
Línia 1.258: Línia 1.258:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
==Matrius i vectors==
 
==Matrius i vectors==
Línia 1.264: Línia 1.264:
  
 
26. Donada una matriu de m*n i un vector de dimensió m. Fes un programa que ens indiqui quina columna de la matriu és igual al vector.
 
26. Donada una matriu de m*n i un vector de dimensió m. Fes un programa que ens indiqui quina columna de la matriu és igual al vector.
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
class JavaMatrisVector2
 
class JavaMatrisVector2
Línia 1.359: Línia 1.359:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
  
 
27. Donada una matriu m*n, emmagatzemeu en un vector de dimensió n la suma per columnes de la matriu
 
27. Donada una matriu m*n, emmagatzemeu en un vector de dimensió n la suma per columnes de la matriu
 
i en un vector de dimensió m la suma per files de la matriu.
 
i en un vector de dimensió m la suma per files de la matriu.
<!--
+
 
 
<source lang="java">
 
<source lang="java">
 
class JavaMatrisVector3
 
class JavaMatrisVector3
Línia 1.458: Línia 1.458:
 
}
 
}
 
</source>
 
</source>
-->
+
<!---->
  
 
==Vectors i generació de nombres aleatoris==
 
==Vectors i generació de nombres aleatoris==

Revisió del 17:32, 10 juny 2021

Vectors

1. Fes un programa que donades dues taules inicialitzades amb els valors {-3, 5, 1, -4, 8, 20, -9, 2, 11, -1}, posi a una tercera taula, per a cada posició, la suma dels elements de les altres taules.

package taules;

public class Ex1 {

    public static void main(String[] args) {
        int taulaA[] = {-3, 5, 1, -4, 8, 20, -9, 2, 11, -1};
        int taulaB[] = {-3, 5, 1, -4, 8, 20, -9, 2, 11, -1};
        int taulaC[] = new int[taulaA.length];
        for (int i = 0; i < taulaC.length; i++) {
            taulaC[i] = taulaA[i] + taulaB[i];
        }
        for (int i = 0; i < taulaC.length; i++) {
            System.out.println("taula["+i+"] = " + taula[i]);
        }
    }
}


2. Fes un programa que donada una taula de números ja inicialitzada, la recorri amb un for i quan surti del for imprimeixi el valor més petit de la taula.


package taules;

public class Ex2 {

    public static void main(String[] args) {
        int taula[] = {3, 6, 1, -12, 4, 33, -23, 9, 10};
        int minim = taula[0];
        for (int i = 1; i < taula.length; i++) {
            if (taula[i] < minim) {
                minim = taula[i];
            }

        }
        System.out.println("El valor mínim és: " + minim);
    }

}

3. Fes un programa que donada una taula de números ja inicialitzada, imprimeixi per pantalla els valors en ordre invers.


package taules;

public class Ex3 {
    public static void main(String[] args) {
         int taula[] = {3, 6, 1, -12, 4, 33, -23, 9, 10};
         System.out.print("Els valors en ordre invers són: ");
         for (int i =taula.length-1;i>=0;i--){
             System.out.print(taula[i]+" ");
         }
         System.out.println("");
    }
}

4. Fes un programa que faci una rotació cap a l’esquerra o cap a la dreta (segons ens indiqui l’usuari) de tots els elements del vector (en rotació esquerra l’element que està a la primera posició passarà a l’ultima i en rotació dreta l’element que està l’últim passarà a la primera posició).


package taules;

import java.util.Scanner;

public class Ex4 {
    public static void main(String[] args) {
        int taula[]={1,2,3,4,5,6,7,8,9};
        System.out.print("Introdueix el tipus de rotació(d-e): ");
        Scanner lector=new Scanner(System.in);
        char opcio=lector.next().charAt(0);
        if (opcio=='e'){
            int temp=taula[0];
            for (int i = 0; i < taula.length-1; i++) {
                taula[i]=taula[i+1];
                
            }
            taula[taula.length-1]=temp;
        }
        if (opcio=='d'){
            int temp=taula[taula.length-1];
            for (int i= taula.length-1;i>0; i--) {
                taula[i]=taula[i-1];
                
            }
            taula[0]=temp;
        }
        System.out.println("La taula resultant és:");
        for (int i = 0; i < taula.length; i++) {
            System.out.print( taula[i]+" ");
            
        }
        
    }
    
}

5. Escriure un programa que, donat una taula de 10 enters (introduïts per codi), li doni la volta. Per exemple, si el vector original és: 0-1-2-3-4-5-6-7-8-9 acabi sent : 9-8-7-6-5-4-3-2-1-0. No s'ha de fer servir cap taula auxiliar.

package taules;

public class Ex5 {
    public static void main(String[] args) {
        int taula[]={0,1,2,3,4,5,6,7,8,9};
        for (int i = 0; i < taula.length/2; i++) {
            int aux = taula[i];
            taula[i]=taula[taula.length-i-1];
            taula[taula.length-i-1]=aux;
            
        }
        System.out.println("La taula invertida és: ");
        for (int i = 0; i < taula.length; i++) {
            System.out.print(taula[i]+" ");
            
        }
    }
    
}

6. Fes un programa que, donat una taula de 10 enters ( introduïts per codi), generi un diagrama de barres que representi el seus valors. Les barres aniran d’esquerra a dreta i estaran formades per asteriscos. Per exemple, si els tres primers elements de la taula són 2-3-4, la part corresponent del diagrama de barres serà:

       **
       ***
       ****


package taules;

public class Ex6 {
    public static void main(String[] args) {
        int taula[]={4,2,3,7,4,8,6};
        for (int i = 0; i < taula.length; i++) {
            for (int j = 0; j < taula[i]; j++) {
                System.out.print("*");
                
            }
            System.out.println("");
            
        }
    }
}

7. Fes un programa que llegeixi les temperatures mitjanes dels dotze mesos de l’any, les vagi guardant en una taula i al final calculi la temperatura mitjana de l’any.

public class Ex7 {
        public static void main(String[] args) {
       
        final int MESOS = 12;    
        double temperatures[] = new double[MESOS];
        Scanner lector = new Scanner(System.in);
        System.out.println("Mitjana de les temperatures dels 12 mesos");
        double suma=0;
        double mitjana;
        for (int i=0; i<temperatures.length; i++){
            System.out.print("Introdueix la temperatura del mes "+(i+1)+": ");
            temperatures[i] = lector.nextDouble();
        }
        
        //Els valors que sobrin a la darrera línia escrita es descarten.
        lector.nextLine();
        //Calculem la suma de les temperatures
            for (double temp: temperatures) {
                suma += temp;
            }
        //Calculem la mitjana        
        mitjana= suma/MESOS;
        System.out.printf("La mitjana és de %.2f graus\n" ,mitjana);

    }
}

Si introdueixen un Double amb un "." el programa acabarà de forma abrupta, per evitar-ho utilitzem la funció hasNestDouble() i un bucle while...

package taules;

import java.util.Scanner;

public class Ex7 {
        public static void main(String[] args) {
       
        final int MESOS = 12;    
        double temperatures[] = new double[MESOS];
        Scanner lector = new Scanner(System.in);
        System.out.println("Mitjana de les temperatures dels 12 mesos");
        int numValorsLlegits = 0;
        double suma = 0;
        double mitjana;
        while (numValorsLlegits < MESOS) {
            System.out.print("Introdueix la temperatura del mes "+(numValorsLlegits +1)+": ");
            //Abans de llegir, comprovem si realment hi ha un enter.
            if (lector.hasNextDouble()) {
                double valor = lector.nextDouble();
                temperatures[numValorsLlegits] = valor;
                numValorsLlegits++;
            } else {
                //Si el valor no és enter, es llegeix però s’ignora.
                //No s’avança tampoc el comptador.
                lector.next();
            }
        }
        //Els valors que sobrin a la darrera línia escrita es descarten.
        lector.nextLine();
        //Calculem la suma de les temperatures
            for (double valor: temperatures) {
                suma += valor;
            }
        //Calculem la mitjana        
        mitjana=suma/MESOS;
        System.out.printf("La mitjana és de %.2f graus\n" ,mitjana);

    }
}

8. Modifica l’exercici anterior de forma que el programa tregui per pantalla al final, els mesos amb temperatura inferior a la mitjana anual.

package taules;

import java.util.Scanner;

public class Ex8 {

    public static void main(String[] args) {
        //Suposarem temperatures sense decimals
        String mesos[] = {"Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"};
        final int MESOS = 12;
        double temperatures[] = new double[MESOS];
        Scanner lector = new Scanner(System.in);
        System.out.println("Mitjana de les temperatures dels 12 mesos");
        int numValorsLlegits = 0;
        double suma = 0;
        double mitjana;
        while (numValorsLlegits < 12) {
            System.out.print("Introdueix la temperatura del mes "+mesos[numValorsLlegits]+": ");
            //Abans de llegir, comprovem si realment hi ha un enter.
            if (lector.hasNextDouble()) {
                double valor = lector.nextDouble();
                temperatures[numValorsLlegits] = valor;
                numValorsLlegits++;
            } else {
                //Si el valor no és enter, es llegeix però s’ignora.
                //No s’avança tampoc el comptador.
                lector.next();
            }
        }
        //Els valors que sobrin a la darrera línia escrita es descarten.

        lector.nextLine();
        //Calculem la suma de les temperatures
        for (double valor : temperatures) {
            suma += valor;
        }
        mitjana = suma / MESOS;
        System.out.printf("La mitjana és de %.2f graus\n", mitjana);
        System.out.print("Els mesos amb temperatura inferior a la mitjana són: ");
        for (int i = 0; i < temperatures.length; i++) {
            if (temperatures[i] < mitjana) {
                System.out.print(mesos[i] + " ");
            }
        }

        System.out.println("");
    }
}

9. Modifica l’exercici anterior de forma que el programa indiqui el mes amb la temperatura mínima i el mes amb la temperatura màxima.

package taules;

import java.util.Scanner;

public class Ex9 {

    public static void main(String[] args) {
        //Suposarem temperatures sense decimals
        String mesos[] = {"Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"};
        final int MESOS = 12;
        double temperatures[] = new double[MESOS];
        Scanner lector = new Scanner(System.in);
        System.out.println("Mesos amb temperatures màxima i mínima ");
        int numValorsLlegits = 0;
        double suma = 0;
        double mitjana;
        double minima = 100.0;
        double maxima = -100.0;
        String mesFred="";
        String mesCaluros="";
        while (numValorsLlegits < MESOS) {
            System.out.print("Introdueix la temperatura del mes "+(numValorsLlegits +1)+": ");
            //Abans de llegir, comprovem si realment hi ha un enter.
            if (lector.hasNextDouble()) {
                double valor = lector.nextDouble();
                temperatures[numValorsLlegits] = valor;
                numValorsLlegits++;
            } else {
                //Si el valor no és enter, es llegeix però s’ignora.
                //No s’avança tampoc el comptador.
                lector.next();
            }
        }
        //Els valors que sobrin a la darrera línia escrita es descarten.

        lector.nextLine();
        for (double valor : temperatures) {
            suma += valor;
        }
        mitjana = suma / MESOS;
        System.out.printf("La mitjana és de %.2f graus\n", mitjana);
        System.out.print("Els mesos amb temperatura inferior a la mitjana són: ");
        for (int i = 0; i < temperatures.length; i++) {
            if (temperatures[i] < mitjana) {
                System.out.print(mesos[i] + " ");
            }
            if (temperatures[i] < minima) {
                minima = temperatures[i];
                mesFred = mesos[i];
            }
            if (temperatures[i] > maxima) {
                maxima = temperatures[i];
                mesCaluros = mesos[i];
            }

        }

        System.out.println("");
        System.out.println("El mes més fresc ha estat: "+ mesFred+" i el més calurós: " + mesCaluros);
    }
}

10. Fes un programa que llegeixi les notes obtingudes pels alumnes d’una assignatura. La introducció de dades finalitzarà amb la introducció de -1. El programa a continuació ha de treure per pantalla la nota mitjana del grup.

Considereu, utilitzant una constant, que el nombre màxim d’alumnes és 100.

package taules;

import java.util.Scanner;

public class Ex10 {

    public static void main(String[] args) {
        final int MAXIM = 100;
        int notes[] = new int[MAXIM];
        int nota;
        int compta = 0;
        int suma = 0;
        double mitjana;
        Scanner lector = new Scanner(System.in);
        System.out.println("Introdueix les notes dels alumnes (-1 per finalitzar) : ");
        if (lector.hasNextInt()) {
            nota = lector.nextInt();

            while (nota != -1 && compta < MAXIM) {

                notes[compta] = nota;
                compta++;
                if (lector.hasNextInt()) {
                    nota = lector.nextInt();


                } else {
                    lector.next();
                }
            }
            for (int i = 0; i < compta; i++) {
               suma += notes[i];
            }
        }
        mitjana = suma / (double) compta;
        System.out.printf("La mitjana és : %.2f\n", mitjana);

    }
}


11. Fes un programa que llegint un número per teclat ens indiqui si aquest element està o no a la taula.


package taules;

import java.util.Scanner;

public class Ex11 {

    public static void main(String[] args) {
        int valors[]={2,4,5,1,8,9,24,33,12};
        int compt=0;
        boolean trobat=false;
        Scanner lector=new Scanner(System.in);
        System.out.println("Introdueix el nombre a buscar: ");
        int num=lector.nextInt();
        while(compt<valors.length&&!trobat){
            trobat=(valors[compt]==num);
            compt++;
        }
        if (trobat){
            System.out.println("El nombre és a la taula");
            
        }
        else{
            System.out.println("El nombre no és a la taula");
        }
        
    }
    
}

12. Fes un programa que vagi llegint una seqüència de números naturals (entre 0 i 9) finalitzada amb el valor -1. El programa ha de dir quantes vegades apareix cada valor. Lògicament s’ha de fer servir una taula i no 10 variables comptador!!!!!!


package taules;

import java.util.Scanner;

public class Ex12 {

    public static void main(String[] args) {
        int comptadors[]=new int [10];
        Scanner lector=new Scanner(System.in);
        System.out.println("Introdueix valors entre 0 i 9 ( per finalitzar -1): ");
        int valor=0;
        while(valor!=-1){
            if (lector.hasNextInt()){
                valor=lector.nextInt();
                if(valor>=0 && valor<10){
                    comptadors[valor]++;
                }
            }
        }
        for (int i = 0; i < comptadors.length; i++) {
            System.out.println("El número "+i+" ha sortit "+comptadors[i]+ " cops");
            
        }
        
    }
    
}

13. Fes una taula que emmagatzemi els 100 números primers més petits. Per a fer-ho la tàctica és que un nombre serà primer sinó es divisible per cap número primer més petit. Cal posar per codi, a la primera posició de la taula el valor 2. Imprimeix els valors.


package taules;

public class Ex13 {

    public static void main(String[] args) {
        int primers[] = new int[100];
        primers[0] = 2;
        int quants = 1;
        int numero = 3;
        while (quants < 100) {
            int i = 0;
            while (i < quants && numero % primers[i] != 0) {
                i++;
            }
            if (i == quants) {
                primers[quants] = numero;
                quants++;
            }
            numero++;
        }
        for (int i = 0; i < primers.length; i++) {
            if (i % 10 == 9) {
                System.out.println(primers[i]);
            } else {
                System.out.print(primers[i] + "-");
            }

        }
    }

}

Matrius

14. Fes un programa que sumi dos matrius quadrades (mateix nombre de files que de columnes) de mida de les mateixes mides. El resultat es guardarà en una altra matriu. Cal recordar que la suma de les matrius funciona de la següent forma : a la posició [x][y] de la matriu resultat se li assigna la suma de les posicions [x][y] de les dues matrius originals. És per això que la matriu resultat haurà de ser de les mateixes dimensions que les altres.


package matrius;

public class Ex14 {
    public static void main(String[] args) {
        
    
    int matA[][]={{1,2,3},{4,5,6}};
    int matB[][]={{11,12,13},{14,15,16}};
    int matC[][]=new int[matA.length][matA.length];
        for (int i = 0; i < matC.length; i++) {
            for (int j = 0; j < matC.length; j++) {
                 matC[i][j]=matA[i][j]+matB[i][j];
                
            }
            
        }
        System.out.println("La matriu resultat és:");
        for (int i = 0; i < matC.length; i++) {
            for (int j = 0; j < matC.length; j++) {
                System.out.print( matC[i][j]+"  ");
                
            }
            System.out.println("");
            
        }
    
    }
}

15. Fes un programa que ens digui si dos matrius són exactament iguals, o sigui que per tot i,j, matriu1[i][j] = matriu2[i][j]

package matrius;

public class Ex15 {
    public static void main(String[] args) {
    int matA[][]={{1,2,3},{4,5,6}};
    int matB[][]={{1,2,3},{4,5,6}};
    boolean iguals=true;
    int i=0,j;
        while (iguals&&i<matA.length) {
            j=0;
            while (iguals&&j<matA[i].length) {
                iguals=(matA[i][j]==matB[i][j]);
                j++;
                
            }
            i++;
            
        }
        if(iguals){
            System.out.println("Les matrius són iguals");
            
        }
        else{
            System.out.println("Les matrius no són iguals");
        }
    }
    
}


16. Fes un programa que donada una matriu d’enters de 2 files i 3 columnes (amb els valors introduïts per codi), escrigui el valor màxim de cada una de les files.


package matrius;

public class Ex16 {
    public static void main(String[] args) {
         int matriu[][]={{1,2,13},{44,5,6}};
         for (int i = 0; i < matriu.length; i++) {
             int max=Integer.MIN_VALUE;
             for (int j = 0; j < matriu[i].length; j++) {
                 if(max< matriu[i][j]){
                     max=matriu[i][j];
                 }
                 
             }
             System.out.println("El valor máxim de la fila " + i + " és: "+ max);
            
        }
    }
    
}

17. Fes un programa que donada una matriu d'enters de 5 files i 5 columnes (amb els valors entre 0 i 9 introduïts per codi), ens indiqui quants valors hi ha de cada número.

package matrius;

public class Ex17 {

    public static void main(String[] args) {
        int matriu[][] = {{1, 2, 1}, {2, 5, 6}, {2, 4, 7}, {4, 8, 2}};
        int numsMatriu[] = new int[10];
        for (int i = 0; i < matriu.length; i++) {
            for (int j = 0; j < matriu[i].length; j++) {
                numsMatriu[matriu[i][j]]++;
            }

        }
        for (int i = 0; i < numsMatriu.length; i++) {
            System.out.println("Hi ha de "+i+": "+numsMatriu[i]);
            
        }

    }
}

18. Fes un programa que calculi el producte de dos matrius de 3 files i 3 columnes (amb els valors entre 0 i 9 introduïts per codi).


package matrius;

public class Ex18 {

    public static void main(String[] args) {
        int matriu1[][] = {
        {1, 2, 1},
        {2, 5, 6},
        {2, 4, 7}};
        int matriu2[][] = {
        {2, 3, 1},
        {1, 3, 2},
        {2, 1, 3}};
        int matriu3[][] = new int[matriu1.length][matriu1.length];

        for (int i = 0; i < matriu1.length; i++) {

            for (int j = 0; j < matriu1.length; j++) {

                for (int k = 0; k < matriu3.length; k++) {
                    matriu3[i][j] += matriu1[i][k] * matriu2[k][j];

                }

            }
        }

        for (int i = 0; i < matriu3.length; i++) {
            for (int j = 0; j < matriu3.length; j++) {
                System.out.printf("%2d ", matriu3[i][j]);
            }
            System.out.println("");

        }

    }
}

19. Fes un programa que calculi el producte de dos matrius: la primera de 2 files i 3 columnes i la segona de 3 files i 2 columnes (amb els valors entre 0 i 9 introduïts per codi).


package matrius;

/**
 *
 * @author Ramon Sort
 */
public class Ex19 {

    public static void main(String[] args) {
        int matriu1[][] = {
        {1, 2, 1},
        {3, 4, 1}};
        int matriu2[][] = {
        {2, 3},
        {2, 1},
        {3, 1}};
        int matriu3[][] = new int[matriu1.length][matriu2[0].length];

        for (int i = 0; i < matriu1.length; i++) {
            for (int j = 0; j < matriu2[0].length; j++) {
                for (int k = 0; k < matriu1[0].length; k++) {
                    matriu3[i][j] += matriu1[i][k] * matriu2[k][j];
                }

            }

        }

        for (int i = 0; i < matriu3.length; i++) {
            for (int j = 0; j < matriu3[i].length; j++) {
                System.out.printf("%2d ", matriu3[i][j]);
            }
            System.out.println("");

        }

    }
}

20. Fes un programa que intercanvii els mínims d'un matriu amb els màxims d'una altra matriu.

class JavaMatrices1
{
    void llenar (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("Inserte pos[" + i + "][" + j + "]: ");
		M [i] [j] = Leer.datoInt ();
	    }
	}
    }


    void mostrar (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    System.out.println ();
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("[" + M [i] [j] + "]");
	    }
	}
    }


    int menor (int M [] [], int f, int c)
    {
	int men = M [1] [1];
	for (int i = 1 ; i <= f ; i++)
	{
	    for (int j = 1 ; j <= c ; j++)
	    {
		if (M [i] [j] < men)
		    men = M [i] [j];
	    }
	}
	return (men);
    }


    int maximo (int M [] [], int f, int c)
    {
	int max = M [1] [1];
	for (int i = 1 ; i <= f ; i++)
	{
	    for (int j = 1 ; j <= c ; j++)
	    {
		if (M [i] [j] < max)
		    max = M [i] [j];
	    }
	}
	return (max);
    }



    void intercambiar (int A [] [], int fa, int ca, int B [] [], int fb, int cb)
    {
	int min_a = menor (A, fa, ca);
	int max_b = maximo (B, fb, cb);

	//para cambiar los minimos de A con los maximos de B
	for (int i = 1 ; i <= fa ; i++)
	{
	    for (int j = 1 ; j <= ca ; j++)
	    {
		if (A [i] [j] == min_a)
		    A [i] [j] = max_b;
	    }
	}

	//para intercambiar los maximos de con los minimos de A
	for (int i = 1 ; i <= fb ; i++)
	{
	    for (int j = 1 ; j <= cb ; j++)
	    {
		if (B [i] [j] == max_b)
		    B [i] [j] = min_a;
	    }
	}
    }


    public static void main (String args [])
    {
	JavaMatrices1 h = new JavaMatrices1 ();
	int A [] [] = new int [20] [20];
	int B [] [] = new int [20] [20];
	System.out.print ("Insert filas de A: ");
	int fa = Leer.datoInt ();
	System.out.print ("Insert columnas de A: ");
	int ca = Leer.datoInt ();
	System.out.print ("Insert filas de B: ");
	int fb = Leer.datoInt ();
	System.out.print ("Insert columnas de B: ");
	int cb = Leer.datoInt ();

	//lectura de matrices
	System.out.println ("\nINSERTANDO DATOS EN MATRIS A: \n");
	h.llenar (A, fa, ca);
	System.out.println ("\nINSERTANDO DATOS EN MATRIS B: \n");
	h.llenar (B, fb, cb);
	System.out.println ("\nMATRICES ORIGINALMENTE INSERTADAS: ");
	h.mostrar (A, fa, ca);
	System.out.println ();
	h.mostrar (B, fb, cb);
	System.out.println ();

	//intercambiando elementos
	h.intercambiar (A, fa, ca, B, fb, cb);
	System.out.println ("\nMATRICES DESPUES DEL INTERCAMBIO:");
	h.mostrar (A, fa, ca);
	System.out.println ();
	h.mostrar (B, fb, cb);
    }
}


21. Invertiu la diagonal d'una matriu quadrada.


class JavaMatrices2
{
    void llenar (int M [] [], int d)
    {
	for (int i = 1 ; i <= d ; i++)
	{
	    for (int j = 1 ; j <= d ; j++)
	    {
		System.out.print ("Inserte pos[" + i + "][" + j + "]: ");
		M [i] [j] = Leer.datoInt ();
	    }
	}
    }


    void mostrar (int M [] [], int d)
    {
	for (int i = 1 ; i <= d ; i++)
	{
	    System.out.println ();
	    for (int j = 1 ; j <= d ; j++)
	    {
		System.out.print ("[" + M [i] [j] + "]");
	    }
	}
    }


    void invierte (int M [] [], int d)
    {
	int fin = d;
	for (int i = 1 ; i <= d / 2 ; i++)
	{
	    int aux = M [i] [i];
	    M [i] [i] = M [d] [d];
	    M [d] [d] = aux;
	    fin--;
	}
    }



    public static void main (String args [])
    {
	JavaMatrices2 h = new JavaMatrices2 ();
	int M [] [] = new int [20] [20];
	System.out.print ("Inserte dimen. de la matris cuadrada: ");
	int d = Leer.datoInt ();
	h.llenar (M, d);
	System.out.print ("\nMATRIS ORIGINAL: ");
	h.mostrar (M, d);
	System.out.print ("\n\nMATRIS CON LA DIAGONAL PRINCIPAL INVERTIDA: ");
	h.invierte (M, d);
	h.mostrar (M, d);
    }
}


22. Invertiu la diagonal secundaria d'una matriu quadrada.

package matrius;

public class Ex22 {

    public static void main(String[] args) {
        int matriu[][] = {{0, 0, 0, 0, 1},
        {0, 0, 0, 2, 0},
        {0, 0, 3, 0, 0},
        {0, 4, 0, 0, 0},
        {5, 0, 0, 0, 0}};

        for (int i = 0; i < matriu.length / 2; i++) {
            int aux = matriu[i][matriu.length - i - 1];
            matriu[i][matriu.length - i - 1] = matriu[matriu.length - i - 1][i];
            matriu[matriu.length - i - 1][i] = aux;

        }
        for (int i = 0; i < matriu.length; i++) {
            for (int j = 0; j < matriu.length; j++) {
                System.out.print(" " + matriu[i][j]);
            }
            System.out.println("");
        }
    }
}
class JavaMatrices3
{
    void llenar (int M [] [], int d)
    {
	for (int i = 1 ; i <= d ; i++)
	{
	    for (int j = 1 ; j <= d ; j++)
	    {
		System.out.print ("Inserte pos[" + i + "][" + j + "]: ");
		M [i] [j] = Leer.datoInt ();
	    }
	}
    }


    void mostrar (int M [] [], int d)
    {
	for (int i = 1 ; i <= d ; i++)
	{
	    System.out.println ();
	    for (int j = 1 ; j <= d ; j++)
	    {
		System.out.print ("[" + M [i] [j] + "]");
	    }
	}
    }


    void invierte (int M [] [], int d)
    {
	int fin = d;
	for (int i = 1 ; i <= d / 2 ; i++)
	{
	    int aux = M [i] [d];
	    M [i] [d] = M [d] [i];
	    M [d] [i] = aux;
	    fin--;
	}
    }



    public static void main (String args [])
    {
	JavaMatrices3 h = new JavaMatrices3 ();
	int M [] [] = new int [20] [20];
	System.out.print ("Inserte dimen. de la matris cuadrada: ");
	int d = Leer.datoInt ();
	h.llenar (M, d);
	System.out.print ("\nMATRIS ORIGINAL: ");
	h.mostrar (M, d);
	System.out.print ("\n\nMATRIS CON LA DIAGONAL SECUNDARIA INVERTIDA: ");
	h.invierte (M, d);
	h.mostrar (M, d);
    }
}


23. Fes un programa que ens digui quins son els elements comuns de dues matrius de diferent dimensió. Indica el valor i les posicions de la primera i de la segona matriu.

Per exemple:

- matriu A:      - matriu B
  3  1  2  7       3  5
  5  7  9  1       7  9
  8  2  5  4       4  8
                   2  7

Sortida:

A: 3 [0,0]  -  B: [0,0]
A: 2 [0,2]  -  B: [3,0]
A: 7 [0,3]  -  B: [1,0] [3,1] 
...


class JavaMatrices4
{
    void llenar (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("Inserte pos[" + i + "][" + j + "]: ");
		M [i] [j] = Leer.datoInt ();
	    }
	}
    }


    void mostrar (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    System.out.println ();
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("[" + M [i] [j] + "]");
	    }
	}
    }


    void comunes (int R [] [], int fr, int cr, int S [] [], int fs, int cs)
    {
	System.out.print ("\n\nLos elementos comunes de R en S son: ");
	for (int i = 1 ; i <= fr ; i++)
	{
	    for (int j = 1 ; j <= cr ; j++)
	    {
		for (int k = 1 ; k <= fs ; k++)
		{
		    for (int l = 1 ; l <= cs ; l++)
		    {
			if (R [i] [j] == S [k] [l])
			    System.out.print ("[" + R [i] [j] + "]");
		    }
		}
	    }
	}
    }



    public static void main (String args [])
    {
	JavaMatrices4 h = new JavaMatrices4 ();
	int R [] [] = new int [20] [20];
	int S [] [] = new int [20] [20];
	System.out.print ("Inserte filas de R: ");
	int fr = Leer.datoInt ();
	System.out.print ("Inserte columnas de R: ");
	int cr = Leer.datoInt ();
	System.out.print ("Inserte filas de S: ");
	int fs = Leer.datoInt ();
	System.out.print ("Inserte columnas de S: ");
	int cs = Leer.datoInt ();

	System.out.print ("\nLLENANDO MATRIS R: \n");
	h.llenar (R, fr, cr);
	System.out.print ("\nLLENANDO MATRIS S: \n");
	h.llenar (S, fs, cs);
	System.out.print ("\nLA MATRICES R : ");
	h.mostrar (R, fr, cr);
	System.out.print ("\nLA MATRICES S : ");
	h.mostrar (S, fs, cs);
	h.comunes (R, fr, cr, S, fs, cs);
    }
}


24. Fes un programa que intercanvii els elements de la primera columna d'una matriu pels de la d'última.

class JavaMatrices5
{
    void llenar (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("Inserte pos[" + i + "][" + j + "]: ");
		M [i] [j] = Leer.datoInt ();
	    }
	}
    }


    void mostrar (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    System.out.println ();
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("[" + M [i] [j] + "]");
	    }
	}
    }


    void intercambiar (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    int aux = M [i] [1];
	    M [i] [1] = M [i] [c];
	    M [i] [c] = aux;
	}
    }


    public static void main (String args [])
    {
	JavaMatrices5 h = new JavaMatrices5 ();
	int M [] [] = new int [20] [20];
	System.out.print ("Inserte filas de la matris: ");
	int f = Leer.datoInt ();
	System.out.print ("Inserte columnas de la matris: ");
	int c = Leer.datoInt ();

	System.out.print ("\nLLENANDO MATRIS : \n");
	h.llenar (M, f, c);
	System.out.print ("\nLA MATRIS ORIGINAL : ");
	h.mostrar (M, f, c);
	System.out.print ("\n\nLA MATRICES INTERCAMBIADA : ");
	h.intercambiar (M, f, c);
	h.mostrar (M, f, c);
    }
}


25. Fes un programa que a partir d'una matriu crei un altre matriu de la mateixa dimensió amb el nombre de dígits de la primera. Per exemple:

- matriu A:                 - matriu B
    323  2503  14254          3  4  5  
     58     7     19          2  1  2
  15148    25      4          5  2  1


class JavaMatrices6
{
    void llenar (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("Inserte pos[" + i + "][" + j + "]: ");
		M [i] [j] = Leer.datoInt ();
	    }
	}
    }


    void mostrar (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    System.out.println ();
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("[" + M [i] [j] + "]");
	    }
	}

    }


    void cuenta (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("\n[" + M [i] [j] + "] tiene: " + digitos (M [i] [j]) + " digito(s)");
	    }
	}
    }


    int digitos (int n)
    {
	int contador = 0;
	while (n != 0)
	{
	    n = n / 10;
	    contador++;
	}
	return (contador);
    }


    public static void main (String args [])
    {
	JavaMatrices6 h = new JavaMatrices6 ();
	int M [] [] = new int [20] [20];
	System.out.print ("Inserte filas de la matris: ");
	int f = Leer.datoInt ();
	System.out.print ("Inserte columnas de la matris: ");
	int c = Leer.datoInt ();

	System.out.print ("\nLLENANDO MATRIS M: \n");
	h.llenar (M, f, c);
	System.out.print ("\nLA MATRIS: ");
	h.mostrar (M, f, c);
	System.out.print ("\n\nCONTEO DE DIGITOS: ");
	h.cuenta (M, f, c);
    }
}

Matrius i vectors

26. Donada una matriu de m*n i un vector de dimensió m. Fes un programa que ens indiqui quina columna de la matriu és igual al vector.

class JavaMatrisVector2
{
    void llenarMatris (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("Inserte pos[" + i + "][" + j + "]: ");
		M [i] [j] = Leer.datoInt ();
	    }
	}
    }


    void mostrarMatris (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    System.out.println ();
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("[" + M [i] [j] + "]");
	    }
	}
    }


    void llenarVector (int V [], int d)
    {
	for (int i = 1 ; i <= d ; i++)
	{
	    System.out.print ("Inserte pos.[" + i + "]: ");
	    V [i] = Leer.datoInt ();
	}
    }


    void mostrarVector (int V [], int d)
    {
	for (int i = 1 ; i <= d ; i++)
	{
	    System.out.print ("[" + V [i] + "]");
	}
    }


    void procedure (int M [] [], int f, int c, int V [], int d)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    int sw = 1;
	    for (int j = 1 ; j <= c ; j++)
	    {

		for (int k = 1 ; k <= d ; k++)
		{
		    if (M [j] [i] != V [k])
			sw = 0;
		}
	    }
	    if (sw == 1)
		System.out.println ("\n\nLa columna " + i + " es igual al vector");
	}
    }



    public static void main (String args [])
    {
	JavaMatrisVector2 h = new JavaMatrisVector2 ();
	int M [] [] = new int [20] [20];
	int V [] = new int [20];
	System.out.print ("Inserte filas de la matris: ");
	int f = Leer.datoInt ();
	System.out.print ("Inserte dimension del vector: ");
	int d = Leer.datoInt ();

	System.out.print ("\nLLENANDO MATRIS: \n");
	h.llenarMatris (M, f, d);
	System.out.print ("\nLLENANDO EL VECTOR: \n");
	h.llenarVector (V, d);


	System.out.print ("\nLA MATRIS: ");
	h.mostrarMatris (M, f, d);
	System.out.print ("\n\nEL VECTOR: \n");
	h.mostrarVector (V, d);

	h.procedure (M, f, d, V, d);
    }
}


27. Donada una matriu m*n, emmagatzemeu en un vector de dimensió n la suma per columnes de la matriu i en un vector de dimensió m la suma per files de la matriu.

class JavaMatrisVector3
{
    void llenarMatris (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("Inserte pos[" + i + "][" + j + "]: ");
		M [i] [j] = Leer.datoInt ();
	    }
	}
    }


    void mostrarMatris (int M [] [], int f, int c)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    System.out.println ();
	    for (int j = 1 ; j <= c ; j++)
	    {
		System.out.print ("[" + M [i] [j] + "]");
	    }
	}
    }


    void mostrarVector (int V [], int d)
    {
	for (int i = 1 ; i <= d ; i++)
	{
	    System.out.print ("[" + V [i] + "]");
	}
    }


    void vectorA (int M [] [], int f, int c, int A [], int d)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    int suma = 0;
	    for (int j = 1 ; j <= c ; j++)
	    {
		suma = suma + M [j] [i];
	    }
	    A [i] = suma;
	}
    }


    void vectorB (int M [] [], int f, int c, int B [], int d)
    {
	for (int i = 1 ; i <= f ; i++)
	{
	    int suma = 0;
	    for (int j = 1 ; j <= c ; j++)
	    {
		suma = suma + M [i] [j];
	    }
	    B [i] = suma;
	}
    }



    public static void main (String args [])
    {
	JavaMatrisVector3 h = new JavaMatrisVector3 ();
	int Z [] [] = new int [20] [20];
	int A [] = new int [20];
	int B [] = new int [20];
	System.out.print ("Inserte filas de la matris: ");
	int f = Leer.datoInt ();
	System.out.print ("Inserte columnas de la matris: ");
	int c = Leer.datoInt ();

	System.out.print ("\nLLENANDO MATRIS: \n");
	h.llenarMatris (Z, f, c);

	System.out.print ("\nLA MATRIZ Z: ");
	h.mostrarMatris (Z, f, c);

	System.out.println ("\n\nSUMA POR COLUMNAS DE LA MATRIS (vector A): ");
	h.vectorA (Z, f, c, A, c);
	h.mostrarVector (A, c);
	System.out.println ("\n\nSUMA POR FILAS DE LA MATRIS (vector B): ");
	h.vectorB (Z, f, c, B, f);
	h.mostrarVector (B, f);
    }
}

Vectors i generació de nombres aleatoris

Clase java.util.Random

Random r = new Random();
int valorDau = r.nextInt(6)+1;  // Entre 0 i 5, més 1.

28. Simula el llançament d'un dau 1000 vegades e indica el nombre de vegades que ha sortit cada un del números.


29. Un jugador llança dos daus. Guanya si obté 11 punts. Fes un programa que simuli el llançament dels daus fins que el jugador obtingui els 11 punts. Indica quants llançaments a necessitat.


30. Un professor de matemàtiques desitja avaluar als seus alumnes de sisè de primaria sobre les operacions de suma, resta, multiplicació i divisió sencera. Fes un programa que generi dos números aleatoris en el rang 1 - 24 i pregunti pel resultat segons l'operació que també serà generada de forma aleatòria. Comprova si ha fet bé l'operació i envia un missatge adient. El procès finalitzarà quan l'estudiant vulgui. Finalment ha de mostrar una estadística dels resultats obtinguts amb les quatre operacions.

Pots utilitza una taula per emmagatzemar les operacions.