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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 ... 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 [51] 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 ... 102
501  Programación / Programación C/C++ / Re: Ayuda en: 10 Octubre 2019, 15:09 pm
En vez de poner dos mensajes seguidos es mejor que modifiques el primero e incluyas lo que necesites.

Para lo que quieres hacer tienes una librería que es <ctype.h> en la que tienes funciones como <isdigit()>, <isspace()>, <ispunct()>, <isgraph()>, etc. Vamos, para saber qué tipo de carácter tienes.
Te dejo un enlace donde aparecen las funciones que tienes y una tabla para que veas qué caracteres se consideran de puntuación y cuáles se consideran graficables, etc.
http://www.cplusplus.com/reference/cctype/?kw=cctype
502  Programación / Programación C/C++ / Re: AYUDA CON UN PROGRAMA en: 10 Octubre 2019, 02:56 am
Eso de "agrupar" es muy ambiguo. No sé qué es lo que te están pidiendo exactamente... :rolleyes:
503  Programación / Programación C/C++ / Re: Problema en C - Numeros aleatorios sin que se repitan en: 10 Octubre 2019, 02:45 am
Si lo paso a C, te lo estoy dando hecho. Simplemente tienes que leer ese fragmento de pseudocódigo y si entiendes lo que hace, intenta hacerlo en C aunque sea a tu manera. Lo bueno del pseudocódigo es precisamente que es fácil de entender sólo con leerlo.
Si hay alguna cosa que no entiendas, pregunta. También si empiezas a hacer el código y pones lo que llevas, puedo ayudarte mejor a completar lo que te falte.
504  Programación / Programación C/C++ / Re: Problema en C - Numeros aleatorios sin que se repitan en: 9 Octubre 2019, 13:04 pm
De las dos ideas que te han dado me gusta más la segunda así que te la explico un poco en pseudocódigo (esto es para que lo entiendas, no es C, cuando lo entiendas tú eres el que lo tiene que hacer en C y si tienes problemas poner el código para poder ayudarte).
Código:
numeros := {1,2,3,4,5,...,89,90} // el array de numeros
numerosGenerados := 0 // indica la cantidad de numeros que hemos generado
MIENTRAS numerosGenerados < limiteGenerados HACER // limiteGenerados seria la cantidad de numeros que queremos calcular
    indiceAleatorio := generarAleatorio(0 + numerosGenerados, 89)
    numeroAleatorio := numeros[indiceAleatorio]
    intercambiar(numeros[indiceAleatorio], numeros[numerosGenerados])
    numerosGenerados := numerosGenerados + 1
FIN MIENTRAS
La idea es sacar un índice aleatorio entre 0 y 89 (en la primera iteración) y ese índice servirá para sacar el número aleatorio. Ponemos el número que ya hemos sacado en la posición 0 y el de la posición 0 en la posición del índice aleatorio. Así en la segunda vuelta obtendremos un índice entre 1 y 89 y como el valor que hemos sacado antes está en la posición 0, no volverá a salir.
En resumen, vamos dejando los valores que ya han salido a la izquierda y cogemos valores nuevos sólo de la derecha.
Si lo entiendes, crea eso mismo pero en C. :-X
505  Programación / Programación C/C++ / Re: C: Encontrar los 2 numeros mayores en: 8 Octubre 2019, 13:21 pm
No se reabren temas antiguos (y este es de 2015...). Tenías que haber abierto un tema nuevo para tu problema y poner tu código para que podamos ver cómo lo estás haciendo. (El código entre etiquetas de Código GeSHi).
506  Programación / Programación C/C++ / Re: Algoritmo Pegasus en: 7 Octubre 2019, 18:43 pm
No encuentro información acerca de ese algoritmo y no lo conozco así que si puedes hacer el favor de añadir una explicación o un desarrollo de éste, será más fácil poder ayudarte.
PD: Edita el primer mensaje y coloca todo lo que sea código entre etiquetas de Código GeSHi seleccionando el lenguaje que corresponda. (Tienes un desplegable que pone "Código GeSHi" encima del cuadro de edición del mensaje para ver los lenguajes disponibles). :-X
507  Programación / Programación C/C++ / Re: Cual es el sentido de las funciones virtuales puras? en: 5 Octubre 2019, 23:40 pm
Yo diría que las funciones virtuales puras lo que hacen es imponer condiciones al programador. Imagina que creas una clase <Animal> que no vas a instanciar directamente sino que la vas a usar de molde para crear otras clases hijas que hereden de <Animal>. Entonces en esta clase <Animal> deberías crear funciones virtuales puras como <comer()>, <relacionarse()>, etc. Lo que consigues al hacerlas virtuales puras es que cuando crees un tipo de animal concreto y éste herede de <Animal> te verás "obligado" a redefinir esas funciones virtuales puras.

Puedes verlo también de otra forma. Tú puedes crear una clase abstracta de la que heredarán otras clases pero resulta que las clases hijas no las vas a hacer tú, sino que lo harán diferentes programadores, pero para que todo funcione bien tú necesitas decir al resto de programadores que sus clases deben contener una serie de funciones sí o sí. Cómo lo haces? Creas esas funciones como virtuales puras en la clase abstracta.
En el mismo ejemplo de antes, tú dices a un grupo de personas que se inventen unos animales y que tengan las características que ellos quieran PERO que todos los animales deben emitir un ruido, el que sea. Pues creas una función virtual pura que sea <emitirRuido()> y cuando las demás personas hagan que sus clases hereden de <Animal> deberán hacer que cada clase implemente de alguna forma esa función <emitirRuido()>.

