> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/exercicios-java/ud2-solucions/condicionales/exercicios-condicionales.md).

# Exercicios condicionales

1. Escribe un programa que pida por pantalla o ano de nacemento e un prezo. O programa debe de calcular o prezo final de venta ao usuario en función da súa idade:
   1. Os menores de 18 anos teñen un 20% de desconto
   2. Os menores de 30 anos teñen un 10% de desconto
   3. As persoas de 30 ou maiores no teñen ningún desconto

```java
import java.util.Scanner;

public class CalculadorPrezo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Pedir fecha de nacimiento
        System.out.print("Introduce a túa data de nacemento (formato: dd/mm/aaaa): ");
        int anoNacemento = scanner.nextInt();
        
        // Pedir precio
        System.out.print("Introduce o prezo do producto: ");
        double prezo = scanner.nextDouble();
        
        
        int idade = 2025 - anoNacemento;
        
        // Calcular descuento según la edad
        double desconto = 0.0;
        
        if (idade < 18) {
            desconto = 0.20; // 20% de descuento
        } else if (idade < 30) {
            desconto = 0.10; // 10% de descuento
        }
        // Para 30 años o más, no hay descuento (desconto = 0.0)
        
        // Calcular precio final
        double prezoFinal = prezo * (1 - desconto);
        
        // Mostrar resultados
        System.out.println("\n--- Resultado ---");
        System.out.println("Idade: " + idade + " anos");
        System.out.println("Prezo orixinal: " + prezo + " €");
        System.out.println("Desconto aplicado: " + (desconto * 100) + "%");
        System.out.println("Prezo final: " + String.format("%.2f", prezoFinal) + " €");
        
        scanner.close();
    }
}
```

2. Escribe un programa calcule a nota de un estúdiante en función do seguinte:
   1. Os alumnos en modalidade extraordinaria, unicamente realizarán unha proba escrita, e a súa nota final será a de esta proba.
   2. Os alumnos en modalidade ordinaria, entregaran unha practica e realizarán una proba escrita. A nota final destes alumnos calcularase como nota = 0.3\*practica + 0.7\*exame
   3. En caso de que as notas non estean entre 0 e 10, ou a opción seleccionada non é a correcta, o programa debera de mostrar unha mensaxe de erro por pantalla (NON lanzar execpcions, pintar unha mensaxe)

```java
import java.util.Scanner;

public class CalculadorNotas {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("Selecciona a modalidade:");
        System.out.println("1 - Modalidade Ordinaria");
        System.out.println("2 - Modalidade Extraordinaria");
        System.out.print("Opción: ");
        
        int opcion = scanner.nextInt();
        
        double notaFinal = 0.0;
        
        //Pedimos a nota do exame
        System.out.print("Introduce a nota do exame (0-10): ");
        double notaExame = scanner.nextDouble();
        
        
        if (opcion == 1) {
            // Modalidade Ordinaria
            System.out.print("Introduce a nota da práctica (0-10): ");
            double notaPractica = scanner.nextDouble();
    
            // Validar que las notas estén en el rango correcto
            if (notaPractica < 0 || notaPractica > 10 || notaExame < 0 || notaExame > 10) {
                System.out.println("Erro: As notas deben estar entre 0 e 10");
            } else {
                notaFinal = 0.3 * notaPractica + 0.7 * notaExame;
                System.out.println("\n--- RESULTADO ---");
                System.out.printf("Nota práctica: %.2f\n", notaPractica);
                System.out.printf("Nota exame: %.2f\n", notaExame);
                System.out.printf("Nota final: %.2f\n", notaFinal);
            }
            
        } else if (opcion == 2) {
            // Modalidade Extraordinaria
            
            // Validar que la nota esté en el rango correcto
            if (notaExame < 0 || notaExame > 10) {
                System.out.println("Erro: A nota debe estar entre 0 e 10");
            } else {
                notaFinal = notaExame;
                System.out.println("\n--- RESULTADO ---");
                System.out.printf("Nota final: %.2f\n", notaFinal);
            }
            
        } else {
            System.out.println("Erro: Opción non válida. Debes seleccionar 1 ou 2.");
        }
        
        scanner.close();
    }
}
```

3. Escribe un programa que reciba unha nota como valor enteiro, e devolva a súa calificación:

```java
import java.util.Scanner;

public class CalificacionNotaIf {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("Introduce a nota (0-10): ");
        int nota = scanner.nextInt();
        
        String calificacion;
        
        // Usando if-else
        if (nota >= 0 && nota <= 4) {
            calificacion = "Suspenso";
        } else if (nota >= 5 && nota <= 6) {
            calificacion = "Aprobado";
        } else if (nota >= 7 && nota <= 8) {
            calificacion = "Notable";
        } else if (nota >= 9 && nota <= 10) {
            calificacion = "Sobresaínte";
        } else {
            calificacion = "Nota non válida";
        }
        
        System.out.println("Nota: " + nota + " -> " + calificacion);
        scanner.close();
    }
}
```

4. Escribe un programa que simule un caixeiro automatico, que parte cun saldo de 1000 euros. O caixeiro vai propoñer o seguinte menú de opcions:
   1. Ingresar diñeiro: Solicita unha cantidade a ingresar, incrementa o saldo, e mostra o saldo total
   2. Retirar diñeiro: Solicita unha cantidad a retirira, decrementa o saldo, e mostra o saldo total. A conta poderá ficar cun saldo negativo
   3. Sair: Finaliza a interacción con programa

```java
import java.util.Scanner;

public class CaixeiroAutomaticoCase {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double saldo = 1000.0;
        
        System.out.println("=== CAIXEIRO AUTOMÁTICO ===");
        System.out.printf("Saldo inicial: %.2f €\n", saldo);
        System.out.println("\n--- MENÚ ---");
        System.out.println("1. Ingresar diñeiro");
        System.out.println("2. Retirar diñeiro");
        System.out.println("3. Sair");
        
        System.out.print("Selecciona unha opción: ");
        int opcion = scanner.nextInt();
        
        switch (opcion) {
            case 1:
                // Ingresar diñeiro
                System.out.print("Cantidade a ingresar: ");
                double cantidadIngreso = scanner.nextDouble();
                
                if (cantidadIngreso > 0) {
                    saldo += cantidadIngreso;
                    System.out.printf("Ingresados %.2f €\n", cantidadIngreso);
                    System.out.printf("Saldo actual: %.2f €\n", saldo);
                } else {
                    System.out.println("Erro: A cantidade debe ser positiva");
                }
                break;
                
            case 2:
                // Retirar diñeiro
                System.out.print("Cantidade a retirar: ");
                double cantidadRetirada = scanner.nextDouble();
                
                saldo -= cantidadRetirada;
                System.out.printf("Retirados %.2f €\n", cantidadRetirada);
                System.out.printf("Saldo actual: %.2f €\n", saldo);
                break;
                
            case 3:
                // Sair
                System.out.println("Grazas por usar o noso caixeiro automático!");
                break;
                
            default:
                System.out.println("Opción non válida");
                break;
        }
        
        scanner.close();
    }
}
```

5. Escribe o programa do exercicio 3 empregando unha sentencia (Switch ou If), dependendo da opción escollida anteriormente

```
// Some code
```

6. Escribe o programa do exercicio 4 empregando unha sentencia (Switch ou If), dependendo da opción escollida anteriormente

```
// Some code
```

7. Escribe un programa que lea tres número representando unha hora (Hora, Minutos, Segundos). O programa deberá de determinar se a hora introducida é válida ou non.

```java
import java.util.*;
public class Horas {
    public static void main(String[] args) {                                                                      
        int H,M,S;
        Scanner sc = new Scanner(System.in);
        System.out.print("Introduzca hora: ");
        H =  sc.nextInt();
        System.out.print("Introduzca minutos: ");
        M =  sc.nextInt();
        System.out.print("Introduzca segundos: ");
        S =  sc.nextInt();
        if(H>=0 && H<24 && M>=0 && M<60 && S>=0 && S<60)                                                          
           System.out.println("Hora correcta");
        else
            System.out.println("Hora incorrecta");
    }
}
```

8. Escribe un programa que lea unha variable entera Mes. A partir de ahí o programa deberá de mostrar o nome do mes seleccionado e indicar se o mes ten 31, 30 ou 28 días.

```java
import java.util.*;
public class Meses {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int mes;
        System.out.print("Introduzca número de mes: ");
        mes =  sc.nextInt();
        if(mes < 1 || mes > 12) //se comprueba que el valor del mes es correcto                                   
            System.out.println("Mes incorrecto");
        else{  //si el mes es correcto
            switch(mes){  //se muestra el nombre mediante una instrucción switch                                  
                case 1: System.out.print("Enero");
                        break;
                case 2: System.out.print("Febrero");
                        break;
                case 3: System.out.print("Marzo");
                        break;
                case 4: System.out.print("Abril");
                        break;
                case 5: System.out.print("Mayo");
                        break;
                case 6: System.out.print("Junio");
                        break;
                case 7: System.out.print("Julio");
                        break;
                case 8: System.out.print("Agosto");
                        break;
                case 9: System.out.print("Septiembre");
                        break;
                case 10: System.out.print("Octubre");
                        break;
                case 11: System.out.print("Noviembre");
                        break;
                case 12: System.out.print("Diciembre");
                        break;
            }
            // mostrar si es un mes de 30, 31 0 28 días
            if(mes == 4 || mes == 6 || mes == 9 || mes == 11)       
               System.out.println(" es un mes de 30 días");
            else if(mes == 2)
                     System.out.println(" es un mes de 28 días");
                   else
                      System.out.println(" es un mes de 31 días");
        }
    }
}
```

9. Escribe un programa que reciba dous pares de coordenadas asociadas a dos puntos (x1,x2) e (y1,y2) e devolva se a intersección entre ambos puntos é un rectángulo ou un cadrado.

```javascript
import java.util.Scanner;

public class RectanguloOuCadrado {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // Leemos as coordenadas do primeiro punto
        System.out.print("Introduce x1: ");
        double x1 = sc.nextDouble();
        System.out.print("Introduce y1: ");
        double y1 = sc.nextDouble();

        // Leemos as coordenadas do segundo punto
        System.out.print("Introduce x2: ");
        double x2 = sc.nextDouble();
        System.out.print("Introduce y2: ");
        double y2 = sc.nextDouble();

        // Calculamos a base e a altura do rectángulo
        double base = Math.abs(x2 - x1);
        double altura = Math.abs(y2 - y1);

        // Comprobamos se é cadrado ou rectángulo
        if (base == altura) {
            System.out.println("O rectángulo formado é un cadrado.");
        } else {
            System.out.println("O rectángulo formado é un rectángulo normal.");
        }

        sc.close();
    }
}

```

10. Escribe un programa que reciba por pantalla os dixitos dun número de DNI e calculen a letra asociada. A letra dun DNI calculase en base o módulo 23 do valor dos dixitos de acordo a seguinte tabla. O exercicio debe de resolverse con sentencias Switch ou If

| Resto (n % 23) | Letra |
| -------------- | ----- |
| 0              | T     |
| 1              | R     |
| 2              | W     |
| 3              | A     |
| 4              | G     |
| 5              | M     |
| 6              | Y     |
| 7              | F     |
| 8              | P     |
| 9              | D     |
| 10             | X     |
| 11             | B     |
| 12             | N     |
| 13             | J     |
| 14             | Z     |
| 15             | S     |
| 16             | Q     |
| 17             | V     |
| 18             | H     |
| 19             | L     |
| 20             | C     |
| 21             | K     |
| 22             | E     |

```java
import java.util.Scanner;

public class LetraDNI {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("Introduce o número do DNI (sen letra): ");
        int dni = sc.nextInt();

        if (dni >= 0) {  // Comprobamos que o número sexa válido
            int resto = dni % 23;
            char letra;

            // Usamos switch para asignar a letra segundo o resto
            switch (resto) {
                case 0: letra = 'T'; break;
                case 1: letra = 'R'; break;
                case 2: letra = 'W'; break;
                case 3: letra = 'A'; break;
                case 4: letra = 'G'; break;
                case 5: letra = 'M'; break;
                case 6: letra = 'Y'; break;
                case 7: letra = 'F'; break;
                case 8: letra = 'P'; break;
                case 9: letra = 'D'; break;
                case 10: letra = 'X'; break;
                case 11: letra = 'B'; break;
                case 12: letra = 'N'; break;
                case 13: letra = 'J'; break;
                case 14: letra = 'Z'; break;
                case 15: letra = 'S'; break;
                case 16: letra = 'Q'; break;
                case 17: letra = 'V'; break;
                case 18: letra = 'H'; break;
                case 19: letra = 'L'; break;
                case 20: letra = 'C'; break;
                case 21: letra = 'K'; break;
                case 22: letra = 'E'; break;
                default: letra = '?'; break; // Por seguridade
            }

            System.out.println("A letra do DNI " + dni + " é: " + letra);
        } else {
            System.out.println("Número de DNI non válido.");
        }

        sc.close();
    }
}

```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/exercicios-java/ud2-solucions/condicionales/exercicios-condicionales.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
