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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: [1] 2 3
1  Programación / Programación C/C++ / Re: Crear arrays dinamicos en struct en: 12 Noviembre 2016, 04:27 am
Y eso lo haría asi?
Código
  1. show myShow;
  2. myShow.name = (char *)malloc(longitudNombre*sizeof(char));
  3.  
2  Programación / Programación C/C++ / Re: Crear arrays dinamicos en struct en: 11 Noviembre 2016, 19:33 pm
Seguí investigando. Creo que declarar un array dentro del struct no es posible porque al crear una instancia el compilador necesitaría conocer el tamaño de este antes. No se estoy equivocado.
Así que sigo como antes :(
3  Programación / Programación C/C++ / Crear arrays dinamicos en struct en: 11 Noviembre 2016, 13:38 pm
Hola a todos, tengo el siguiente problema. He creado la siguiente estructura, mi intención es que tenga un booleano, un array de caracteres(name)  y uno bidimensional(episodes)
Ejemplo:
    name = {"Name of the serie"}

    episodes = {"season1Title","Season2Title", "Season3Title"}
                       {"episode1","episode1","eisode1"}
                       {"episode2","episode2","eisode2"}
                     
    isAll = true


Código
  1. typedef struct{
  2.    char *name;
  3.    char *episodes;
  4.    bool isAll;
  5. }show;
  6.  

Los datos que almacenará se sabrán en tiempo de ejecución y quería saber si era posible reservar dinámicamente espacio de memoria. En el código los escribí como punteros para mas tarde hacer esto:
Código
  1. show myShow;
  2. myShow.name = (char *)malloc(longitudNombre*sizeof(char));
  3.  
  4.  
¿Esto sería corecto?¿Como lo haría para el array bidimensional? Además me surge la duda de como podría recorrer el array después. Si fuese sumando uno al puntero, creo que tendría que mirar cuando el valor es el byte nulo.
4  Programación / Scripting / Re: [Solucionado][Python] Ingresar número de 4 dígitos en: 8 Noviembre 2016, 14:45 pm
Ya que la duda está resuelta os dejo aquí también el código de Cows and Bulls por si a alguien le resultase de interés,quiere mejorarlo o encuentra algún fallo, que siempre los hay :silbar:
Código
  1. from random import randint
  2.  
  3. secretNumber = "0"
  4. userNumber = "0"
  5. tries = 7
  6. cows = 0
  7. bulls = 0
  8.  
  9. def generateNumber():
  10.    secretNumber = str(randint(1, 9))
  11.    for i in range(3):
  12.        x = str(randint(0, 9))
  13.        while x in secretNumber:
  14.            x = str(randint(0, 9))
  15.        secretNumber += x
  16.    return secretNumber
  17.  
  18. def askNumber():
  19.    userNumber = "0"
  20.    isCorrect = False
  21.    while len(userNumber)!=4 or not isCorrect  or userNumber[0] == "0":
  22.        userNumber = raw_input("Type a 4 digit number between 1000 and 9999.\nDo not repeat any digit: ")
  23.        for i in range(len(userNumber)):
  24.            if userNumber.count(userNumber[i]) > 1:
  25.                isCorrect = False
  26.                break
  27.            else:
  28.                isCorrect = True
  29.    return userNumber
  30.  
  31.  
  32. print" _________________________"
  33. print"< Welcome to Cows & Bulls >"
  34. print" -------------------------"
  35. print"        \  ^__^"
  36. print"         \ (oo)\_______"
  37. print"            (__)\      )\/\\"
  38. print"                ||----w |"
  39. print"                ||     ||\n"
  40. secretNumber = generateNumber()
  41.  
  42.  
  43. while tries>0:
  44.    userNumber = askNumber()
  45.    if userNumber == secretNumber:
  46.        print"*************************************************"
  47.        print"*Congratulations, you guessed the secret number.*"
  48.        print"*************************************************"
  49.        break    
  50.  
  51.    for i in range (len(secretNumber)):
  52.        if userNumber[i] == secretNumber[i]:
  53.            bulls +=1
  54.        elif userNumber[i] in secretNumber:
  55.            cows +=1
  56.  
  57.    print "FAIL: %d cows and %d bulls. You still have %d attempts\n" %(cows, bulls, tries-1)
  58.  
  59.    tries -=1
  60.    bulls = 0
  61.    cows = 0  
  62.  
  63.  
  64. if tries == 0:
  65.    print "You got out of attempts!\nThe secret number was %d" %int(secretNumber)
  66.  
  67.  
  68.  
  69.  
5  Programación / Scripting / Re: [Python] Ingresar número de 4 dígitos en: 8 Noviembre 2016, 12:46 pm
Solucionado. La función count() me vino perfecta, gracias! :D
Dejo aquí el código funcional:
Código
  1. def askNumber():
  2.    userNumber = "0"
  3.    isCorrect = False
  4.    while len(userNumber)!=4 or not isCorrect  or userNumber[0] == "0":
  5.        userNumber = raw_input("Please type a 4 digit number between 1000 and 9999, do not repeat any digit: ")
  6.        for i in range(len(userNumber)):
  7.            if userNumber.count(userNumber[i]) > 1:
  8.                isCorrect = False
  9.                break
  10.            else:
  11.                isCorrect = True
  12.    return userNumber
  13.  
6  Programación / Scripting / Re: [Python] Ingresar número de 4 dígitos en: 4 Noviembre 2016, 16:07 pm
1232 estaría mal también. No había pensado en ese caso... 
7  Programación / Scripting / Re: [Python] Ingresar número de 4 dígitos en: 4 Noviembre 2016, 15:58 pm
no se que intentas hacer con

Código:
userNumber[i] == userNumber[i-1]:

pero para este tipo de problemas es más estetico un do-while

si usas break se aplicacrá dentro del ciclo donde esté....


exactamente que necesitas hacer a demás de ver que tenga 4 dígitos? (cosa que si tienes correcta, pero no comprobaste si el primer dígito es 1 y si son números)
Es cierto que no compruebo si son números, pero para este ejercicio no es necesario comprobarlo, se entiende que el usuario sólo introducirá números.
Con esto:
Código
  1. userNumber[i] == userNumber[i-1]:
lo que hago es asegurarme de que dentro de userNumber no haya dos números iguales.
Además de que tenga 4 dígitos, el numero no puede empezar en "0"(lo compruebo después del for)
Código
  1.        if userNumber[0] == "0":
  2.            isCorrect = False
Y ninguno de los dígitos debería repetirse.
Ejemplo-->
    1234 Bien
    7648 Bien
    0123 Mal
    1223 Mal
    9999 Mal
8  Programación / Scripting / [Solucionado][Python] Ingresar número de 4 dígitos en: 4 Noviembre 2016, 15:17 pm
Buenas tardes, tengo esta duda y os la presento para pediros ayuda.
Desde la facultad me han mandado hacer el juego de Cows and Bulls en Python.
Un requisito a implementar es que el usuario debe introducir un número de 4 dígitos entre el 1000 y el 9999, además no puede repetirse ninguno de ellos, mientras no se cumplan esas condiciones el programa pedirá que ingreses un numero nuevo. El número debo guardarse como un string.
Esto es lo que hice:
Código
  1. def askNumber():
  2.    userNumber = "0"
  3.    isCorrect = False
  4.    while len(userNumber)!=4 and not isCorrect:
  5.        userNumber = raw_input("Please type a 4 digit number between 1000 and 9999, do not repeat any digit: ")
  6.        for i in range(1, len(userNumber)):
  7.            if userNumber[i] == userNumber[i-1]:
  8.                isCorrect = False
  9.            else:
  10.                isCorrect = True
  11.        if userNumber[0] == "0":
  12.            isCorrect = False
  13.    return userNumber
  14.  
El problema viene cuando por ejemplo introduzco "1223". isCorrect se vuelve False cuando compara los 2 doses pero se vuelve True al final del for. ¿Cómo podría hacer para que esto no sucediese? ¿Si introdujese un "break" entre las líneas 8 y 9 actuaría en el for o en while?
Gracias de antemano.
9  Programación / Programación C/C++ / Re: Ayuda con el operador != en: 8 Noviembre 2014, 10:57 am
Hola,
Pues si era eso ;-) . Muchas gracias, no sabía cual era el problema y todo por no leer el código más a fondo.
Respecto a lo que comentas, si, eso es lo que quiero hacer  ;D.
Sobre posicionSatelite[12], no puedo eliminar el resto porque la función api.getMyZRState() devuelve 12 valores. Pensé en pasar los 3 primeros valores de posicionSatelite[12] a otro array y comparar este con MovimientoEsferico[3].
10  Programación / Programación C/C++ / Ayuda con el operador != en: 8 Noviembre 2014, 00:19 am
Buenas noches.
Haciendo un proyecto de clase me he encontrado con este error:
invalid operands of types ‘float’ and ‘float [12]’ to binary ‘operator!=’
El error se encuentra en el bucle while que señalo en el código. Por lo que entiendo surge de intentar utilizar el operador con dos tipos distintos de variables, pero ambos son arrays :huh:
¿Alguien podría ayudarme a saber que pasa? Muchas gracias por adelantado.
Código
  1. void MovimientoEsferico(){
  2.    PosicionInicialCartesianasAEsfericas();
  3.  
  4.    float MovimientoEsferico[3];
  5.    MovimientoEsferico[0]=posicionInicialEsferica[0]*sinf(posicionInicialEsferica[1])*cosf(posicionInicialEsferica[2]);
  6.    MovimientoEsferico[1]=posicionInicialEsferica[0]*sinf(posicionInicialEsferica[1])*sinf(posicionInicialEsferica[2]);
  7.    MovimientoEsferico[2]=posicionInicialEsferica[0]*cosf(posicionInicialEsferica[1]);
  8.  
  9.    float diferenciaX = 0;
  10.    float diferenciaY = 0;
  11.    float diferenciaZ = 0;
  12.    float resultadoDivisionX = 0;
  13.    float resultadoDivisionY = 0;
  14.    float resultadoDivisionZ = 0;
  15.  
  16.    float posicionSatelite[12];
  17.    api.getMyZRState(posicionSatelite);
  18.  
  19.    //X
  20.    if(MovimientoEsferico[0]>posicionFinal[0]){
  21.        diferenciaX = MovimientoEsferico[0]-posicionFinal[0];
  22.        resultadoDivisionX = diferenciaX/6;
  23.        resultadoDivisionX = resultadoDivisionX*-1;
  24.    }
  25.    else if(MovimientoEsferico[0]<posicionFinal[0]){
  26.        diferenciaX = posicionFinal[0]-MovimientoEsferico[0];
  27.        resultadoDivisionX = diferenciaX/6;  
  28. }
  29. //Y
  30.    if(MovimientoEsferico[1]>posicionFinal[1]){
  31.        diferenciaY = MovimientoEsferico[1]-posicionFinal[1];
  32.        resultadoDivisionY = diferenciaY/6;
  33.        resultadoDivisionY = resultadoDivisionY*-1;
  34.    }
  35.    else if(MovimientoEsferico[1]<posicionFinal[1]){
  36.        diferenciaY = posicionFinal[1]-MovimientoEsferico[1];
  37.        resultadoDivisionY = diferenciaY/6;
  38.    }
  39. //Z
  40.    if(MovimientoEsferico[2]>posicionFinal[2]){
  41.        diferenciaZ = MovimientoEsferico[2]-posicionFinal[2];
  42.        resultadoDivisionZ = diferenciaZ/6;
  43.        resultadoDivisionZ = resultadoDivisionZ*-1;
  44.    }
  45.    else if(MovimientoEsferico[2]<posicionFinal[2]){
  46.        diferenciaZ = posicionFinal[2]-MovimientoEsferico[2];
  47.        resultadoDivisionZ = diferenciaZ/6;
  48.    }
  49.  
  50. MovimientoEsferico[0] = MovimientoEsferico[0]+resultadoDivisionX;
  51. MovimientoEsferico[1] = MovimientoEsferico[1]+resultadoDivisionY;
  52. MovimientoEsferico[2] = MovimientoEsferico[2]+resultadoDivisionZ;
  53. api.setPositionTarget(MovimientoEsferico);
  54.    while ((posicionSatelite[0]!=MovimientoEsferico[0])&&(posicionSatelite[1]!=MovimientoEsferico[1])&&(posicionSatelite[2]!=MovimientoEsferico))//en este bucle while esta el error//{
  55. api.getMyZRState(posicionSatelite);
  56. api.setPositionTarget(MovimientoEsferico);
  57. }
  58.  
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines