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

De wikiserver
Dreceres ràpides: navegació, cerca
(Prova 2)
 
(Hi ha 58 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
==2018-19==
+
==2020-21==
 +
 
 
<!--
 
<!--
 
===Prova 1===
 
===Prova 1===
Línia 5: Línia 6:
 
Recorda:  Scanner teclat = new Scanner(System.in);
 
Recorda:  Scanner teclat = new Scanner(System.in);
  
1. Fes un programa que demani dos números senars més grans que 4 i mostri el següent (en l'exemple els números són 5 -files- i 7 -columnes-)  
+
1. Fes un programa que demani dos números senars més grans que 4 i mostri el següent (en l'exemple els números són 5 -files- i 7 -columnes-) '''1,5 punts'''
 
<pre>
 
<pre>
   Ex. 5 i 7                                             Ex. 7 i 5
+
   Ex. 5 i 7                                             Ex. 3 i 9                                   
  
   1  3  5  7                                         1  3   5  
+
   1  3  5  7                                         1  3   5   7  9
     6  4  2                                             4   2
+
     6  4  2                                             8  6  4   2
   1  3  5  7                                         1  3   5
+
   1  3  5  7                                         1  3   5   7  9
     6  4  2                                             4    2             
+
     6  4  2                                                    
   1  3  5  7                                         1  3    5
+
   1  3  5  7                                    
                                                          4    2
+
                                                     
                                                        1  3    5
+
                                                     
 
</pre>
 
</pre>
  
2. Escriu un programa que mostri tots el números de 3 xifres que compleixen que la suma dels dígits de més pes és igual al 3r dígit.  
+
2. Escriu un programa que mostri tots el números de 3 xifres que compleixen que la suma dels dígits de més pes és igual al 3r dígit. '''1,5 punts'''
 
<pre>
 
<pre>
 
Ex
 
Ex
  
123 (1+2=3), 134 (1+3=4), 145 (1+4=5)
+
101 (1+0=1), 112 (1+1=2), 123 (1+2=3), 134 (1+3=4), 145 (1+4=5) ...
 
</pre>
 
</pre>
  
3. Fes un programa que demani un número de línies (més gran que 4 i imparell) i "dibuixi" la lletra 'N' (en l'exemple el número és 5)  
+
3. Fes un programa que demani un número de línies (més gran que 4 i imparell) i "dibuixi" la lletra 'N' (en l'exemple el número és 5) '''1,5 punts'''
 
<pre>
 
<pre>
 
   #      #           
 
   #      #           
Línia 34: Línia 35:
 
</pre>
 
</pre>
  
4. En una seqüencia de números enters positius acabada en -1, determinar si s’ha produït una seqüencia de 3 números parells o imparells seguits.  
+
4. En una seqüencia de números enters positius acabada en -1, determinar si s’ha produït una seqüencia de 3 números parells o imparells seguits. '''1,5 punts'''
 +
<pre>
 +
Exemple 1
 +
 
 +
22 44 77  5 21 62 11 331 44 6 7 82 -1
 +
No!
  
 +
Exemple 2
 +
 +
234 45 56 45 37 18 24 66
 +
Sí!
 +
 +
Exemple 3
 +
 +
44 589 24 126 37 39 28 12 91 121 327
 +
Sí!
 +
</pre>
  
5. Mostra per pantalla aquesta "representació" a partir d’un número introduït (en el exemple 5). 2 punts
+
5. Mostra per pantalla aquesta "representació" a partir d’un número introduït (en el exemple 5). '''2 punts'''
 
<pre>
 
<pre>
 
             5
 
             5
Línia 46: Línia 62:
 
</pre>
 
</pre>
  
6. Mostra per pantalla aquesta "representació" a partir d’un número introduït (en el exemple 5). 2 punts
+
6. Mostra per pantalla aquesta "representació" a partir d’un número introduït (en el exemple 5). '''2 punts'''
 
<pre>
 
<pre>
 
     *                *
 
     *                *
Línia 54: Línia 70:
 
     * * * * * * * * * *
 
     * * * * * * * * * *
 
  </pre>
 
  </pre>
-->
 
===Prova 2===
 
  
1. Fes un programa que demani dos números senars més grans que 2 i mostri el següent:       
 
<pre>                                                                                                     
 
    Ex. 5 i 7                                      Ex. 7 i 3 
 
  
  1 2 3 4 5 6                                      1 2  4 5 6 
+
===Prova 2===
    6  4 3 2 1                                      6 5 4  2 1   
 
  1 2 3 4 5 6                                      1 2  4 5 6 
 
    6  4 3 2 1                                   
 
  1 2 3 4 5 6                                 
 
</pre>
 
<!-- -->
 
package proves;
 
  
import java.util.Scanner;
+
Recorda:  Scanner teclat = new Scanner(System.in);
  
 +
1. Fes un programa que demani dos números senars més grans que 2 i mostri el següent (en l'exemple els números són 5 -files- i 7 -columnes-) '''1,5 punts'''
 +
<pre>
 +
  Ex. 5 i 7                        Ex. 3 i 9 
  
public class Proves {
+
  1 2 3 4  6                      1 2  4 5 6 7 8       
 +
    6  4 3 2 1                      8 7 6 5 4  2 1
 +
  1 2 3 4  6                      1 2  4 5 6 7 8 
 +
    6  4 3 2 1                       
 +
  1 2 3 4  6                         
 +
</pre>
  
    public static void main(String[] args) {
+
2. Escriu un programa que mostri tots el números de 3 xifres que compleixen que cada dígit és divisible per l'anterior. '''1 punt'''
       
+
<pre>
        Scanner teclat = new Scanner(System.in);
+
Ex
       
 
        System.out.println("Introdueix un número: ");
 
        int n1 = teclat.nextInt();
 
        System.out.println("Introdueix un altre número: ");
 
        int n2 = teclat.nextInt();
 
        int files, columnes;
 
        if (n1 > n2) {
 
            files = n2;
 
            columnes = n1;
 
        } else {
 
            files = n1;
 
            columnes = n2;
 
        }
 
             
 
        for (int i=1; i<=files; i++){
 
                     
 
                if (i%2==1){
 
                    for (int j= 1; j <=columnes; j++) {
 
                        if (j==files || j== columnes){
 
                            System.out.print(" ");
 
                        }
 
                        else{
 
                        System.out.print(j +" "); 
 
                        }
 
                    }
 
                } else {
 
                    for (int j = columnes; j >=1; j--) {
 
                      if (j==files || j== columnes){
 
                            System.out.print(" ");
 
                        }
 
                        else{
 
                        System.out.print(j +" "); 
 
                        }
 
                    }
 
                }
 
                System.out.println("");
 
            }
 
        }
 
}
 
  
 +
111 (1%1=0 i 1%1=0), 211 (2%1=0 i 1%1=0), 221 (2%2=0 i 2%1=0) ...
 +
</pre>
  
 
+
3. Fes un programa que demani un número de línies (més gran que 4 i imparell) i "dibuixi" la lletra 'S' (en l'exemple el número és 7) '''1,5 punts'''
2. Escriu un programa que mostri tots el números de 3 xifres que compleixen que cada dígit és divisible per l’anterior. 
+
<pre>
 
+
  # # # # # # #                   
<pre>                                                                            
+
  #
Ex
+
  #     
111 (1%1=0 i 1%1=0) , 211 (2%1=0 i 1%1=0) , 221 (2%2=0 i 2%1=0), ...
+
  # # # # # # #                                             
 +
              #     
 +
              #     
 +
  # # # # # # #
 
</pre>
 
</pre>
<!-- -->
 
  
package proves;
+
4. En una seqüencia de números enters positius acabada en -1, determinar si s’ha produït una seqüencia de 5 números en la que cada número és més gran que l'anterior o una seqüencia de 5 números en la que cada número és menor que l'anterior. '''2 punts'''
 +
<pre>
 +
Exemple 1
  
public class ex2 {
+
3 7 22 3 4 67 12 12 87 76 111 124 33 45 56 77 -1 → NO
   
 
    public static void main(String[] args) {
 
        int d1, d2, d3;
 
        for (int n=100; n<1000; n++){
 
            d1 = n%10;
 
            d2 = n/10%10;
 
            d3 = n/100;
 
           
 
            if (d2!=0 && d1!=0){
 
                if (d3%d2==0 && d2%d1==0){
 
                    System.out.println(n);
 
                }
 
            }
 
           
 
        }
 
    }
 
}
 
  
 +
Exemple 2
  
 +
3 7 22 3 4 67 12 12 87 76 111 124 33 45 56 77 88 99  → SÍ
  
 +
Exemple 3
  
 +
3 7 22 3 4 67 12 12 87 76 111 124 88 45 36 17 11 → SÍ
 +
</pre>
  
3. Fes un programa que demani un número de línies (més gran que 4 i imparell) i "dibuixi" la lletra 'S' (en l'exemple el número és 7)                                           
+
5. Mostra per pantalla aquesta "representació" a partir d’un número introduït (en el exemple 5). '''2 punts'''
 
<pre>
 
<pre>
    # # # # # # #                   
+
        1
    #
+
      2 1 2
     #     
+
     3 2 1 2 3
    # # # # # # #                                             
+
  4 3 2 1 2 3 4
                #     
+
5 4 3 2 1 2 3 4 5
                #     
 
    # # # # # # #
 
 
</pre>
 
</pre>
<!-- -->
 
package proves;
 
  
import java.util.Scanner;
+
6. Mostra per pantalla aquesta "representació" a partir d’un número introduït (en el exemple 5). '''2 punts'''
 +
<pre>
 +
*      *
 +
* *  * *
 +
* * * * *   
 +
* *  * *       
 +
*      *
 +
</pre>
  
public class ex3 {
+
-->
    public static void main(String[] args) {
+
<!--
      Scanner teclat = new Scanner(System.in);
+
===Prova 3===
       
 
        System.out.println("Introdueix un número: ");
 
        int n = teclat.nextInt();
 
           
 
        for (int i=1; i<=n; i++){
 
           
 
            if (i==1 || i==n || i==n/2+1){
 
                for (int j = 1; j <= n; j++) {
 
                    System.out.print("# ");                 
 
                }
 
            }
 
            else if (i<n/2+1){
 
                        System.out.print("# ");
 
                        }
 
            else{
 
                for (int j = 1; j < n; j++) {
 
                    System.out.print("  ");                 
 
                }
 
                System.out.print("# ");
 
               
 
            }
 
            System.out.println("");
 
        }
 
           
 
  }               
 
       
 
}
 
  
 
+
1. Escriu un programa que imprimeixi el següent “triangle” de números tenint com a entrada el número de files. Per exemple si l’entrada fos 5 la sortida seria: '''2 punts'''
4. En una seqüencia de números enters positius acabada en -1, determinar si s’ha produït una seqüencia de 5 números en els que cada número és major que l’anterior o una seqüencia de 5 números en els que cada número és menor que l’anterior.
 
                                                                                                                             
 
Exemples:
 
 
<pre>
 
<pre>
3  7  22  3  4  67 12  87  76  111  124  33  45  56  77 -1 → NO
+
1
 
+
1 2 1
3 7  22  3 4 67 12  87  76  111  124  33  45  56  77  88  99  → SÍ
+
1 2 3 2 1
 
+
1 2 3 4 3 2 1
3 7  22  3 4  67 12  87  76  111  124  88  45  36  17  11 → SÍ
+
1 2 3 4 5 4 3 2 1
 
</pre>
 
</pre>
<!-- -->
 
package proves;
 
  
import java.util.Scanner;
+
2. Volem construir una seqüència de números caracteritzada per:
 +
:* El primer element anomenat llavor pot ser qualsevol número positiu
 +
:* El segon element és igual a la llavor més 1
 +
:* Els altres elements són el producte de tots els anteriors més 1
 +
:* Per exemple si la llavor és 2, els primers elements són : 2, 3, 7, 43, 1807, 3263443, ... 
  
public class ex4 {
+
Escriu un programa que '''donada una llavor introduïda per teclat i un número màxim''' també introduït per teclat, ens mostri tota la seqüència d’elements de la seqüència inferiors al màxim, i finalment ens digui quants elements hi ha. '''1,5 punts'''
      public static void main(String[] args) {
 
         
 
      int contMajors=0, contMenors=0;
 
      Scanner teclat = new Scanner(System.in);
 
      System.out.println("Introdueix un número: ");
 
      int num = teclat.nextInt();
 
      if (num != -1) {
 
        int numant=num;
 
        System.out.println("Introdueix un número: ");
 
        num = teclat.nextInt();
 
     
 
        while (num!=-1 && contMajors < 5 && contMenors<5){
 
            if (num > numant){
 
                contMajors++;
 
                contMenors=0;
 
            } else if (num < numant){
 
                contMenors--;
 
                contMajors=0;
 
            }else{
 
                contMajors=0;
 
                contMenors=0;
 
            }
 
            if (contMajors < 5 && contMenors<5){
 
                numant=num;
 
                System.out.println("Introdueix un número: ");
 
                num = teclat.nextInt();
 
            }
 
           
 
        } 
 
       
 
      }
 
      if (num!= -1){
 
          System.out.println("Sí");
 
      }
 
      else{
 
          System.out.println("No");
 
      }   
 
}
 
}
 
  
 
+
Per exemple:
5. Mostra per pantalla aquesta "representació" a partir d’un número introduït (en el exemple 5).                                                                                                             
 
 
<pre>
 
<pre>
              1
+
Si llavor=2 i màxim=1000, escriurà : 2 3 7 43 i escriurà que la seqüència té 4 elements
            2  1  2
+
Si llavor =3 i màxim =25000, escriurà : 3 4 13 157 24493 i escriurà que la seqüència té 5 elements
        3  2 2 3
 
      4  3  2  1  2  3  4
 
  5  4  3 2  1  2  3 4 5
 
 
</pre>
 
</pre>
<!-- -->
 
package proves;
 
  
import java.util.Scanner;
+
3. Escriu un programa que demani un número senar com a entrada. Donarà com a sortida una lletra ' T ' majúscula escrita amb lletres ' t ' minúscules com les de la figura. La longitud de la barra superior i l'alçada de la T són les mateixes i iguals al número
 
+
entrat per teclat ( a l'exemple 7). '''1,5 punts'''
public class ex5 {
 
    public static void main(String[] args) {
 
       
 
      Scanner teclat = new Scanner(System.in);
 
      System.out.println("Introdueix un número: ");
 
      int num = teclat.nextInt();
 
     
 
        for (int i = 1; i <=num; i++) {
 
           
 
            for (int j = 1; j < 2*(num-i+1); j++) {
 
                System.out.print(" ");
 
            }
 
            for (int j = 1; j <= i; j++) {
 
                System.out.print((i-j+1)+" ");
 
            }
 
            for (int j = 2; j <= i; j++) {
 
                System.out.print(j+" ");
 
            }
 
            System.out.println("");
 
        }
 
     
 
    } 
 
}
 
 
 
 
 
6. Mostra per pantalla aquesta "representació" a partir d’un número impar introduït per teclat (en el exemple 5).                                                                                                  
 
 
<pre>
 
<pre>
    *              *
+
  t t t t t t t
    *  *        *  *
+
        t
    *  *  *  *  *  *   
+
        t
    *  *        *  *       
+
        t
    *              *
+
        t
 +
        t
 +
        t
 
</pre>
 
</pre>
<!-- -->
 
package proves;
 
  
import java.util.Scanner;
+
4. En una seqüència de números enters positius acabada en -1, indicar quants números són iguals a la suma de tots els números que el precedeixen: '''1,5 punts'''
 +
Exemple:
 +
<pre>
 +
3  7  10  3  23  9  55  110  2  11  12  245  33  45  56  77 -1
  
 +
Hi ha 5 números iguals a la suma dels que el precedeixen
 +
(10  23  55 110  245)
 +
</pre>
  
 +
5. En una seqüencia de números enters positius acabada en -1, determinar si s’ha produït una seqüencia de 5 números en els que cada número és major que l’anterior o una seqüencia de 5 números en els que cada número és menor que l’anterior. '''1,5 punts'''                                                                                                                           
  
public class ex6 {
+
Exemples.
 +
<pre>
 +
3  7  22  3  4  67 12  87  76  111  124  33  45  56  77 -1 → NO
  
    public static void main(String[] args) {
+
3  7  22  3  4  67 12  87  76  111  124  33  45  56  77  88  99  → SÍ
  
        Scanner teclat = new Scanner(System.in);
+
3  7  22  3  4  67 12  87  76  111  124  88  45  36  17  11 → SÍ
        System.out.println("Introdueix un número: ");
+
</pre>
        int num = teclat.nextInt();
 
  
        for (int i = 1; i <= num / 2 + 1; i++) {
+
6. Mostra per pantalla aquesta "representació" a partir d’un número introduït per teclat (en el exemple 5).                                                                                                   '''2 punts'''
 
+
<pre>
            for (int j = 1; j <= i; j++) {
+
  # # # # # # #
                System.out.print("* ");
+
  #    *     #         
            }
+
  #    *    #
            for (int j = 1; j < num - (2 * (i - 1)); j++) {
+
  # * * * * * #
                System.out.print("  ");
+
  #    *    #   
            }
+
  #    *    #   
            for (int j = 1; j <= i; j++) {
+
  # # # # # # #
                System.out.print("* ");
+
</pre>
 
+
-->
            }
 
 
 
            System.out.println("");
 
        }
 
        for (int i = 1; i <= num - (num / 2 + 1); i++) {
 
 
 
            for (int j = i; j <= num - (num / 2 + 1); j++) {
 
                System.out.print("* ");
 
            }
 
            for (int j = 1; j <= 2 + (2 * (i - 1)); j++) {
 
                System.out.print("  ");
 
            }
 
            for (int j = i; j <= num - (num / 2 + 1); j++) {
 
                System.out.print("* ");
 
            }
 
 
 
            System.out.println("");
 
        }
 
 
 
    }
 
}
 

Revisió de 12:52, 6 maig 2021

2020-21