elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 [2] 3 4
11  Programación / Programación C/C++ / Re: Problema con rand() en: 12 Abril 2016, 23:26 pm
Código
  1. char *password=malloc(8*sizeof(char))+1;
Esto está mal. malloc te asigna una zona de memoria pero devuelves la posición 1 byte superior. Tal vez quisiste decir:
Código
  1. char *password=malloc((8+1)*sizeof(char));
para guardar la cadena más el caracter nulo.
Pero tampoco convence ya que rand podría generarte un 0 cuándo estás consiguiendo los números, con lo que la cadena resultante acabaría en ese momento. Por otra parte no estás escribiendo caracteres numéricos sino caracteres de control ASCII no imprimibles, por lo que a la hora de visualizar la cadena podrían aparecer efectos extraños en pantalla.
Tal vez quisiste decir:
Código
  1. for(i=0;i<4;i++)
  2.    password[i]=(int)rand()%10+'0';
;

Más. Si usas malloc para asignar memoria debes usar free para liberarla en cuanto no la uses. La penúltima instrucción de tu programa debería ser
Código
  1. free(contrasena);

Gracias por tu respuesta compi, ya esta el programa listo.

Una duda, en el
Código
  1. for(i=0;i<4;i++)
  2.    password[i]=(int)rand()%10+'0';
;

Por que no funciona sin el "'+0'"?
12  Programación / Programación C/C++ / Re: Problema con rand() en: 12 Abril 2016, 22:48 pm
Código
  1. do{
  2.    aleatorio=(char)rand()%123;
  3. }while(aleatorio<65 && aleatorio>122);

A ver una cosilla. El número aleatorio está entre 0 y 122, por lo que nunca va a ser mayor que 122. Lo que tendrías que hacer es calcular un número aleatorio entre 0 y la diferencia de 122 y 65, y luego sumarle 65 (aleatorio = (char)rand()%(122-65) + 65;).

También tienes que tener en cuenta que tienes que cambiar la semilla del generador de números aleatorios (rand()) con la función srand cada vez que generes un número aleatorio. Te aconsejo que uses srand(clock()).

Gracias por la respuesta compi.

