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 - oldaccount

#1
Java / Re: Duda en constructora
22 Octubre 2016, 14:56 PM
Hola JonaLamper.

En este caso produce el mismo resultado.

Saludos.
#2
Java / Re: Ejercicio Java
14 Octubre 2016, 17:03 PM
Hola Luffy97.

Esta es mi solución al problema:

Código (java) [Seleccionar]
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class XOR {
public static void main(String[] args) throws Exception {
Path source, dest;
byte[] key;
byte[] buffer;

if(args.length != 3) {
System.out.println("Usage: XOR SOURCE DEST KEY");
System.out.println("Encrypt SOURCE into DEST using XOR algorithm with KEY");
System.exit(0);
}

source = Paths.get(args[0]);
dest = Paths.get(args[1]);
key = args[2].getBytes();
buffer = Files.readAllBytes(source);

for(int i = 0; i < buffer.length; i++) {
buffer[i] =  (byte) (buffer[i] ^ key[i % key.length]);
}

Files.write(dest, buffer);
}
}


Saludos.
#3
Hola Undíamartes.

Esta es mi solución al problema:

#include <stdio.h>
#include <string.h>

#define MAX 16

int main() {
char input[MAX];
char *p = input;
int length = 0;
char readed = 0;
double carry = 1;
double result = 0;

scanf("%s", p);
length = strlen(p);
p += length-1;

while(length > 0) {
readed = *p;
p--;
length--;

if((readed-'0') >= 0 && (readed-'0') <= 9) {
result += (readed-'0') * carry;
carry *= 10;
} else {
switch(readed) {
case 'M':
carry = 1000000;
break;
case 'k':
carry = 1000;
break;
case 'h':
carry = 100;
break;
case 'a':
carry = 10;
p--;
length--;
break;
case 'd':
carry = 0.1;
break;
case 'c':
carry = 0.01;
break;
case 'm':
carry = 0.001;
break;
case 'u':
carry = 0.000001;
break;
}
}
}

printf("%f\n", result);
printf("%g\n", result);
}


Esta es la salida del programa:

223u
0.000223
0.000223


27da298c
272.980000
272.98


252k35u
252000.000035
252000


23M263k
23263000.000000
2.3263e+07


265da34
2684.000000
2684


Saludos.
#4
Java / Re: Algoritmo de la raiz enesima
11 Octubre 2016, 22:12 PM
Hola AlessioAuditore.

Esta es mi solución al problema:

Código (java) [Seleccionar]
import java.util.Scanner;

public class RaizEnesima {
public static void main(String[] args) {
float x = 0f;
int n = 0;
float result = 0f;
float aux = 0.00001f;
Scanner sc = new Scanner(System.in);

x = sc.nextFloat();
n = sc.nextInt();

if(n == 0) {
result = 1;
} else {
while(potenciaEnesima(result, n) < x) {
result = result + aux;
}
}

System.out.printf("%.4f\n", result);
}

public static float potenciaEnesima(float x, int n) {
float tmp = 1;

for(int i = 0; i < n; i++) {
tmp = tmp * x;
}

return tmp;
}
}


La salida del programa es:

27
0
1.0000


27
3
3.0000


65978
12
2.5213


7867868238
7
25.9235


Saludos.

#5
Programación C/C++ / Re: Problemas con raíces.
11 Octubre 2016, 07:38 AM
Cita de: KaizerPlazz en 11 Octubre 2016, 02:57 AM
Muchas gracias , pero el 0.00001 porque se pone? y de donde se saca el valor de la raiz o squareroot , yo se que tiene que ser menor que el numero , es que soy nuevo en esto.

Se prueba continuamente hasta llegar al resultado:

Primero se prueba si 0.00001 es la raíz cuadrada de input,
luego se prueba si 0.00002 es la raíz cuadrada de input,
luego se prueba si 0.00003 es la raíz cuadrada de input, etc.

Cada vez que se comprueba que squareRoot no es la raiz cuadrada de input, ((squareRoot * squareRoot) < input), se incrementa en 0.00001 y se vuelve a probar.

Simplemente se prueban todos los valores a partir del 0.00001 sucesivamente hasta detectar que se ha encontrado el que queremos.

Un ejemplo muy sencillo sería encontrar la raíz cuadrada del 9. Para ello podríamos comprobar si 1*1 es menor que 9 (sí lo es), si 2*2 es menor que 9 (sí lo es), si 3*3 es menor que 9 (no lo es). Como 3 es el primer número que hemos encontrado que al multiplicarlo por sí mismo no es menor que 9, ese es el resultado.

Saludos.
#6
Programación C/C++ / Re: Problemas con raíces.
11 Octubre 2016, 02:20 AM
Hola KaizerPlazz.

Te dejo el código fuente limpio y explicado:

#include <stdio.h>

int main(){
float input = 0; // La entrada del usuario
float squareRoot = 0; // La raiz cuadrada que buscamos
float aux = 0.00001; // Cuanto más pequeño más precision en el resultado

scanf("%f", &input); //Leémos la entrada del usuario

/*
Si el valor almacenado en squareRoot multiplicado por sí mismo
no alcanza el valor de input, lo incrementamos un poco y repetimos
*/
while((squareRoot * squareRoot) < input) {
squareRoot = squareRoot + aux;
}

printf("%.4f\n", squareRoot); // Imprimir resultado con cuatro decimales

return 0;
}


Salida del programa:

2
1.4142


9
3.0000


163.281
12.7781


Saludos.
#7
Hola kyosatoishy.

Esta es mi solución al problema:

Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

struct Empleado {
char nombre[32];
char apellido[32];
float peso;
};

int main() {
int numeroDeEmpleados;

cin >> numeroDeEmpleados;

struct Empleado listaDeEmpleados[numeroDeEmpleados];

for (int i = 0; i < numeroDeEmpleados; i++) {
cin >> listaDeEmpleados[i].nombre;
cin >> listaDeEmpleados[i].apellido;
cin >> listaDeEmpleados[i].peso;
}

for (int i = 0; i < numeroDeEmpleados; i++) {
if (listaDeEmpleados[i].peso > 80) {
cout << listaDeEmpleados[i].nombre << " ";
cout << listaDeEmpleados[i].apellido << " ";
cout << "pesa más de 80 kilogramos." << endl;
} else {
cout << listaDeEmpleados[i].nombre << " ";
cout << listaDeEmpleados[i].apellido << " ";
cout << "no pesa más de 80 kilogramos." << endl;
}
}
}


Esta es la salida del programa:

3
Cristian
Rivas
60
Manuel
Castillo
87
Carla
Sanchez  
47
Cristian Rivas no pesa más de 80 kilogramos.
Manuel Castillo pesa más de 80 kilogramos.
Carla Sanchez no pesa más de 80 kilogramos.


Saludos.
#8
Hacking / Re: Duda Ataque Fuerza Bruta
27 Septiembre 2016, 18:53 PM
Hola Gödric.

Una de dos: o creas un archivo con las palabras del diccionario que cumplen que no poseen dos caracteres iguales en posiciones consecutivas (para probarlo después) o bien en tiempo de ejecución compruebas las palabras del diccionario para probar únicamente las palabras que cumplan que no poseen dos caracteres iguales en posiciones consecutivas.

Si vas a utilizar ese mismo conjunto de palabras más de una vez te recomiendo crear un nuevo archivo.

Saludos.
#9
Hola Razzari.

Suponiendo que cada palabra está formada por 32 caracteres ASCII:

Si en vez de construir un diccionario con todas las posibles variaciones con repetición de esas diez palabras lo construyes únicamente con todas las posibles variaciones con repetición de tan solo cinco de las diez palabras, reduces el número de palabras de 11.111.111.110 (331,14GB) a 111.110 (3,39MB).
Ten en cuenta lo inusual de tener una clave con aparición de todas o muchas de las posibles palabras.

Si en vez de construir un diccionario con todas las posibles variaciones con repetición de esas diez palabras lo construyes con todas las posibles variaciones sin repetición de esas mismas diez palabras, reduces el número de palabras de 11.111.111.110 (331,14GB) a 3.628.800 (110,74MB).
Ten en cuenta lo inusual de tener una clave con algunas de las posibles palabras repetidas.

Saludos.