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

#291
edito: perdonad me he confundido xD si alguien puede borrar el post lo agradeceria
#292
supongo que lo mas sencillo seria hacer lo que dice do-while, pero como alternativa podrias buscar en google sobre cmex, una manera de unir lenguaje c/c++ y matlab. no tengo experiencia ni con una manera ni con la otra, asi que mas no puedo ayudarte.

un saludo!
#293
he vuelto a mirar el post y me he fijado en esto:

CitarDado un numero entero positivo de segundos, se desea convertirlo a días.
En el archivo segundos.in se informa el número de segundos el cual
puede tener hasta 100 dígitos decimales, como una secuencia de dígitos.

hasta 100 digitos decimales significa que va desde 0 hasta 9.99e99 y con un unsigned de 64 bits "solo" llegas hasta 2^64=1.84e19, por lo que deberas buscar la manera de manejar numeros tan grandes (con eso no puedo ayudarte ya que no tengo ni idea, solo comentaba para que lo tuvieras en cuenta).

un saludo!
#294
1) fijate en este hilo donde usan un entero de 64 bits:
http://foro.elhacker.net/programacion_cc/ayuda_con_ejercicio_en_c-t374559.0.html

2) suponiendo que a sea un entero de 64 bits:
for (i=0; i<64; i++)
     if ((a>>i) & 1) contador++;


un saludo!
#295
podrias usar un sensor de luminosidad colocado detras de la puerta para que no se viera mucho, de manera que cuando la puerta se abre (se acerca a la pared) se va haciendo sombra en esa parte. normalmente estos sensores dan la salida en corriente, por lo que necesitarias un circuito convertidor corriente-tension que lo podrias hacer con un amplificador operacional (buscalo en wikipedia). luego ya seria usar otro AO como comparador, por ejemplo usandolo de manera que cuando la tension baje mas que un cierto limite (la puerta se abre, se hace sombra por lo que la luminosidad disminuye) el AO entregue a su salida el nivel bajo te tension. conectando el timbre a la alimentacion y a la salida del AO, entonces funcionaria. si no se superase este limite, el AO entregaria el nivel alto de tension, por lo que no habria diferencia de tension en el timbre y no pitaria. para seleccionar este nivel de referencia, deberias usar un divisor de tension con algun potenciometro para poderlo ajustar una vez este montado y que funcione como tu quieras.

quizas no sea la mejor manera, pero al menos tienes algo por donde empezar a buscar. un saludo!

pd. sino siempre puedes hacer lo que dice stakewinner00, seguro que hay kits asi y son mucho mas faciles de montar, mas aun si no tienes muchos conocimientos de elctronica.
#296
bueno me parece haberlo visto 2 o 3 veces y como tenia cierto sentido (por lo de evitar spam) pues crei que era cierto lo de que es ilegal. la ultima vez esta misma tarde en este hilo:

http://foro.elhacker.net/juegos_y_consolas/emulador_game_boy_advance-t374570.0.html;msg1795850#msg1795850

bueno no es que un usuario obligue a que quite el link, sino que lo avisa creyendo supongo que es ilegal, algo que yo tambien pensaba.

pero bueno, que si no es ilegal entonces este post no tiene mucho sentido y pido disculpas por ello.

la proxima vez mirare las reglas antes de sugerir algun cambio en ellas :silbar:
#297
buenas a todos,

tengo una pregunta y es que, por que es ilegal poner estos enlaces en el foro, sea lo que sea a lo que apunta?

me refiero a que, si el enlace realmente tiene utilidad y el usuario ha aportado algo que se agradece, que mas da si gana algo con ello? las dos partes (el que ayuda y el ayudado) salen ganando de esta manera.

entiendo que sea ilegal para evitar spam, pero se podria hacer alguna regla no tan extrema. por ejemplo, si el link puesto no tiene nada que ver con el tema y es puro spam, pues se le da un aviso al usuario o bueno eso ya lo dejo en las manos de quien le toque decidir. en cambio, si el link es util, pues que no ocurra nada. los mismos usuarios del tema en cuestion que visiten el link, pueden reportar en un momento y sin esfuerzo en caso de que se tratase de spam.

es solo una idea, pero viendo que ya hay usuarios (no moderadores) que avisan a quien pone estos links para que lo quiten, pienso que no requeriria un esfuerzo extra ni nada. simplemente estos usuarios deberian reportar a un moderador en el caso de que fuera spam.

gracias por la atencion, un saludo!
#298
para saber si algun numero es divisible por otro numero, se suele usar el operador de resto o mod '%'. por ejemplo, si quieres saber el resto de hacer una division entera de 7 entre 3, te quedaria:
7 / 3 = 2 (cociente)
7 % 3 = 1 (resto)


en el caso de tu ejercicio, es lo mismo pero sabiendo que 1 minuto tiene 60 segundos y que 1 hora tiene 60 minutos (o 3600 segundos). por ejemplo:
140 segundos
minutos = 140 / 60 = 2 minutos
segundos sobrantes = 140 % 60 = 20 segundos
resultado: 2 minutos y 20 segundos


espero habertelo aclarado. un saludo!
#299
vengo de estar leyendo un rato un codigo bastante denso y me da pereza leer el tuyo y encontrar donde falla... te dejo un codigo que funciona, es algo diferente al tuyo ya que yo por ejemplo leo caracter por caracter llevando la cuenta de los saltos de linea seguidos que se va encontrando, pero bueno te lo dejo por si te interesa mirartelo y sacar alguna idea.

#include <stdio.h>

int main(int argc, char** argv) {

if (argc != 2) {
printf("MODO DE USO: %s <archivo>\n", argv[0]);
return 0;
}

FILE *f1=fopen(argv[1], "r");
FILE *f2=fopen("temp.txt", "w");
int bytesLeidos, contador=0; // contador dice el numero de '\n' seguidos que encuentra
char aux;

while (1)
{
bytesLeidos=fread(&aux, sizeof(char), 1, f1);

if (bytesLeidos > 0) {

contador= (aux=='\n') ? contador+1 : 0;

// se escribe solo si el caracter es distinto de '\n' o si es el primer
// '\n' que encuentra
if (contador==1 || aux!='\n') fwrite(&aux, sizeof(char), 1, f2);

} else break;
}

printf("Proceso completado.\n");
fclose(f1);
fclose(f2);

remove(argv[1]);
rename("temp.txt", argv[1]);

return 0;
}


xiruko:~$ cat archivo.txt
0;Televisor



1;Radio

2;Microondas
3;Video


4;Movil
xiruko:~$ gcc texto.c -o texto
xiruko:~$ ./texto archivo.txt
Proceso completado.
xiruko:~$ cat archivo.txt
0;Televisor
1;Radio
2;Microondas
3;Video
4;Movil
xiruko:~$


un saludo!
#300
uff a ver nunca he usado esta manera para crear distintos hilos de ejecucion, pero creo que en algo puedo ayudar:

1) en cuanto a tu duda inicial:

switch(getpeername(sockfd, &sockbuf, &stsize))
   {
    case 0: break;
    case ENOTCONN:
     printf("Proceso %i: reconectando socket...", ((struct params*)p)->thread);
     //...


la funcion getpeername() devuelve 0 en caso de que vaya bien, y -1 en caso de error, y es entonces cuando le da un valor a errno que es el que tu tienes que comprobar. el codigo seria algo asi:

aux=getpeername(sockfd, &sockbuf, &stsize);
if (aux<0 && strcmp("ENOTCONN", strerror(errno))==0) {
     //reconectando socket... etc


2) veo muchas reservas de memoria pero ningun free(). aunque lo normal es que los so modernos se encarguen de liberarla al finalizar el programa, nunca esta de mas ponerlo por si las moscas y para evitar posibles quebraderos de cabeza. te dejo un enlace corto que habla sobre ello:

http://cboard.cprogramming.com/cplusplus-programming/76877-general-malloc-question.html

3) cuando declaras el array de structs:

struct params *p = (struct params*)malloc(atoi(argv[1])*sizeof(struct params));

lo haces como un puntero, pero luego accedes a ellos de esta manera:

p[j].thread = j;
p[j].port = atoi(argv[3]);


no deberias acceder a los campos del struct asi:

*(p[j]).thread=j;

o lo que es lo mismo, asi:

p[j]->thread=j;

en lugar de como tu lo haces? tenia entendido que hacerlo como tu lo haces era solo para un struct estatico. quizas he dicho una burrada, pero me refiero a que pensaba que era para una variable que la declaras asi (lo de estatico no se si esta bien dicho):

struct params p;

y no como un puntero. te funciona bien? si es asi ya lo se para la proxima vez. aunque entonces no se que utilidad tiene el operador '->'.

4) es un codigo que aunque no sea demasiado largo es bastante denso. tu eres quien lo ha codeado y quizas no tengas problemas, pero para quien quiera leerlo e intentar entenderlo cuesta bastante. unos cuantos espaciados y algun que otro comentario ayudarian bastante, y tambien te ayudarian a ti en caso de que dentro de unos meses quieras volver a mirarte el codigo.


5) si no te es mucha molestia podrias colgar el codigo cuando lo acabes ya que a mas de uno le vendra bien para aprender (yo incluido).

un saludo!

pd. estas haciendo este flooder para aquel proyecto en el que os juntasteis unos cuantos de este foro?