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

#841
Ya que estás programando en c++, lo lógico es que hicieses uso de clases, no de structs. En c++ son muy similares pero es muchísimo más natural utilizar clases. No se qué sentido tiene que intenten enseñarte a programar c++ y te obliguen a meter structs al estilo de c.

En cualquier caso, deberías acostumbrarte a leer documentación... ya que al menos en este mundillo va a ser algo básico. Si no te gusta leer documentación deberías plantearte el dedicarte a otra cosa.

Te lo digo básicamente porque si tú pones "structs c" en google, por ejemplo, vas a encontrar documentación de sobra para poder hacer lo que quieres... de hecho la primera entrada, por ejemplo, que es la de la wikipedia, te explica todo lo que necesitas.

Una cosa es que estés atascado en una parte del código y no sepas que falla y otra muy diferente es que no hayas escrito una sola línea.

Cita de: Ccomplica en 25 Octubre 2013, 02:35 AM
Ademas, quisiera saber como debo interpretar el asterisco en el typedef _Eltipodedato*

Ese asterisco está indicando que el tipo que estás definiendo va a funcionar como un puntero.



#842
Programación C/C++ / Re: Unicode en argv
24 Octubre 2013, 17:19 PM
Cuando tu en el main te encuentras con

int main( int argc, char** argv )

char** representa, efectivamente, el array de parámetros... lo que sucede es que el tipo utilizado, char, ocupa 1 byte.

La codificación básica, ASCII, tiene 255 caracteres ( el 0 no lo cuento ), que son los que se pueden representar con 1 byte.

Codificaciones más completas, con caracteres regionales y demás, utilizan otras tablas más grandes y que, por tanto, van a necesitar de más bytes para representar un caracter.

Casualidad o no, cada uno que piense lo que quiera, los primeros 255 valores de las tablas ANSII y UTF-8 son idénticos y se corresponden a la ya conocida tabla ASCII. Esto permite imprimir los caracteres básicos por pantalla independientemente de la codificación elegida.

El problema es que cuando el caracter a leer / imprimir no se corresponde con los indicados en la tabla ASCII. En este caso hay que conocer cual es la codificación que va a usar nuestro dispositivo de salida. Esto nos va a permitir conocer la codificación correcta de todos y cada uno de los caracteres que nos interesan.

La codificación empleada por el dispositivo de salida se puede cambiar para adaptarla a las necesidades, pero eso ya es otra historia.
#843
Programación C/C++ / Re: Comparación de cadenas
24 Octubre 2013, 14:45 PM
Cita de: ivancea96 en 24 Octubre 2013, 14:19 PM
En realidad creo que amchacon puso Cadena 1 refiriendose a una variable, no a una cadena como constante.

Entonces "técnicamente" tendría que haber eliminado los espacios, no?

Cita de: kaostias en 24 Octubre 2013, 14:32 PM
Gracias a todos. De momento me lo intento apañar con este script, sólo tengo el problema de que atoi no está en kernel, y no sé cómo parsear un entero a dígito en kernel.

Tan "complicado" como recorrer la cadena, reconocer el dígito actual, multiplicar por diez el total acumulado y sumarle el valor del dígito actual al acumulado.

Cita de: kaostias en 24 Octubre 2013, 14:32 PM

int reconocedor(char* str, int* dig){
if(strncmp(str, "add ", 4)==1){
*dig = atoi(str[4]);
return 1;
}else if(strncmp(str,"remove ", 7)==1){
*dig = atoi(str[7]);
return 2;
}else if(strcmp(str,"cat") == 1) {
*dig = -1;
return 3;
}
if(strcmp(str, "sort") == 1) {
*dig = -1;
return 4;
}
*dig = -1;
return -1;
}


Creo que no tienes demasiado claro lo que estás haciendo... strcmp compara dos cadenas... si ambas son iguales, devuelve cero, en caso contrario devuelve un número distinto de cero... si chequeas strcmp con 1 ya te digo yo que el código no te va a funcionar.
#844
Programación C/C++ / Re: Comparación de cadenas
24 Octubre 2013, 13:37 PM
Cita de: kaostias en 24 Octubre 2013, 10:11 AM
Un profesor me comentó que existía una macro del tipo

char* str = "add 134";

int aux;
strcmp(str, "add %d",aux)

Que devuelve un número igual a 1 si las cadenas son iguales, y guarda en aux el dígito %d, pero por mucho que busco no logro encontrarlo

No es una macro, es una función y su uso es tal y como te ha comentado amchacon. Las macros son bastante diferentes a las funciones.

Por otro lado no es tan complicado de buscar... tu pon strcmp en google y curiosamente el primer enlace que sale te explica el funcionamiento de dicha función.

Por otro lado, strcmp no es capaz de reconocer parámetros ( lo digo por el %d que has plantado ahí )... compara cadenas caracter a caracter. Si quieres que la comparación busque por conceptos más abstractos ( es decir, primero un texto que representa a un comando y después un número ) tendrás que optar por comprobar tu a mano la secuencia... para ello puedes hacer uso de mi primer mensaje.

Cita de: amchacon en 24 Octubre 2013, 13:23 PM
En C:

strcmp(Cadena 1, Cadena 2);

Devuelve 0 si las cadenas son iguales.

Se te olvidaron las comillas

strcmp("Cadena 1", "Cadena 2");

Se que lo sabías, el comentario era sobretodo para no liar a terceros.
#845
Programación C/C++ / Re: Comparación de cadenas
24 Octubre 2013, 10:00 AM
Si el formato de una instrucción es "comando[espacio/s]argumento", existe una función muy chula llamada strchr que permite dividir una cadena de caracteres a partir de un caracter que hace las veces de delimitador... en tu caso el delimitador sería el espacio.

Después de trocear la cadena recorres las subcadenas y lo suyo es que sólo encontrases dos subcadenas... la primera sería el comando y la segunda el argumento.

El algoritmo también te permitirá trabajar con más de un argumento.

La opción 2 consiste en recorrerte a mano la cadena e ir buscando los espacios para delimitar el comando y los argumentos.
#846
Entiendo por tus comentarios que no tienes mucha idea sobre programación, cierto??

quizás deberías olvidarte por un tiempo de la programación en entornos visuales y centrarte en aplicaciones de consola. Esto te ayudará a comprender mejor el significado de las clases y objetos, cómo se usan y por qué... y de paso puede que aprendas a leer documentación sobre las diferentes APIs que te vas a encontrar.

Intentar aprender a programar y a programar en entornos gráficos todo junto no suele ser muy satisfactorio.
#847
Y exactamente qué código estás usando y que no te funciona??
#848
Cita de: amchacon en 19 Agosto 2013, 18:38 PM
Cuando oigo hablar de Java me da alergia, es una copia de C++ a la que le han truncado muchas cosas (ni punteros, ni operadores sobrecargadas, ni herencia múltiple...). Las pocas ventajas que ofrecen son a nivel de "prevención de errores" (como la comprobación de límites de array en tiempo de ejecución).

A mi me suele dar alergia ver herencias múltiples XDDDD

Muchas veces pienso que se debe a que mucha gente usa la herencia múltiple sin ningún tipo de motivo... simplemente por desconocimiento o dejadez prefieren montar una herencia múltiple aunque sea innecesaria.

Además la herencia múltiple puede dar problemas si se usa sin control... como la herencia en diamante... aunque bien pensado todo en c y c++ puede dar problemas si se usa sin control XDD
#849
visual C++ es un IDE... es decir, un entorno de desarrollo, es decir, que no estás indicando qué tipo de entorno gráfico estás empleando: Windows API, MFC, Qt, GTK...

Además, visual C++ 2010 permite compilar tanto en versión .NET como de forma nativa, por lo que las posibilidades crecen.

Cada tipo de framework gráfico tiene sus características y su propia forma de trabajar... si no especificas más dudo que alguien te pueda ayudar.

Aún así te comento que tu pregunta es tan sumamente concreta que es bastante seguro que esto esté respondido en internet.

Los pasos básicos se limitan a recuperar el texto asociado al item concreto, almacenarlo en alguna suerte de clase string y asignárselo al textbox correspondiente... los pasos concretos, como te he comentado, dependen del framework empleado.

Un saludo.
#850
Prácticamente cualquiera puede poner una pared ... otra cosa es que luego la pared quede recta, bien nivelada y aguante o que se raje al intentar ponerle el primer clavo.

Llevando el caso a este mundillo puedo afirmar que prácticamente cualquiera es capaz de tirar código... pero luego otra cosa es que el código resultante sea robusto,  reutilizable y fácil de mantener.