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

De wikiserver
Dreceres ràpides: navegació, cerca
(Prova 1)
 
(Hi ha 47 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
==2018-19==
+
==2020-21==
  
 +
<!--
 
===Prova 1===
 
===Prova 1===
  
 
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>
<!--
 
package provessrc;
 
  
import java.util.Scanner;
+
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'''
 
 
public class Ex1 {
 
 
 
    public static void main(String[] args) {
 
        Scanner teclat = new Scanner(System.in);
 
        System.out.println("Introdueix un número:");
 
        int num1 = teclat.nextInt();
 
 
 
        System.out.println("Introdueix un segon número:");
 
        int num2 = teclat.nextInt();
 
 
 
        for (int i = 1; i <= num1; i++) {
 
 
 
            if (i % 2 == 1) {
 
                for (int j = 1; j <= num2; j++) {
 
                    if (j % 2 == 1) {
 
                        System.out.print(j + " ");
 
                    } else {
 
                        System.out.print("  ");
 
                    }
 
                }
 
 
 
            } else {
 
                for (int j = num2; j >= 1; j--) {
 
                    if (j % 2 == 1) {
 
                        System.out.print("  ");
 
                    } else {
 
                        System.out.print(j + " ");
 
                    }
 
                }
 
 
 
            }
 
            System.out.println("");
 
        }
 
 
 
    }
 
}
 
-->
 
 
 
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.  
 
 
<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) '''1,5 punts'''
package provessrc;
 
 
 
public class Ex2 {
 
    public static void main(String[] args) {
 
        int d1,d2,d3;
 
        for (int i = 100; i < 1000; i++) {
 
            d3 = i%10;
 
            d2 = i/10%10;
 
            d1 = i/10/10;
 
            if (d1+d2==d3){
 
                System.out.println(i);
 
            }
 
           
 
        }
 
    }
 
}
 
-->
 
 
 
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)  
 
 
<pre>
 
<pre>
 
   #      #           
 
   #      #           
Línia 94: Línia 34:
 
   #      #                                     
 
   #      #                                     
 
</pre>
 
</pre>
<!--
 
package provessrc;
 
  
import java.util.Scanner;
+
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
  
public class Ex3 {
+
22 44 77  5 21 62 11 331 44 6 7 82 -1
    public static void main(String[] args) {
+
No!
        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 <= num; j++) {
 
                if (j==1 || j==num || i==j){
 
                    System.out.print("# ");
 
                }else{
 
                    System.out.print("  ");
 
                }
 
            }
 
            System.out.println("");
 
        }
 
    }
 
}
 
-->
 
  
 +
Exemple 2
  
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.
+
234 45 56 45 37 18 24 66
 +
Sí!
  
<!--
+
Exemple 3
package provessrc;
 
  
import java.util.Scanner;
+
44 589 24 126 37 39 28 12 91 121 327
 +
Sí!
 +
</pre>
  
public class Ex4 {
+
5. Mostra per pantalla aquesta "representació" a partir d’un número introduït (en el exemple 5). '''2 punts'''
    public static void main(String[] args) {
 
        Scanner teclat = new Scanner(System.in);
 
        int contParells=0, contImparells=0;
 
        System.out.println("Introdueix un número:");
 
        int num=teclat.nextInt();
 
        while (num!=-1 && contParells<3 && contImparells<3){
 
            if (num%2==0){
 
                contParells++;
 
                contImparells=0;
 
            }else{
 
                contImparells++;
 
                contParells=0;
 
            }
 
            if (contParells<3 && contImparells<3){
 
                System.out.println("Introdueix un número:");
 
                num=teclat.nextInt();
 
            }
 
        }
 
        if (contParells==3){
 
            System.out.println("Tres parells seguits..,");
 
        }
 
            else if (contImparells==3){
 
                   
 
                    System.out.println("Tres imparells seguits...");               
 
       
 
        }
 
            else{
 
                System.out.println("No s'ha produït cap seqüència de tres números parells o imparells seguits.");
 
            }
 
    }
 
}
 
-->
 
 
 
 
 
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 171: 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 179: Línia 70:
 
     * * * * * * * * * *
 
     * * * * * * * * * *
 
  </pre>
 
  </pre>
<!-- -->
+
 
  
 
===Prova 2===
 
===Prova 2===
  
1. Fes un programa que demani dos números senars més grans que 2 i mostri el següent:        
+
Recorda: Scanner teclat = new Scanner(System.in);
<pre>                                                                                                     
 
    Ex. 5 i 7                                      Ex. 7 i 3 
 
  
  1 2 3 4 5 6                                      1 2  4 5 6 
+
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'''
    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>
 
<!-- -->
 
 
<pre>
 
<pre>
package proves;
+
  Ex. 5 i 7                        Ex. 3 i 9 
 
 
import java.util.Scanner;
 
 
 
 
 
public class Proves {
 
  
    public static void main(String[] args) {
+
  1 2 3 4  6                      1 2  4 5 6 7 8          
          
+
    6  4 3 2 1                      8 7 6 5 4  2 1  
        Scanner teclat = new Scanner(System.in);
+
  1 2 3 4  6                      1 2  4 5 6 7 8 
       
+
    6   4 3 2 1                          
        System.out.println("Introdueix un número: ");
+
  1 2 3 4   6                         
        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("");
 
            }
 
        }
 
}
 
 
</pre>
 
</pre>
  
 +
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>
 +
Ex
  
2. Escriu un programa que mostri tots el números de 3 xifres que compleixen que cada dígit és divisible per l’anterior. 
+
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>                                                                           
 
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>
<!-- -->
 
<pre>
 
package proves;
 
  
public class ex2 {
+
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'''
   
 
    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);
 
                }
 
            }
 
           
 
        }
 
    }
 
}
 
</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)                                            
 
 
<pre>
 
<pre>
    # # # # # # #                     
+
  # # # # # # #                     
    #  
+
  #  
    #       
+
  #       
    # # # # # # #                                               
+
  # # # # # # #                                               
                #       
+
              #       
                #       
+
              #       
    # # # # # # #
+
  # # # # # # #  
 
</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 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>
 
<pre>
package proves;
+
Exemple 1
  
import java.util.Scanner;
+
3 7 22 3 4 67 12 12 87 76 111 124 33 45 56 77 -1 → NO
  
public class ex3 {
+
Exemple 2
    public static void main(String[] args) {
 
      Scanner teclat = new Scanner(System.in);
 
       
 
        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("");
 
        }
 
           
 
  }               
 
       
 
}
 
</pre>
 
  
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.
+
3 7 22 3 4 67 12 12 87 76 111 124 33 45 56 77 88 99 
                                                                                                                             
 
Exemples:
 
<pre>
 
3 7 22 3 4 67 12 87 76 111 124 33 45 56 77 -1 NO
 
  
3 7  22  3  4  67 12  87  76  111  124  33  45  56  77  88  99  → SÍ
+
Exemple 3
  
3 7 22 3 4 67 12 87 76 111 124 88 45 36 17 11 → SÍ
+
3 7 22 3 4 67 12 12 87 76 111 124 88 45 36 17 11 → SÍ
 
</pre>
 
</pre>
<!-- -->
 
<pre>
 
package proves;
 
  
import java.util.Scanner;
+
5. Mostra per pantalla aquesta "representació" a partir d’un número introduït (en el exemple 5). '''2 punts'''
 
 
public class ex4 {
 
      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");
 
      }   
 
}
 
}
 
</pre>
 
5. Mostra per pantalla aquesta "representació" a partir d’un número introduït (en el exemple 5).                                                                                                            
 
 
<pre>
 
<pre>
              1
+
        1
            2 1 2
+
      2 1 2
        3 2 1 2 3
+
    3 2 1 2 3
      4 3 2 1 2 3 4
+
  4 3 2 1 2 3 4
  5 4 3 2 1 2 3 4 5
+
5 4 3 2 1 2 3 4 5
 
</pre>
 
</pre>
<!-- -->
+
 
 +
6. Mostra per pantalla aquesta "representació" a partir d’un número introduït (en el exemple 5). '''2 punts'''
 
<pre>
 
<pre>
package proves;
+
*      *
 +
* *  * *
 +
* * * * *   
 +
* *  * *       
 +
*      *
 +
</pre>
  
import java.util.Scanner;
+
-->
 
+
<!--
public class ex5 {
+
===Prova 3===
    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("");
 
        }
 
     
 
    } 
 
}
 
</pre>
 
  
6. Mostra per pantalla aquesta "representació" a partir d’un número impar introduït per teclat (en el exemple 5).                                                                                                 
+
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'''
 
<pre>
 
<pre>
    *              *
+
1
    *  *        *  *
+
1 2 1
    *  *  *  *  *  *   
+
1 2 3 2 1
    *  *        *  *       
+
1 2 3 4 3 2 1
    *              *
+
1 2 3 4 5 4 3 2 1
 
</pre>
 
</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, ... 
  
 +
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'''
  
 +
Per exemple:
 +
<pre>
 +
Si llavor=2 i màxim=1000, escriurà : 2 3 7 43 i escriurà que la seqüència té 4 elements
 +
Si llavor =3 i màxim =25000, escriurà : 3 4 13 157 24493 i escriurà que la seqüència té 5 elements
 +
</pre>
  
public class ex6 {
+
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'''
 +
<pre>
 +
  t t t t t t t
 +
        t
 +
        t
 +
        t
 +
        t
 +
        t
 +
        t
 +
</pre>
  
    public static void main(String[] args) {
+
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
  
        Scanner teclat = new Scanner(System.in);
+
Hi ha 5 números iguals a la suma dels que el precedeixen
        System.out.println("Introdueix un número: ");
+
(10  23  55 110  245)
        int num = teclat.nextInt();
+
</pre>
  
        for (int i = 1; i <= num / 2 + 1; i++) {
+
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'''                                                                                                                           
  
            for (int j = 1; j <= i; j++) {
+
Exemples.
                System.out.print("* ");
+
<pre>
            }
+
3  7  22  3  4  67 12  87  76  111  124  33  45  56 77 -1 → NO
            for (int j = 1; j < num - (2 * (i - 1)); j++) {
 
                System.out.print(" ");
 
            }
 
            for (int j = 1; j <= i; j++) {
 
                System.out.print("* ");
 
  
            }
+
3  7  22  3  4  67 12  87  76  111  124  33  45  56  77  88  99  → SÍ
  
            System.out.println("");
+
3  7  22  3  4  67 12  87  76  111  124  88  45  36  17  11 → SÍ
        }
+
</pre>
        for (int i = 1; i <= num - (num / 2 + 1); i++) {
 
  
            for (int j = i; j <= num - (num / 2 + 1); j++) {
+
6. Mostra per pantalla aquesta "representació" a partir d’un número introduït per teclat (en el exemple 5).                                                                                                   '''2 punts'''
                System.out.print("* ");
+
<pre>
            }
+
  # # # # # # #
            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("");
 
        }
 
 
 
     }
 
}
 
 
</pre>
 
</pre>
 +
-->

Revisió de 12:52, 6 maig 2021

2020-21