|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - m0skit0
Páginas: 1 ... 3 4 [5] 6 7 ... 100
101
« en: Viernes 25 de Marzo de 2011, 00:42 »
Pon un punto de interrupción en la línea y ve viendo la ejecución paso a paso, a ver qué pasa con las variables.
102
« en: Viernes 25 de Marzo de 2011, 00:14 »
pero la opcion 2 no me la quiere ejecutar. ¿Qué datos ingresas? ¿Dónde se queda parado? ¿Te da algún error? Detalla, hombre
103
« en: Viernes 25 de Marzo de 2011, 00:12 »
Te comento; lo de la cadena de palabras había probao con char[81] y tambien funciona, ahora pruebo con lo que pones de cadenas. Ok, pero en C++ se usa string, no char[] o char* (que son más propios de C). pero lo que yo pregunto, que no se como hacer, es pedirle la funcion al usuario, es decir, que este meta exp(x), cos(x^2)... con una variable simbolica (para el tema de programar integrales definidas y esas cosas). Una solucion supongo que podría ser hacer un menu con una serie de funciones y que el usuario escoja una del menu, pero mi idea era que el usuario escogiera cualquiera de las que estan en la libreria. Perdona pero sigo siendo incapaz de encontrar esta pregunta en tu anterior post. Si lo hubieras explicado así desde un principio no habría estos malentendidos Eso se llama en programación "evaluar" una expresión. En C++ no se puede hacer de forma sencilla. No es un lenguaje hecho para eso. Otros lenguajes como Perl o LISP (supongo que también Matlab) son capaces de hacer eso que dices. Te dejo un ejemplo en Perl: #!/usr/bin/perl use strict; use Math::Trig; print("Ingresa una expresion: "); my $expresion = <>;
Sólo válido para funciones trigonométricas.
104
« en: Viernes 25 de Marzo de 2011, 00:01 »
Tal y como lo tienes debería reconocerte los números ingresados. ¿Podrías especificar cuál es tu problema exactamente, es decir dónde te falla exactamente?
105
« en: Jueves 24 de Marzo de 2011, 23:43 »
Leber, aquí no se hace la tarea
106
« en: Jueves 24 de Marzo de 2011, 23:41 »
Todas esas preguntas las resuelves leyendo un buen libro/tutorial sobre C++, que es donde debes empezar. Igualmente te explico un poco por encima tus dudas: Para usar funciones, primero debes declararlas e implementarlas o indicar una librería que contenga funciones. Para el caso de funciones matemáticas, tienes cmath. Las usas tal que: #include <iostream> #include <cmath> using namespace std; int main(void) { cout << cos(5) << endl; cout << exp(2) << endl; return 0; }
Para una referencia sobre cmath: http://www.cplusplus.com/reference/clibrary/cmath/En cuanto a tu segunda duda, estás definiendo metodo como char, es decir, un sólo carácter, es lógico que sólo lea un carácter. Para una palabra o lo que en programación se llama una cadena de caracteres, usa la clase string. Por ejemplo: #include <iostream> #include <string> using namespace std; int main(void) { string metodo; // Así acepta espacios cout << "Inserta una frase de varias palabras > "; getline(cin, metodo); cout << "La frase ha sido: " << metodo << endl; // Así no acepta espacios cout << "Inserta otra frase y veras que un espacio es final de entrada > "; cin >> metodo; cout << "La frase ha sido: " << metodo << endl; return 0; }
Como te digo todo esto viene explicado de lujo en libros (tanto electrónicos como de papel). Saludos
107
« en: Jueves 24 de Marzo de 2011, 16:34 »
Entonces recibes a partir de 0x7fffd1573a23 hasta final de linea. Bueno, para seguir hablando de posiciones de memoria, que muestre los caracteres desde 0x7fffd1573a23 hasta que encuentre un byte (o carácter) nulo. No hay de qué, estamos aquí para compartir lo que sabemos, así que ya sabes, ahora te toca a ti compartir
108
« en: Jueves 24 de Marzo de 2011, 14:21 »
Aunque basta con ponert unsigned long int Ah, ok. En 32 bits y según mi experiencia sizeof(long) = sizeof(int) #include <stdio.h> int main(void) { printf("%d %dn", sizeof(int), sizeof(long)); return 0; }
de ahí que dijera long long Estas casteando la direccion de memoria, y le sumas 3, que es la longitud de la cadena. Entonces, si la direccion de ptr empieza en "0x7fffd1573a20" le sumas 3 quedando: "0x7fffd1573a23" Es correcto, o me estoy liando? Exacto. Hago el cast para que el compilador entienda que no me he equivocado, que efectivamente quiero que a un puntero le sume un entero, pero que luego lo siga considerando un puntero. Y le sumo la longitud de la cadena para posicionarme al final de la cadena que se ha encontrado con strstr(). Ojo y repito que esto sólo funciona si quiero el resto de la cadena (desde la posición X hasta final de cadena). De otro modo que no sea hasta el final de la cadena habría que hacer un memcpy/strncpy en un buffer y añadirle el terminador de cadena antes de poder mostrarlo con printf (o cualquier otra función de manejo de cadenas).
109
« en: Jueves 24 de Marzo de 2011, 13:36 »
Bueno, esto lo malo que tiene C, que es poco portable si te pones a hacer malabares con punteros y casts.
El problema radica efectivamente como dices en el tamaño del puntero y en el uso de unsigned int, que si no recuerdo mal tiene el mismo tamaño en 32 que en 64 bits, de ahí el warning del compilador de que se están sumando dos tipos de tamaños diferentes (warning: cast from pointer to integer of different size) y por tanto pierdes posiblemente medio puntero, con lo que la dirección a la que apunta ya no tiene nada que ver, de ahí la violación de segmento.
Creo que si pones unsigned long long te debería funcionar sin problemas (no puedo probarlo porque no tengo máquina de 64 bits).
Saludos
110
« en: Jueves 24 de Marzo de 2011, 12:51 »
Perdona, lo había puesto sin probar. Weno, acabo de ejecutar ese mismo programa y me funciona correctamente: root@bt:~# cat prueba.c #include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { char line[] = "Hola que tal estas"; char *ptr; ptr = strstr (line, "que"); if(ptr != NULL) { printf("%sn", (char*) ((unsigned int)ptr + strlen("que")) ); } return 0; } root@bt:~# gcc -o prueba prueba.c root@bt:~# ./prueba tal estas root@bt:~#
111
« en: Jueves 24 de Marzo de 2011, 11:51 »
Soy incapaz de añadir SoloCodigo a mis feeds RSS... ¿Alguien sabe cómo hacerlo o simplemente no se puede? Si es lo segundo habría que implementarlo, de hecho phpBB debería traerlo por defecto.
112
« en: Jueves 24 de Marzo de 2011, 09:03 »
Y para los nulos prefiero usar el 0, ¿Para que escribir 4 letras y ocultar lo que en realidad es un puntero nulo? Porque es menos portable. Estás asumiendo que el puntero nulo tiene el valor 0, algo que en otras arquitecturas distintas de Intel no tiene por qué ser así. Por algo existe la constante NULL, que es dependiente de la arquitectura. Tampoco me hago problema con un if en una sóla linea siempre y cuando sea más rápido de leer. A mí me parece menos legible por el simple hecho de tener distintas estructuras de ifs en todo el programa. Prefiero poner todos los ifs iguales, no veo porqué hay que poner unos ifs de una forma y otros de otra, no ayuda a la legibilidad en mi opinión. Pero vamos, es cuestión de formas y gustos. printf("%sn", (char*)((unsigned int)ptr + strlen("Ki"))); eso es la solucion a? Es parecido a printf("%c%c%c%c%cn", cadena [ptr -cadena +6], cadena [ptr -cadena +7], cadena [ptr -cadena +8], cadena [ptr -cadena +9], cadena [ptr -cadena +10]);
pero bien hecho
113
« en: Miércoles 23 de Marzo de 2011, 19:14 »
Perfecto, no olvides mirar cómo lo hacen en la PBL De nada y a disfrutar programando
114
« en: Miércoles 23 de Marzo de 2011, 16:17 »
Tu idea es muy buena, y realmente no es muy complicada de hacer. Pero te aconsejo que pienses más en HTML5 que en Flash, y no postees tu correo si no quieres entrar a formar parte de todas las listas de spam del universo. Saludos
115
« en: Miércoles 23 de Marzo de 2011, 11:39 »
Un poco no, es MUY chapuzas. ¿Y qué pasa si la línea tiene más de 5 caracteres después del marcador? ¿Y por qué empiezas en +6? De todas formas, si lo que quieres es mostrar el resto de la cadena, te vale con - No pongas las condiciones del if seguidas, es poco legible, y usa siempre { }, te ahorrarás futuros quebraderos de cabeza. - Usa NULL, no 0 (tampoco hagas !ptr) - No uses literales en el código, usa constantes (#define) Además ese código es muy poco flexible. Intenta programar de manera que si te toca modificar el código (y créeme que lo vas a tener que modificar) no tengas que mover cielo y tierra.
116
« en: Miércoles 23 de Marzo de 2011, 09:24 »
¿Qué servidor gráfico usas? ¿Xorg? ¿Has comprobado los logs?
117
« en: Martes 22 de Marzo de 2011, 17:50 »
Un placer, que aproveche
118
« en: Martes 22 de Marzo de 2011, 17:47 »
strcpy te sirve perfectamente, aunque yo siempre uso strncpy para evitar infernales bugs de desbordamientos de buffer (que además pueden comprometer la seguridad de tu programa). unsigned int pos; // Suponemos que aquí tienes guardada la posición en que se encuentra la subcadena char* buscar; // Aquí la subcadena que buscas char* cadena; // Aquí la cadena completa char* resto; // Aquí es donde quieres almacenar el resto de la cadena // Recuerda reservar la memoria y liberarla para todos estos punteros ;) [...] char* aux = (char*) ((unsigned int)cadena + pos + strlen(buscar )); strncpy(resto , aux , <tamaño de "resto">);
Ojo que tienes que reservar suficiente memoria para que en resto pueda caber todo lo que venga después de la subcadena.
119
« en: Martes 22 de Marzo de 2011, 16:30 »
NetHogs dicen que es bueno, personalmente no lo he probado. Weno, suerte con ello, ya nos cuentas, aunque definitivamente esto no tiene nada que ver con C/C++
120
« en: Martes 22 de Marzo de 2011, 16:13 »
Mírate la documentación de strstr(), haz el favor
121
« en: Martes 22 de Marzo de 2011, 16:11 »
Podrías currarte un envoltorio (wrapper) que lance la aplicación y la monitorice. También tienes herramientas de monitoreo como te he comentado anteriormente, tales que nethogs, iperf, ntop... Tienes más información aquí. PD: qué raro correr una aplicación propietaria sobre Debian
122
« en: Martes 22 de Marzo de 2011, 13:55 »
Puedes insertar código en tu aplicación que te haga dichas mediciones.
También las herramientas del SO por defecto (aka monitores del sistema) deberían de darte dicha información.
123
« en: Martes 22 de Marzo de 2011, 13:53 »
Raggart, bienvenido a SóloCódigo Por favor antes de responder algún tema fíjate bien en la fecha de la última entrada. No sirve de nada responder temas de más de 2-3 meses de antigüedad, dudo que el OP lo lea Saludos
124
« en: Martes 22 de Marzo de 2011, 08:08 »
Lees el fichero línea por línea y usas strstr() para buscar una subcadena.
Saludos.
125
« en: Lunes 21 de Marzo de 2011, 19:48 »
¿Realmente necesitas escribirlo en un fichero? ¿No puedes simplemente capturar la salida? Me parece un rodeo innecesario.
Páginas: 1 ... 3 4 [5] 6 7 ... 100
|
|
|