Edito, el problema es que en el primer bucle for de la funcion, no guarda en password los numeros :(
13  Programación / Programación C/C++ / Problema con rand() en: 12 Abril 2016, 20:41 pm
Pues tengo un problema, y es que no me da los valores como numeros, me los da como direcciones de memoria supongo que son. Igualmente al poner en el main al principio "in t p=rand();" me daba un 0 todo el rato, aqui dejo el codigo a ver si me podeis echar una manilla.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. char* crearPassword();
  6.  
  7. int main(int argc, const char * argv[]) {
  8.    srand (time(NULL));
  9.  
  10.    float p=rand();
  11.  
  12.    char* contrasena=crearPassword();
  13.  
  14.    printf("%s",contrasena);
  15.  
  16.    return 0;
  17. }
  18.  
  19. char* crearPassword(){
  20.    int i;
  21.    char numero,aleatorio;
  22.    char *password=malloc(8*sizeof(char))+1;
  23.  
  24.    for(i=0;i<4;i++){
  25.        password[i]=(int)rand()%10;
  26.    }
  27.  
  28.    for(i=4;i<8;i++){
  29.        do{
  30.            aleatorio=(char)rand()%123;
  31.        }while(aleatorio<65 && aleatorio>122);
  32.        password[i]=aleatorio;
  33.    }
  34.  
  35.    return password;
  36. }
14  Programación / Desarrollo Web / Problema con las cookies en: 22 Marzo 2016, 16:34 pm
Estoy haciendo una prueba de formulario y cookies, mi objetivo es guardar las cookies en valores y mostrarlos luego, pero no me hace eso sino que me muestra "nomre=paco,nombre=paco,nombre=paco" en vez de "nombre=paco,apellido=perez,edad=30", pero si hago el alert de document.cookie si me lo muestra bien, las funciones para tratar los datos son estas:

Código
  1. function cookiesSaved(){
  2.    var valor;
  3.  
  4.    //Añadir datos a las cookies
  5.    valor = document.getElementById("nombre").value;
  6.    document.cookie = "Nombre=" + valor;
  7.  
  8.    valor = document.getElementById("apellido").value;
  9.    document.cookie = "Apellido=" + valor;
  10.  
  11.    valor = document.getElementById("edad").value;
  12.    document.cookie = "Edad=" + valor;
  13. }
  14.  
  15. function getValue(word){
  16.    var inicio;
  17.    var final;
  18.    var dato;
  19.    var cadena = document.cookie;
  20.  
  21.    //coger el valor inicial de la cadena
  22.    inicio = cadena.indexOf(word,0);
  23.  
  24.    //coger la longitud de la cadena
  25.    inicio = inicio.length;
  26.  
  27.    //coger la cadena completa
  28.    final = cadena.indexOf(";",inicio);
  29.  
  30.    dato = cadena.substring(inicio,final);
  31.  
  32.    return dato;
  33. }
  34.  
  35. function cookieLoad(){
  36.    var nombre;
  37.    var apellido;
  38.    var edad;
  39.    var cadena = document.cookie;
  40.  
  41.    //asignar los datos a la variable
  42.    nombre = getValue("Nombre=");
  43.    apellido = getValue("Apellido=");
  44.    edad = getValue("Edad=");
  45.  
  46.    //asignar valor a variable
  47.    cadenaHTML = nombre + "," + apellido + "," + edad;
  48.  
  49.    //introducir codigo en el id usuario
  50.    document.getElementById("usuario").innerHTML = cadenaHTML;
  51.    alert(cadena);
  52. }
15  Programación / Desarrollo Web / Re: que hacer para que no se descuadre mi pagina en: 22 Marzo 2016, 14:03 pm
No tiene sentido que le des un -30% en el right, el "-" sobra.
16  Programación / Programación General / Re: Problema con C en: 17 Marzo 2016, 20:14 pm
Gracias compañero por tu respuesta, lo he entendido, por cierto, no puedo usar la funcion strlen porque nos pidieron hacerlo con una funcion propia, hecha por nosotros mismos XD. Muchas gracias!
17  Programación / Programación General / Problema con C en: 17 Marzo 2016, 10:31 am
Hola buenas, ya he estado por aqui preguntando algunas dudas, y mi problema ahora es con C, estamos haciendo una funcion que introduciendole una cadena, nos la devuelva invertida, mi codigo es este, y no consigo que me la imprima invertida, sino que me sale en blanco justo donde deberia salir la cadena.


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int longitud(char * cadena);
  5. char * invertirCadena(char * c1);
  6.  
  7. int main(int argc, const char * argv[]) {
  8.    // insert code here...
  9.  
  10.    char cadena[5] = "Pepe";
  11.    int tamañoCadena=longitud(cadena);
  12.  
  13.    printf("El tamaño de la cadena es %d \n",tamañoCadena);
  14.    char *salida=invertirCadena(cadena);
  15.    printf("La cadena introducida es %s \n",salida);
  16.  
  17.    return 0;
  18. }
  19.  
  20. int longitud(char * s1){
  21.    int i=0;
  22.    while(s1[i]!='\0'){
  23.        i++;
  24.    }
  25.    return i;
  26. }
  27.  
  28. char * invertirCadena(char * c1){
  29.    int i = 0;
  30.    int j=longitud(c1)+1;
  31.    char salida[j];
  32.  
  33.    while(j!=0){
  34.        salida[i]=c1[j];
  35.        ++i;
  36.        j--;
  37.    }
  38.  
  39.    return salida;
  40. }
18  Programación / Java / Re: java no pilla String en: 13 Febrero 2016, 19:28 pm
entiendo shur! gracias  ::)
19  Programación / Java / Re: java no pilla String en: 13 Febrero 2016, 19:15 pm
Vale, para comparar String hay que usar equals.
solucion: if(accion.equals("retiro")){
20  Programación / Java / java no pilla String en: 13 Febrero 2016, 18:52 pm
Pues eso, pido la operacion y al introducirla se para la aplicacion, no entiendo por que.

Código
  1. System.out.println("¿Qué quieres hacer? (retiro/deposito)");
  2. accion = entrada.next();
  3. if(accion=="retiro"){
  4. if(cuenta1.getSaldo()<0){
  5. System.err.println("No puede realizar la operacion.");
  6. }
  7. else{
  8. System.out.println("¿Cuanto quiere retirar?");
  9. saldo= entrada.nextInt();
  10. cuenta1.setSaldo(saldo);
  11. System.out.println("Su accion: "+accion+", Saldo: "+cuenta1.getSaldo());
  12. }
  13. }
Páginas: 1 [2] 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines