ASIX-M3-UF1-A2.5-Exercicis estructura iterativa: recorregut
1. Escriu un programa que llegeixi números enters positius i mostri el més petit i el més gran. El programa finalitzarà quan ens introdueixin un número negatiu.
package exrecorregut;
import java.util.Scanner;
/**
* Escriu un programa que llegeixi números enters positius i mostri el més petit
* i el més gran. El programa finalitzarà quan ens introdueixin un número
* negatiu.
*/
public class Ex1 {
public static void main(String[] args) {
Scanner teclat = new Scanner(System.in);
//Declaració de variables
int num, max, min;
// Inicialitzar tractament
max = Integer.MIN_VALUE;
min = Integer.MAX_VALUE;
// Accedir al primer element
System.out.println("Introdueix un valor positiu + "
+ "(per acabar negatiu)");
num = teclat.nextInt();
// Mentre no ultim element
while (num >= 0) {
// Tractar_element
if (num > max) {
max = num;
}
if (num < min) {
min = num;
}
// Obtenir següent element
System.out.println("Introdueix un valor positiu + "
+ "(per acabar negatiu)");
num = teclat.nextInt();
}
// Tractament_final
System.out.println("El valor màxim és: " + max);
System.out.println("El valor mínim és: " + min);
}
}
2. Donat un número llegit per teclat, calcula el número de dígits que té.
package exrecorregut;
import java.util.Scanner;
/**
* Donat un número llegit per teclat, calcula el número de dígits que té.
*/
public class Ex2 {
public static void main(String[] args) {
Scanner teclat = new Scanner(System.in);
//Declaració de variables
int num, digits = 0;
// Accedir al primer element
System.out.print("Introdueix un valor positiu:");
num = teclat.nextInt();
// Mentre no ultim element
while (num > 0) {
// Tractar_element
digits++;
// Obtenir següent element
num = num / 10;
}
// Tractament_final
System.out.println("El número té " + digits + " dígits");
}
}
3. Donat un número llegit per teclat, realitzar la suma de tots els dígits del número.
Per exemple si introdueixen el valor 1238, s'imprimirà el valor : 1+2+3+8 --> 14
package exrecorregut;
import java.util.Scanner;
/**
* Donat un número llegit per teclat, realitzar la suma de tots els dígits del número.
*/
public class Ex3 {
public static void main(String[] args) {
Scanner teclat = new Scanner(System.in);
//Declaració de variables
int num, suma = 0;
// Accedir al primer element
System.out.print("Introdueix un valor positiu:");
num = teclat.nextInt();
// Mentre no ultim element
while (num > 0) {
// Tractar_element
suma=suma+(num%10);
// Obtenir següent element
num=num/10;
}
// Tractament_final
System.out.println("La suma dels dígits és: "+suma);
}
}
4. Donat un número llegit per teclat, realitzar la suma de tots els dígits parells del número.
package exrecorregut;
import java.util.Scanner;
/**
* Donat un número llegit per teclat, realitzar la suma de tots els dígits parells del número.
*/
public class Ex4 {
public static void main(String[] args) {
Scanner teclat = new Scanner(System.in);
int num, mod, suma = 0;
System.out.print("Introdueix un valor positiu:");
num = teclat.nextInt();
while (num > 0) {
mod = (num % 10);
//Si és parell, sumo
if (mod % 2 == 0) {
suma = suma + mod;
}
num = num / 10;
}
System.out.println("La suma dels dígits parells és: " + suma);
}
}
5. Donat un número llegit per teclat, determina el número de dígits més grans que 5.
package exrecorregut;
import java.util.Scanner;
/**
* Donat un número llegit per teclat, determina el número de dígits més grans que 5.
*/
public class Ex5 {
public static void main(String[] args) {
Scanner teclat = new Scanner(System.in);
int num, mod, quants = 0;
System.out.print("Introdueix un valor positiu:");
num = teclat.nextInt();
while (num > 0) {
if (num%10>5){
quants++;
}
num=num/10;
}
System.out.println("Hi ha "+quants+" dígits més grans que 5");
}
}
6. Escriu un programa que llegeixi números enters positius (finalitzarà amb la introducció de -1) i mostri totes les parelles de números consecutius que apareixen a la seqüència.
Per exemple si la seqüència de números és: 7 10 11 23 4 5 8 10 11 12 -1, mostrarà: 10 11, 4 5, 10 11, 11 12
package exrecorregut;
import java.util.Scanner;
/**
* Escriu un programa que llegeixi números enters positius (finalitzarà amb la introducció de -1)
* i mostri totes les parelles de números consecutius que apareixen a la seqüència.
*/
public class Ex6 {
public static void main(String[] args) {
Scanner teclat = new Scanner(System.in);
int anterior, actual;
System.out.println("Introdueix un valor positiu + "
+ "(per acabar -1");
actual = teclat.nextInt();
anterior = actual;
while (actual != -1) {
if (actual == anterior + 1) {
System.out.println(anterior + "-" + actual);
}
anterior = actual;
System.out.println("Introdueix un valor positiu + "
+ "(per acabar -1");
actual = teclat.nextInt();
}
}
}
7. Escriu un programa que mostri i sumi n (entrada per teclat) nombres de la següent successió de números: 2, 4, 8, 6, 36, 72, 70, 4900, 9800 ...
- La lògica de la sèrie és: elevar al quadrat, multiplicar per dos, restar dos, elevar al quadrat, ...
package ex_recorregut;
import java.util.Scanner;
/**
* Escriu un programa que mostri i sumi n (entrada per teclat) nombres de la següent successió de números:
* 2, 4, 8, 6, 36, 72, 70, 4900, 9800 ...
* La lògica de la sèrie és: elevar al quadrat, multiplicar per dos, restar dos, elevar al quadrat, ...
*/
public class Ex7 {
public static void main(String[] args) {
Scanner teclat = new Scanner(System.in);
int numSeq, valorSeq, suma=0;
System.out.println("Introdueix el número d'elements de la seqüència: ");
int num = teclat.nextInt();
if (num > 0){
numSeq = 0;
valorSeq = 2;
System.out.print("Seqüència: "+valorSeq+" ");
suma = valorSeq;
while (numSeq < num) {
numSeq++;
switch (numSeq%3){
case 0:
valorSeq *= 2;
break;
case 1:
valorSeq -= 2;
break;
case 2:
valorSeq *= valorSeq;
break;
}
System.out.print(valorSeq + " ");
suma += valorSeq;
}
}
System.out.println("");
System.out.println("El resultat de la suma és: "+ suma);
}
}
8. Una central distribueix cal cap a diferents sucursals. Disposen d'un lloc de càrrega a on van arribant sacs amb pesos variables. L'empresa disposa d'una flota de camions amb capacitat de càrrega diferents. Es pretén establir un protocol consistent en carregar 20 camions. Un camió no es pot carregar amb més quilos que la seva capacitat i marxarà si amb el següent sac ja supera aquesta capacitat. L'empresa vol un programa que li demani el treballador la capacitat del camió i el pes dels sacs, indicant si ha de carregar el sac o enviar-lo al seu destí i començar a carregar un altre. El procés continua fins que s'hagin omplert els 20 camions, moment en el que sortirà un missatge amb el text "Finalitzada la càrrega del dia"
Exemple:
Camió Capacitat Sac Capacitat Camió Capacitat Sac Capacitat Camió Capacitat Sac Capacitat 1 22000 1 3000 2 18000 5 3000 3 18000 7 9000 2 5000 6 8000 8 7000 3 9000 4 3000 4 20000 9 7000 5 28000 12 5000 6 20000 16 4000 10 9000 13 9000 17 3000 11 4000 14 9000 18 5000 15 3000 19 4000 20 3000 7 22000 21 4000 8 18000 26 9000 9 20000 28 8000 22 5000 27 4000 29 3000 23 6000 30 5000 24 3000 25 3000 10 20000 31 5000 11 20000 34 5000 12 28000 37 7000 32 3000 35 6000 38 3000 33 9000 36 6000 39 7000 40 5000 ...
Resultat:
Camió Sacs que carrega Càrrega que portarà Camió Sacs que carrega Càrrega que portarà 1 1,2,3 i 4 20000 2 5 i 6 11000 3 7 i 8 16000 4 9, 10 i 11 20000 5 12, 13, 14 i 15 26000 6 16, 17, 18, 19 i 20 19000 7 21, 22, 23, 24 i 25 21000 8 26 i 27 13000 9 28, 29 i 30 16000 10 31, 32 i 33 17000 11 34, 35 i 36 17000 12 37, 38, 39 i 40 22000 ...