18. Algoritmos

18.1. Convertir array de texto a array de números

  • ENTRADA: 4 5 6 7
  • LENGUAJE USADO: Java
    String[] arr = text.split(" ");
    int[] arr_int = new int[arr.length];
    for (int i = 0; i < arr.length; i++){
    arr_int[i] = Integer.parseInt(arr[i]);
    }
  • SALIDA: arr_int = [4, 5, 6, 7]

18.2. Encontrar el máximo

  • ENTRADA: arr_int = [4, 8, 5, 9]
  • LENGUAJE USADO: Java
    int max = arr_int[0];
    for (int i = 0; i < arr_int.length; i++){
    if(max < arr_int[i]){
        max = arr_int[i];
    }
    }
  • SALIDA: max = 9
  • LENGUAJE USADO: Python
    maximo = arr_int[0]
    for i in range(arr_int.__len__()):
    if(maximo < arr_int[i]):
        maximo = arr_int[i]
    print(maximo)

18.3. Ordenar de menor a mayor

  • ENTRADA: arr_int = [5, 3, 8, 7]
  • LENGUAJE USADO: Java
    int a = 0;
    while(1==1){
    for (int i = 0; i < arr_int.length-1; i++){
        if(arr_int[i] > arr_int[i+1]){
            a = arr_int[i];
            arr_int[i] = arr_int[i+1];
            arr_int[i+1] = a;
        }
    }
    for (int k = 0; k < arr_int.length-1; k++){
        if(arr_int[k] > arr_int[k+1]){
            t++;
        }
    }
    if(t == 0){
        break;
    }else{
        t = 0;
    }
    }
  • SALIDA: arr_int = [3, 5, 7, 8]
  • LENGUAJE USADO: Python
    a = 0
    t = 0
    while True:
    for i in range(arr_int.__len__()-1):
        if(entrada[i] > entrada[i+1]):
            a = entrada[i]
            arr_int[i] = arr_int [i+1]
            arr_int[i+1] = a
    for k in range(arr_int.__len__()-1):
        if(arr_int[k] > arr_int[k+1]):
           t = t+1
    if(t == 0):
        break
    else:
        t = 0
    print(arr_int)

18.4. Resolver ecuaciones por aproximación

  • ENTRADA: entrada = 50 , type = 2
  • LENGUAJE USADO: Java
    static double otros(double x) {
        double y = 2*(x*x)+5*x+16;
        return y;
    }
    static double operacion(int tipo, double x) {
        double y = 0;
        switch (tipo) {
            ...
            case 3: y = otros(x);
            break;
    default: System.err.println("Error");
        }
        return y;
    }
    public Estimacion(Scanner scaner) {
    System.out.print("Número: ");
    double input = scaner.nextDouble();
    System.out.print("Operación (1->raíz cuadrada, 2->raíz cúbica, 3->otros): ");
    int type = scaner.nextInt();
    double x = 1;
    double step = 1;
    double margin = 0.0001;
    int i = 0;
    while(true) {
        double res = operacion(type, x);
    if(Math.abs((res-input)/input) < margin) {
    DecimalFormat dec = new DecimalFormat("#.000");
    System.out.println("La respuesta es " + dec.format(x));
    System.out.println("Número de iteraciones: " + i);
                break;
        }else if(res < input) {
                double error = Math.abs((res-input)/input);
                x+=step*error;
        }else if(res > input) {
                double error = Math.abs((res-input)/input);
                x-=step*error;
            }
            i++;
        }
    }
  • SALIDA: x = 3,683
  • LENGUAJE USADO: Python
    def raizcub(x):
    y = x*x*x
    return y
    entrada = 50
    x = 1.0
    step = 1
    margin = 0.0001
    while True:
    res = raizcub(x)
    if (abs((res-entrada)/entrada) < margin):
        print(x)
        break
    elif(res < entrada):
        error = abs((res-entrada)/entrada)
        x+=step*error
    elif(res > entrada):
        error = abs((res-entrada)/entrada)
        x-=step*error