Esto yo por ejemplo lo vi bastante bien al aprender Java donde esto se usa en las interfaces porque Java no permite la herencia múltiple. No lo he usado más que en un par de códigos pequeños en forma de "apuntes" pero digamos que así es cómo yo lo entiendo. Puede que tenga otros usos o interpretaciones y quien las conozca puede corregirme. :-X
508  Programación / Programación C/C++ / Re: Operadores incremento/decremento en prefijo y postfijo. en: 5 Octubre 2019, 16:33 pm
En un ciclo for, donde se usa para incrementar la variable de control, el compilador puede lucirse con poco, usa la versión más eficiente sin preguntar. Sin trucos ++i hace menos cosas que i++.
Con lo que está en negrita, quieres decir que tanto si se usa el postincremento como el preincremento, el compilador lo optimizará al mismo nivel? Es decir, que daría igual usar uno que otro? Lo digo porque yo era de los que empezó a programar y a hacer los for con i++ hasta que me dijeron que era mejor usar ++i, pero claro, eso me ha chocado con el tema de que el preincremento sí es mejor pero cuando se trata de objetos y no de tipos primitivos.

Porque si compilamos el código original de MAFUS con optimizaciones, como es debido, veremos que tampoco es de utilidad, ya que todos los compiladores modernos se darán cuenta de que no hace nada, así que eliminarán todas las instrucciones y simplemente harán que main retorne 0.
Cierto. Sí que se me ocurrió añadir las opciones -O1 y -O2 y se ve eso que dices. En el primer caso lo que se obtiene es esto:
Código
  1. mov     eax, 0
  2. ret
Y en el segundo caso lo que se obtiene es:
Código
  1. xor     eax, eax
  2. ret
Por lo que es cierto que el compilador ve que no se usan las variables para nada y entonces omite las sentencias.
509  Programación / Programación C/C++ / Re: Necesito ayuda para este programa en: 4 Octubre 2019, 23:16 pm
Supongo que si te han pedido un ejercicio así os habrán explicado un poco sobre programación orientada a objetos, no? Conceptos como los de clase, constructor, atributos, funciones miembro, etc.
Lo que te están pidiendo es que crees una clase llamada Tiempo con una serie de atributos privados: hora, minuto y segundo.

Si no sabes de estas cosas que te he dicho pregunta más específicamente qué es lo que no entiendes o qué dudas tienes. También puedes buscar información sobre clases para poder resolver el ejercicio.
510  Programación / Programación C/C++ / Re: Operadores incremento/decremento en prefijo y postfijo. en: 4 Octubre 2019, 23:11 pm
En realidad, como curiosidad, y contrario a la engañosa creencia antes mencionada, en algunos casos el postincremento/postdecremento (con tipos básicos) en teoría podría ser más eficiente que el preincremento, ya que el preincremento genera una dependencia de datos que no existe con el post, por lo que en este último caso podría haber un mejo aprovechamiento de los pipelines del procesador. Eso sí, en la práctica yo nunca lo he visto, pero he leído de dos programadores que lo afirman.
No había procesado esto bien y la verdad nunca habría pensado que eso fuera así ya que yo creía que el operador que mantiene una dependencia es el postfijo que necesita usar otro registro (como se veía en los ensambladores de MAFUS y engel lex) para almacenar el valor todavía sin incrementar. Sin embargo, me parece curioso aunque se me escape de las manos el entenderlo.

Entonces para resumir: el estándar C++17 especifica que primero se evalúa la parte de la derecha y después la de la izquierda pero los efectos colaterales siguen sin estar definidos; a diferencia de Java que evalúa de izquierda a derecha y especifica que los efectos colaterales se resuelven inmediatamente después.

Cada lenguaje tiene su sintaxis y su especificación. Esperar resultados idénticos es pecar de ingenuo (precisamente porque la mayor parte de las veces así sucederá, teniendo ambos lenguajes un origen común).

Ese "Quiero terminar de entenderlo", me suena a perder el tiempo...
En vez de hacer pruebas, lo que tienes que hacer es consultar la especificación del lenguaje (de uno y otro)... para ver cuál es el orden de precedencia de la asignación. Ya está, 1 minuto de lectura, no varios días haciendo pruebas... si no, aprender se te hará eterno.
Si la especificación del lenguaje es ambigua en tal punto, entonces ten por cierto que cada compilador tiene vía libre para hacer como le dé la gana. Ahí, si procede hacer pruebas para ver como se comporta el compilador que estés usando.
Es posible que algunas personas lo vean como una pérdida de tiempo pero me interesaba saber cuáles eran las diferencias entre estos dos lenguajes en este aspecto y al final parece que lo estoy consiguiendo con las aportaciones del resto de miembros y sobre todo con las explicaciones de RayR, que agradezco.
También es verdad que consultando las especificaciones de cada lenguaje acabaría antes pero entre que no sé dónde localizarlas ni hasta donde llegaría a entender pues... supongo que dentro de mis posibilidades haré lo que pueda y en este caso lo que podía hacer eran pruebas para intentar sacar alguna conclusión de forma práctica. He visto que no llegaba a nada con pruebas pues entonces he probado en el foro.
Si todos nos tuviésemos que buscar la vida yendo a las fuentes oficiales de cada tema, no servirían de nada los foros porque lo que cualquiera pueda afirmar en un foro tendrá que estar apoyado por algún tipo de documentación oficial.
Páginas: 1 ... 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 [51] 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 ... 102
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines