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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 ... 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 [47] 48 49 50 51
461  Programación / Programación C/C++ / Re: [C] ayuda, programa compila bien pero no cumple la funcion en: 15 Abril 2012, 23:21 pm
pues no se si funciona bien ya que aun no he conseguido que funcione... xD

he probado con la funcion gets(), he buscado en google y dice que esta en la libreria stdio.h, pero cuando ejecuto el programa es como si no hubiera ninguna funcion gets() y no me deja introducir la frase.

sabes por que pasa esto?

diria que es n+1 ya que me he hecho un par de ejemplos con papel y boli y se cumplia para n+1, aunque quizas tengas razon y sea solo n. a ver cuando pueda hacerlo funcionar...
462  Programación / Programación C/C++ / Re: [C] ayuda, programa compila bien pero no cumple la funcion en: 15 Abril 2012, 22:57 pm
muchas gracias por contestar, justo ahora estaba buscando en google acerca de la funcion scanf y los espacios...

respecto a lo de if(n+1==lw), n corresponde al indice de la cadena y empiezo por n=0, y lw son los caracteres que tiene la palabra a buscar. asi que si una palabra tiene 4 caracteres, significa que su indice va de 0 a 3, por eso ahi hago n+1, ya que si en el for no se ha encontrado ninguna diferencia de caracteres, n valdra 3 y lw 4.
463  Programación / Programación C/C++ / [C] ayuda, programa compila bien pero no cumple la funcion (solucionado) en: 15 Abril 2012, 21:21 pm
buenas gente, estoy tratando de hacer un programa que le pases una palabra y una frase, y te diga cuantas veces esta la palabra en la frase. estoy tratando de hacerlo con punteros y funciones para ir practicando, asi que seguro que no es la manera mas eficiente de hacerlo. pero bueno, el codigo es el siguiente:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define WORD 10
  5. #define SENTENCE 50
  6.  
  7. int longitud_cadena (char* a);
  8. void comparar_cadenas (char* s, int i, char* w, int lw, int* words);
  9.  
  10. int main() {
  11.  
  12.  char *w,*s;
  13.  int i,long_w,long_s,words;
  14.  
  15.  w=(char*) calloc(WORD,sizeof(char));
  16.  s=(char*) calloc(SENTENCE,sizeof(char));
  17.  
  18.  words=0;
  19.  
  20.  printf("Introduce una palabra de maximo %d caracteres:\n",WORD-2);
  21.  fgets(w,WORD,stdin);
  22.  long_w=longitud_cadena(w);
  23.  
  24.  printf("Introduce una frase de maximo %d caracteres:\n",SENTENCE-2);
  25.  fgets(s,SENTENCE,stdin);
  26.  long_s=longitud_cadena(s);
  27.  
  28.  for(i=0;i<long_s;i++) {
  29.    if(*(s+i)==*w) { comparar_cadenas(s,i,w,long_w,&words); }
  30.  }
  31.  
  32.  printf("La palabra ocurrio %d veces.\n",words);
  33.  return 0;
  34. }
  35.  
  36. int longitud_cadena (char* a) {
  37.  
  38.  int num_ch,i;
  39.  num_ch=0;
  40.  for(i=0;(int)*(a+i)!=10;i++) { num_ch++; }
  41.  return(num_ch);
  42. }
  43.  
  44. void comparar_cadenas (char* s, int i, char* w, int lw, int* words) {
  45.  
  46.  int n;
  47.  
  48.  for(n=0;n<lw;n++) {
  49.    if(*(s+i+n)!=*(w+n)) { break; }
  50.  }
  51.  if(n==lw) { (*words)++; }
  52. }

el tema es que compila bien, pero siempre me dice que la palabra ocurrio 0 veces en la oracion. llevo 2 horas repasandolo y siguiendo el flujo del programa con papel y boli y es que no doy con el fallo.

alguien me echa un cable? la verdad se agradeceria... no quiero irme a dormir sin verlo funcionando xD

gracias!

EDITADO: añadido algunas correcciones y ahora casi funciona, la salida marca 1 si la palabra aparece una o mas veces, y marca 0 si la palabra no se encuentra en la frase.

EDITADO2: ya funciona correctamente. por si a alguien le interesa, el error estaba en la funcion longitud_cadena que devolvia 1 caracter mas de la cuenta.

gracias por la ayuda!
464  Foros Generales / Foro Libre / Re: 'Paquirrín' entra en GH en: 15 Abril 2012, 15:32 pm
valla p**a ***** de programa de persona y de post

 ;-)
465  Programación / Programación C/C++ / Re: [C] ¿Por que una cadena acepta mas valores que su longitud? (solucionado) en: 15 Abril 2012, 15:26 pm
pues la verdad es que no... xD

empece antes de ayer con C asi que no tengo mucha idea... aunque gracias por la recomendacion y por la web, a favoritos que va.
466  Programación / Programación C/C++ / Re: [C] ¿Por que una cadena acepta mas valores que su longitud? en: 15 Abril 2012, 01:36 am
vale entonces, si yo marco como longitud por ejemplo 10 caracteres, y le paso una cadena de 50 caracteres, los unicos caracteres que 100% seguro guardara bien serian los 10 primeros no? y nadie me asegura que pueda acceder a los 40 caracteres restantes durante el programa ya que quizas se han sobreescrito o algo asi.

es este el razonamiento?

y respecto a lo del VLA, en el ejemplo que dan en wikipedia:

Código
  1. float read_and_process(int n)
  2. {
  3.    float vals[n];
  4.  
  5.    for (int i = 0; i < n; i++)
  6.        vals[i] = read_val();
  7.    return process(vals, n);
  8. }

definen la longitud de la cadena, aunque esta dependa de n. en el caso que os he comentado, yo le doy una longitud de 5 y en cambio me deja pasarle mas caracteres, asi que no veo que sean cosas iguales. si esto no es asi, por favor explicadme el por que ya que veo que son casos distintos.

gracias a los 2!


EDIT: edito para decir que ya encontre la respuesta. por si a alguien le interesa, no llevar un control sobre la memoria asignada a un programa puede provocar esto:
http://es.wikipedia.org/wiki/Desbordamiento_de_búfer

llevo un rato mirando y para evitar que se sobrepase la longitud de la cadena se podria hacer algo asi:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX 8 /*longitud de la cadena*/
  5.  
  6. int main() {
  7.  
  8.  char *pa;
  9.  
  10.  pa=(char*)malloc(MAX*sizeof(char));
  11.  
  12.  if (pa==0) {
  13.    printf("ERROR - No hay memoria disponible.\n");
  14.  } else {  
  15.    printf("Introduce una cadena de maximo %d caracteres:\n",MAX-1); /*MAX-1 para dejar el caracter de fin de cadena \0*/
  16.    scanf("%s",pa);
  17.  
  18.      if ((int)*(pa+MAX-1)!=0) {
  19. printf("ERROR - Excediste los %d caracteres permitidos.\n",MAX-1);
  20.      } else {
  21. printf("Cadena correcta.\n");
  22.      }
  23.    free(pa);
  24.  }
  25.  return 0;
  26. }
  27.  

gracias de nuevo!
467  Programación / Programación C/C++ / [C] ¿Por que una cadena acepta mas valores que su longitud? (solucionado) en: 15 Abril 2012, 00:34 am
buenas gente, no acabo de entender por que pasa esto. tengo este codigo:

Código
  1. int main() {
  2.  
  3.  char a[5];
  4.  
  5.  scanf("%s",a);
  6.  printf("Cadena:\n%s\n",a);
  7.  
  8.  return 0;
  9. }

entonces cuando le paso la cadena "123456789abcdef", me la devuelve completa por pantalla, y no se por que no se corta y me da solo "12345" que serian los 5 caracteres que he definido como longitud.

he leido acerca de de cadenas estaticas y dinamicas, pero yo en este caso no estoy usando ningun puntero asi que diria que es estatica... no? estaba empezando a comprender algunas cosas y me he encontrado con este problema de la longitud de la cadena y todo lo que creia comprender se ha esfumado de golpe... xD

gracias a quien me arroje un poco de luz!
468  Foros Generales / Foro Libre / Re: Que es la gravedad PARA USTEDES? en: 13 Abril 2012, 08:33 am
la gravedad es lo que hace tan dificil levantarse de la cama por la mañana...

ahora un poco mas serio, toda masa genera una fuerza atrayente
con otras masas, incluso una pelota de tenis. cuanta mas masa, mas fuerte es la fuerza. en el caso de la tierra y la luna, la luna orbita a la tierra debido a la fuerza d gravedad que ejerce la tierra sobre la luna; pero la gravedad que la luna ejerce sobre la tierra tambien es importante (por ej, las mareas) ya que sino se dice que no podria existir vida en la tierra, o al menos no tal y como la conocemos.
469  Programación / Scripting / [bash] Problema con while y `date` en: 10 Abril 2012, 19:09 pm
Buenas gente, me he decidido a aprender algo de bash y despues de buscar y buscar no logro entender por que me marca este error...
Código
  1. ti=`date +%s`
  2. tf=$[ti+3600]
  3. while [ `date +%s` <= $tf ]
  4. do
  5. (...)
  6.  
Cuando ejecuto el script, me marca este error en la linea del while: "13340890742: No such file or directory". El numero es la salida del `date +%s`, y he buscado acerca del error y la verdad no entiendo a que se refiere.

Tambien he probado de esta manera:
Código
  1. ti=`date +%s`
  2. tf=$[ti+3600]
  3. while [ $(date +%s) <= $tf ]
  4. do
  5. (...)
  6.  
Y el resultado creo recordar que era el mismo.

Alguien tiene alguna idea de como solucionarlo?

Y tambien, cual seria la sintaxis para poder prescindir de la variable tf ? Me refiero a algo tipo asi:
Código
  1. ti=`date +%s`
  2. while [ $(date +%s) <= $[ti+3600] ]
  3. do
  4. (...)
  5.  
Aunque este no funciona.

Muchas gracias!
470  Seguridad Informática / Hacking / Re: Duda conexion VirtualBox en: 6 Abril 2012, 00:39 am
selecciona en la configuracion de la maquina virtual antes de arrancarla el modo bridge o puente en el apartado de red. con eso deberian verse el host y la maquina virtualizada.

un saludo!
Páginas: 1 ... 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 [47] 48 49 50 51
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines