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

#11
Programación C/C++ / Re: Problema con rand()
12 Abril 2016, 23:26 PM
Cita de: MAFUS en 12 Abril 2016, 23:20 PM
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:
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:

for(i=0;i<4;i++)
   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 free(contrasena);

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

Una duda, en el

for(i=0;i<4;i++)
   password[i]=(int)rand()%10+'0';
;

Por que no funciona sin el "'+0'"?
#12
Programación C/C++ / Re: Problema con rand()
12 Abril 2016, 22:48 PM
Cita de: class_OpenGL en 12 Abril 2016, 22:41 PM
Código (cpp) [Seleccionar]
do{
   aleatorio=(char)rand()%123;
}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 C/C++ / Problema con rand()
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.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

char* crearPassword();

int main(int argc, const char * argv[]) {
    srand (time(NULL));
   
    float p=rand();
   
    char* contrasena=crearPassword();
   
    printf("%s",contrasena);
   
    return 0;
}

char* crearPassword(){
    int i;
    char numero,aleatorio;
    char *password=malloc(8*sizeof(char))+1;
   
    for(i=0;i<4;i++){
        password[i]=(int)rand()%10;
    }
   
    for(i=4;i<8;i++){
        do{
            aleatorio=(char)rand()%123;
        }while(aleatorio<65 && aleatorio>122);
        password[i]=aleatorio;
    }
   
    return password;
}
#14
Desarrollo Web / Problema con las cookies
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 (javascript) [Seleccionar]
function cookiesSaved(){
    var valor;
   
    //Añadir datos a las cookies
    valor = document.getElementById("nombre").value;
    document.cookie = "Nombre=" + valor;
   
    valor = document.getElementById("apellido").value;
    document.cookie = "Apellido=" + valor;
   
    valor = document.getElementById("edad").value;
    document.cookie = "Edad=" + valor;
}

function getValue(word){
    var inicio;
    var final;
    var dato;
    var cadena = document.cookie;
   
    //coger el valor inicial de la cadena
    inicio = cadena.indexOf(word,0);
   
    //coger la longitud de la cadena
    inicio = inicio.length;
   
    //coger la cadena completa
    final = cadena.indexOf(";",inicio);
   
    dato = cadena.substring(inicio,final);
   
    return dato;
}

function cookieLoad(){
    var nombre;
    var apellido;
    var edad;
    var cadena = document.cookie;
   
    //asignar los datos a la variable
    nombre = getValue("Nombre=");
    apellido = getValue("Apellido=");
    edad = getValue("Edad=");
   
    //asignar valor a variable
    cadenaHTML = nombre + "," + apellido + "," + edad;
   
    //introducir codigo en el id usuario
    document.getElementById("usuario").innerHTML = cadenaHTML;
    alert(cadena);
}
#15
No tiene sentido que le des un -30% en el right, el "-" sobra.
#16
Programación General / Re: Problema con C
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 General / Problema con C
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.



#include <stdio.h>
#include <stdlib.h>

int longitud(char * cadena);
char * invertirCadena(char * c1);

int main(int argc, const char * argv[]) {
    // insert code here...
   
    char cadena[5] = "Pepe";
    int tamañoCadena=longitud(cadena);
   
    printf("El tamaño de la cadena es %d \n",tamañoCadena);
    char *salida=invertirCadena(cadena);
    printf("La cadena introducida es %s \n",salida);
   
    return 0;
}

int longitud(char * s1){
    int i=0;
    while(s1[i]!='\0'){
        i++;
    }
    return i;
}

char * invertirCadena(char * c1){
    int i = 0;
    int j=longitud(c1)+1;
    char salida[j];
   
    while(j!=0){
        salida[i]=c1[j];
        ++i;
        j--;
    }
   
    return salida;
}
#18
Java / Re: java no pilla String
13 Febrero 2016, 19:28 PM
entiendo shur! gracias  ::)
#19
Java / Re: java no pilla String
13 Febrero 2016, 19:15 PM
Vale, para comparar String hay que usar equals.
solucion: if(accion.equals("retiro")){
#20
Java / java no pilla String
13 Febrero 2016, 18:52 PM
Pues eso, pido la operacion y al introducirla se para la aplicacion, no entiendo por que.

Código (java) [Seleccionar]
System.out.println("¿Qué quieres hacer? (retiro/deposito)");
accion = entrada.next();
if(accion=="retiro"){
if(cuenta1.getSaldo()<0){
System.err.println("No puede realizar la operacion.");
}
else{
System.out.println("¿Cuanto quiere retirar?");
saldo= entrada.nextInt();
cuenta1.setSaldo(saldo);
System.out.println("Su accion: "+accion+", Saldo: "+cuenta1.getSaldo());
}
}