Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - doSomething()

#1
Java / Dudas con JUnit en Java
17 Enero 2020, 19:36 PM
Buenas, necesito ayuda con un ejercicio práctico sobre pruebas unitarias con JUnit en Java.
Me piden que resuelva el siguiente fragmento de código con los métodos assertEquals y fail, además de tratar la excepción con try-catch. La clase Ejercicio devuelve el precio en función del tipo de servicio y del tiempo.
public class Ejercicio {
...
public double getPrecio(int tipo, int tiempo) throws ExceptionTipo {
double importe = 0;
switch(tipo) {
case 1:
importe += 2;
if(tiempo >= 2) {
importe += (tiempo - 2) * 1.5;
}
break;
case 2:
importe += tiempo * 3;
break;
default:
throw new ExceptionTipo("Tipo erróneo.");
}
}
...
}
// Suponga creada la clase ExceptionTipo


Gracias y un salu2.
#2
Gracias xiruko e Yrex-DwX por las respuestas. Justo hace unos segundos he conseguido dar con una solución usando la división y el módulo, tal y como has indicado Yrex. La función es esta:
int cifra_iesima(int n, int i) {
    int cifra_iesima = 0, aux = 1, div = 1;
    if(i < numero_cifras(n)) {
        while(aux <= i) {
            div = div * 10;
            aux++;
        }
        if(aux == numero_cifras(n)) {
            cifra_iesima = n / div;
        }
        else {
            cifra_iesima = n / div % 10;
        }
    }
    return cifra_iesima;
}

¿Alguna forma de simplificarlo aún más?
#3
Buenas a todos, soy nuevo en el foro y en esto de la programación, y tengo una duda con un algoritmo en C. Encontré un ejercicio que no se muy bien como tratar y que consiste en diseñar una función que reciba un número entero positivo y devuelva la cifra i-ésima de este. La función posee el prototipo "int cifra_iesima(int n, int i)" siendo "n" el número e "i" la cifra que solicito que me devuelva la función. He probado de distintas maneras, pero no logro dar con la solución, además he creado una función auxiliar que calcula el número de cifras que posee el número, el cual introduzco por teclado. Mi código es el siguiente:


#include <stdio.h>

int numero_cifras(int n);

int cifra_iesima(int n, int i);

int main() {
    int n, i = 0;
    printf("\n Introduce un n%cmero entero: ", 163);
    scanf("%d", &n);
    if(n < 0) {
        n = -n;
    }
    while(i < numero_cifras(n)) {
        printf(" i = %d --> cifra = %d\n", i, cifra_iesima(n, i));
        i++;
    }
    return 0;
}

int numero_cifras(int n) {
    int contador = 1;
    n = n / 10;
    while(n != 0) {
        contador++;
        n = n / 10;
    }
    return contador;
}

int cifra_iesima(int n, int i) {
   
}


¿Alguna idea?