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

#261
Yo intenté hacer algo por diversión, pero me perdí en la memoria :xD
Es sencillo de usar (no de interpretar), básicamente es un puntero que se mueve por memoria con > aumentas el puntero y con < lo disminuyes, con + aumentas su contenido y con - lo disminuyes y con . imprimes el caracter que contiene el puntero. Lo de los corchetes es un bucle pero es exactamente lo mismo, al principio le pones las veces que quieres que se repita y al final del bucle tienes que decrementar en 1 el puntero del principio para que no quede un bucle infinito. Ah y con la coma ',' lees un byte y lo guardas en la direccion de memoria actual. Un lío, por algo se llama JodeCerebros.
#262
Cita de: kayron8 en 27 Marzo 2013, 00:35 AM
Luego una pequeña tontería, en la línea 11, cuando escribes scanf("%ud",&num);
¿no sería scanf("%d",&num);?
Es que he cambiado el tipo a unsigned int ya que no tiene sentido imprimir -4 asteriscos  :xD de todas maneras me he equivocado sería:
scanf("%u",&num);
No sé porque te genera un bucle infinito, a mi no me lo genera ni en Windows ni en Linux(Ubuntu) sobre el compilador GCC sobre Linux y MinGW sobre Windows y el IDE Codeblocks.
#263
Cita de: Trane! en 27 Marzo 2013, 00:33 AM
Costaria mucho encontrar un error de programacion xd
Jajajajajaja un Hello World en BrainFuck:
+++++ +++++     
[                       
    > +++++ ++     
    > +++++ +++++     
    > +++               
    > +                   
    <<<< -                 
]                   
> ++ .                 
> + .                   
+++++ ++ .           
.                       
+++ .                 
> ++ .               
<< +++++ +++++ +++++ . 
> .                     
+++ .                 
----- - .               
----- --- .           
> + .             
> .             
#264
Pregunta nueva, tema nuevo. De todas maneras lo que tiene que imprimir por pantalla los asteriscos es la función, y ni llamas a la función ni la función hace lo que dice el enunciado. En todo caso sería llamando a la función y pasándole la cantidad de asteriscos a imprimir por pantalla:
#include <stdio.h>
#include <stdlib.h>

void printAsterisks(unsigned int numOfAsterisks);

int main()
{
   unsigned int num = 0;

   printf("Introduce un numero: \n");
   scanf("%u",&num);

   printAsterisks(num);

   system("pause");
   return 0;
}

void printAsterisks(unsigned int numOfAsterisks)
{
   while(numOfAsterisks)
   {
    printf("* ");
    --numOfAsterisks;
   }
}

Creo que deberías darle un repaso al uso de las funciones, porque no sabes usarlas o da la impresión de eso. A una función tu le pasas unos parámetros y o hace una cosa y no devuelve nada como en este caso. O evalúa un problema y devuelve una solución. ¡Pero tienes que llamarla , si no no hace nada!
#265
Programación C/C++ / Re: Problema con struct
26 Marzo 2013, 22:20 PM
Cita de: 85 en 26 Marzo 2013, 21:56 PM
a veces no da error mientras no modifiques algo crítico, es decir si te salís fuera del límite de una cadena y escribís otra, en teoría no pasa nada. Pero si al pasarte fuera, terminás modificando la dirección almacenada de un puntero por ejemplo, entonces si sería una modificación crítica.

array[2] en teoría debería guardar 2 elementos que son array[0] y array[1], si usás [2] sería el tercero. aunque si no tira error debés estar modificando el dato que se encuentra a continuación, o a no ser que el compilador sea inteligente como para haber creado un array de 3.

En este caso si le asigno valores a producto1.precio[1] no da error pero asignandolo a producto.precio[2] sí. Bah acabo de mirar en un libro y llevais razón :/
#266
Cita de: amchacon en 26 Marzo 2013, 21:57 PM
Hey muchas gracias! Funciona pero ahora tengo dos problemas:

- Si la ruta excede los 255 caracteres (como me ha pasado en mi primer intento), falla. Evidentemente he probado a cambiar los tamaños del array, sin resultado alguno.
Bueno pero lo de los 255 carácteres pasa incluso cuando se va a descomprimir con Winrar. Puedes solucionar eso copiandolo en system o creando una carpeta llamada inicio en algún lado con una carpeta corta y copias el archivo y lo pegas, en fin para eso hay mucha flexibilidad.
Cita de: amchacon en 26 Marzo 2013, 21:57 PM
- Por razones que desconozco, el bat no me localiza los ficheros de la carpeta al iniciar. En cambio si lo ejecuto sí *_*
Siempre igual, arreglas una cosa y se desmonta otra...Pues ni idea, intenta ejecutarlo como administrador con alguno de los enlaces que ha pasado 85.
Cita de: 85 en 26 Marzo 2013, 22:01 PM
haber yo sólamente hice una búsqueda..
http://stackoverflow.com/questions/1154701/batch-cmd-adding-files-to-startup-list
http://superuser.com/questions/71190/running-bat-file-at-startup-as-administrator-in-windows-7
http://www.microloft.co.uk/startup.htm
http://www.tomshardware.com/forum/258456-45-autoloading-file-registry-startup
http://news.softpedia.com/news/How-To-Add-an-Application-To-Startup-Using-The-Registry-43488.shtml


y si te falta más código para trabajar con el registro te paso algunos códigos que tenía guardados.
Lo que me hace falta es otro dedo, que este se me ha gastado de darle a la rueda del ratón  :¬¬ :laugh: .Te cito para decirte que el primer enlace que pasaste es para añadirlo al menú de inicio  ;)
#267
Teoricamente con esto debería valer, es curioso, porque no se añade en la clave del registro que le pongo pero funciona, otra cosa, a la función hay que pasarle la dirección completa del bat por eso uso GetCurrentDirectory y despues strcat:
#include <windows.h>

int main(int argc, char *argv[])
{
   HKEY hkey;
   char directorioActual[300];
   char nombreBat[] = "\\MiBat.bat";
   GetCurrentDirectory(255,&directorioActual);
   strcat(directorioActual,nombreBat);

   RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &hkey);
   RegSetValueEx (hkey, "MiBat", 0, REG_SZ, (LPBYTE) directorioActual, strlen(directorioActual) + 1);
   RegCloseKey(hkey);

   return 0;
}

Además has hecho que solucione una duda mía de hace mucho tiempo T.T así que gracias:

http://foro.elhacker.net/empty-t366763.0.html
#268
Cita de: NathanD en 26 Marzo 2013, 20:29 PM


Menudo despiste... Pensaba que la aritmética de punteros ya la dominaba por completo  ;D

Muchas gracias.
Los errores más complicados de ver son los absurdos  :xD , usa el depurador cuando no veas rápido porque es.

¡Un saludo!
#269
Fíjate en esta sentencia:
palabras[i] = '\0';
¿A qué le estás asignando el carácter nulo, al array de caracteres o al array de punteros? :silbar: .
#270
Programación C/C++ / Re: Problema con struct
26 Marzo 2013, 19:25 PM
Cita de: rir3760 en 26 Marzo 2013, 19:05 PM
El elemento "precio[1]" no existe ya que seria el segundo elemento del array.
No me queda muy claro a mí eh, ya que he hecho esto y salen dos direcciones de memoria distintas para el precio y dos valores distintos que los he asignado yo, cuando ¿debería dar error por acceder a una memoria que no es la suya al asignarle los valores?:
#include <stdio.h>
#include <string.h>

typedef struct producto
{
   char nombre_product[30];
   int precio[1];
} producto_n;



int main()
{
   producto_n producto1;
   producto1.precio[0] = 1;
   producto1.precio[1] = 2;
   
   for(int i = 0; i <= 30;++i)
   {
       producto1.nombre_product[i]='A'+i;
       printf("Direcciones de memoria nombre_product[%d]: \t %x \t Valor: %c\n",i,&producto1.nombre_product[i],producto1.nombre_product[i]);
   }
   printf("Direcciones de memoria nombre_product[%d]: \t %x \t Valor: %d\n",0,&producto1.precio[0],producto1.precio[0]);
   printf("Direcciones de memoria nombre_product[%d]: \t %x \t Valor: %d\n",1,&producto1.precio[1],producto1.precio[1]);
   return 0;
}

Siendo esta la salida(en breve la pongo):
Direcciones de memoria nombre_product[0]: 5b6d2250 Valor: A
Direcciones de memoria nombre_product[1]: 5b6d2251 Valor: B
Direcciones de memoria nombre_product[2]: 5b6d2252 Valor: C
Direcciones de memoria nombre_product[3]: 5b6d2253 Valor: D
Direcciones de memoria nombre_product[4]: 5b6d2254 Valor: E
Direcciones de memoria nombre_product[5]: 5b6d2255 Valor: F
Direcciones de memoria nombre_product[6]: 5b6d2256 Valor: G
Direcciones de memoria nombre_product[7]: 5b6d2257 Valor: H
Direcciones de memoria nombre_product[8]: 5b6d2258 Valor: I
Direcciones de memoria nombre_product[9]: 5b6d2259 Valor: J
Direcciones de memoria nombre_product[10]: 5b6d225a Valor: K
Direcciones de memoria nombre_product[11]: 5b6d225b Valor: L
Direcciones de memoria nombre_product[12]: 5b6d225c Valor: M
Direcciones de memoria nombre_product[13]: 5b6d225d Valor: N
Direcciones de memoria nombre_product[14]: 5b6d225e Valor: O
Direcciones de memoria nombre_product[15]: 5b6d225f Valor: P
Direcciones de memoria nombre_product[16]: 5b6d2260 Valor: Q
Direcciones de memoria nombre_product[17]: 5b6d2261 Valor: R
Direcciones de memoria nombre_product[18]: 5b6d2262 Valor: S
Direcciones de memoria nombre_product[19]: 5b6d2263 Valor: T
Direcciones de memoria nombre_product[20]: 5b6d2264 Valor: U
Direcciones de memoria nombre_product[21]: 5b6d2265 Valor: V
Direcciones de memoria nombre_product[22]: 5b6d2266 Valor: W
Direcciones de memoria nombre_product[23]: 5b6d2267 Valor: X
Direcciones de memoria nombre_product[24]: 5b6d2268 Valor: Y
Direcciones de memoria nombre_product[25]: 5b6d2269 Valor: Z
Direcciones de memoria nombre_product[26]: 5b6d226a Valor: [
Direcciones de memoria nombre_product[27]: 5b6d226b Valor: \
Direcciones de memoria nombre_product[28]: 5b6d226c Valor: ]
Direcciones de memoria nombre_product[29]: 5b6d226d Valor: ^
Direcciones de memoria nombre_product[30]: 5b6d226e Valor: _
Direcciones de memoria nombre_product[0]: 5b6d2270 Valor: 1
Direcciones de memoria nombre_product[1]: 5b6d2274 Valor: 2



Es curioso porque si pongo la estructura así:
typedef struct producto
{
    char nombre_product[30];
    int precio[1];
} producto_n;

Se arregla   :¬¬