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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 38
181  Programación / Programación C/C++ / Re: problema virtual key codes en c++ letra ñ en keylogger en: 25 Julio 2012, 07:56 am
Hola! para la letra 'ñ' tal vez te sirva esto:
http://foro.elhacker.net/programacion_cc/problema_con_la_n-t331081.0.html

y para saber si es mayuscula o minuscula es cuestion de buscar funciones de C++. En C tenes funciones como islower(comprueba si un caracter es minuscula) y isupper(comprueba si un caracter es mayuscula), ambas de ctype.h


Saludos
182  Programación / Programación C/C++ / Re: Poner contraseña en: 25 Julio 2012, 07:45 am
Hola! no es recomendado usar fflush para stdin ya que no esta definido.

Este problema ya fue discutido muchas veces asi que voy a ser lo mas claro posible. Cuando se ingresan caracteres por teclado, estos se almacenan en un "bufer" para que luego funciones como fgets, scanf, etc tomen los caracteres de ahi.
Aclaracion 1: el ENTER(\n) tambien es un caracter, osea que tambien se almacena en el bufer
Aclaracion 2: fgets lee hasta encontrar un ENTER o como maximo n-1 caracteres
Supongamos que se ingresa esta cadena: "xDabcde\n". En este caso vos indicaste a fgets que lea 3-1 caracteres, es decir los caracteres 'x' y 'D' se almacenan en el arreglo texto. Es por esto que si se ingresa cualquier cadena, siempre y cuando empiece con "xD", imprime "contraseña correcta" (Esto seria la respuesta a tu segunda duda)

Ahora supongamos que se ingresa otra cadena: "asdfzxc\n". ¿que sucede ahora? como antes los primeros dos caracteres('a' y 's') se almacenan en texto y se imprime "contraseña incorrecta". ¿pero por que despues no podes ingresar y vuelve a imprimir "contraseña incorrecta" varias veces? Esto se debe a que en el bufer aun queda el resto de la cadena: "dfzxc\n". Para solucionar esto hay que limpiar el bufer; despues de fgets agrega:
Código
  1. while(getchar()!='\n'); // getchar lee del bufer hasta encontrar un '\n', osea limpia el bufer


Saludos
183  Programación / Programación C/C++ / Re: Funciones en C, Ayuda!! en: 23 Julio 2012, 22:24 pm
Hola! el error que te marca es simple, vos no podes declarar una funcion con 5 parametros y luego cuando llamas a esa funcion(en el main) solo le pasas 1 como haces con medianum()

Otra cosa q debes corregir es la declaracion float num[1]. Igual el tema mas importante que te falta es el concepto de "pasaje por valor y pseudoreferencia", el cual me parece mas conveniente explicarte cuando veas punteros.
Al no saber ese tema te recomiendo que declares funciones de este tipo:
Código
  1. (tipo) nombrefuncion(float num[], int tam);
Es decir funciones que reciben el arreglo, el tamaño del arreglo y retornen un resultado. Te dejo algunos ejemplos:
Código
  1. void llenarArreglo(float num[], int tam);
  2. void ordenar(float num[], int tam);
  3. int minimo(float num[], int tam);
  4. int maximo(float num[], int tam);
  5. float mediaNum(float num[], int tam);
  6. float median(float num[], int tam);


Saludos
184  Programación / Programación C/C++ / Re: Visual Studio C++ BUG en: 20 Julio 2012, 22:37 pm
Citar
Dime alguno bueno para Linux por favor.
el gcc y un block de notas


Saludos
185  Programación / Programación C/C++ / Re: Funciones en C, Ayuda!! en: 20 Julio 2012, 21:40 pm
Hola! Tenes un error en la lectura del arreglo num. La forma correcta es:
Código
  1. scanf("%f", &num[t]);
tenes que indicar el subindice. Lo mismo para imprimir...


Basicamente podrias separar todo el programa en funciones. Te dejo una funcion:
Código
  1. llenarArreglo(num, t); // llamada de la funcion

Código
  1. void llenarArreglo(int num[], int t) // en la funcion
  2. {
  3.   // RELLENAMOS LAS POSICIONES DEL VECTOR
  4.      for (i=0;i<t;i++)
  5.      {
  6.         printf("Numero para el lugar %d del arreglo: ",i);
  7.         scanf("%f", &num[t]);
  8.      }
  9. }

Y asi podrias crear una funcion para todos los comentarios que tenes en mayusculas

Saludos
186  Programación / Programación C/C++ / Re: Tomar datos de un archivo y ponerlos en un vector!!! en: 18 Julio 2012, 02:21 am
Me parece bien que estudies acerca de estructuras ya que te facilita varias cosas.
Mire otra ves el codigo y me equivoque en pasarte esto:
Código
  1. fseek(stock,pos-1,SEEK_SET);
tenia que ser:
Código
  1. fseek(stock,pos-sizeof(int),SEEK_SET);
Hay q descontar sizeof(int) a pos ya que despues de leer el codigo del archivo, el cursor se desplaza 4bytes(o 2bytes)


Compile el programa y me anda bien, te dejo las modificaciones:
En el modulo de stock
Código
  1. case 2:
  2. if(op == 2)
  3. {
  4. printf("\n____________________________");
  5. printf("\nBienvenidoal modulo de stock: ");
  6. printf("\nEscoja la opcion: ");
  7. printf("\n1 - Alta de un articulo");
  8. printf("\n2 - Consulta de un articulo ");
  9. printf("\n3 - Descontar stock");
  10. printf("\n0 - Salir: ");
  11. scanf("%d",&st);
  12. printf("\n___________________________\n");
  13. switch(st)
  14. {
  15. case 0:
  16. return 0;
  17. break;
  18. case 1:
  19. if(st == 1)
  20. ALTAS_ARTICULOS(stock);
  21. break;
  22. case 2:
  23. if(st == 2)
  24. CONSULTA_ARTICULOS(stock);
  25. break;
  26. case 3:
  27.                             printf("\nIngrese codigo del articulo: ");
  28.                             scanf("%d",&cod);
  29.                             printf("\nIngrese la cantidad a descontar: ");
  30.                             scanf("%d",&cantidad);
  31.                             DESCONTAR_STOCK(stock, cantidad, cod);
  32.                             break;
  33. default:
  34. printf("\nLa opcion no es correcta ");
  35. break;
  36. }
  37. break;
  38. }

Funcion modificada:
Código
  1. void DESCONTAR_STOCK(FILE *stock1, int diferencia, int x)
  2. {
  3. int cod,cantidad,ns;//nc: nueva cantidad del articulo
  4. float precio;
  5. int pos;
  6. char art[50];
  7. stock1 = fopen("Stock.dat","r+b");
  8. fread(&cod,sizeof(int),1,stock1);
  9. pos=ftell(stock1);
  10. fread(art,sizeof(art),1,stock1);
  11. fread(&cantidad,sizeof(int),1,stock1);
  12. fread(&precio,sizeof(float),1,stock1);
  13. while(!feof(stock1))
  14. {
  15. if(x == cod)
  16. {
  17. ns = cantidad - diferencia;
  18. fseek(stock1,pos-sizeof(int),SEEK_SET);
  19. fwrite(&cod,sizeof(int),1,stock1);
  20. fwrite(art,sizeof(art),1,stock1);
  21. fwrite(&ns,sizeof(int),1,stock1);
  22. fwrite(&precio,sizeof(float),1,stock1);
  23. fseek(stock1,0,SEEK_END);
  24. }
  25. fread(&cod,sizeof(int),1,stock1);
  26. pos=ftell(stock1);
  27. fread(art,sizeof(art),1,stock1);
  28. fread(&cantidad,sizeof(int),1,stock1);
  29. fread(&precio,sizeof(float),1,stock1);
  30. }
  31. fclose(stock1);
  32. }


Saludos
187  Programación / Programación C/C++ / Re: programa internauta en c++ en: 17 Julio 2012, 09:11 am
Hola! creo q con sockets podes hacer lo que queres, averigua por ese lado


Saludos
188  Programación / Programación C/C++ / Re: Tomar datos de un archivo y ponerlos en un vector!!! en: 16 Julio 2012, 01:52 am
Q oxidado estoy con archivos :S. Entre la lectura de cod y art pone:

Código
  1. pos=ftell(fp); // ftell devuelve la posicion del cursor
pos es un entero. Luego si se cumple que es el codigo correcto pone:

Código
  1. if(comp1 == cod)
  2. {
  3.                        ns = cantidad - diferencia1;
  4.                        fseek(fp,pos-1,SEEK_SET);
  5. fwrite(&cod,sizeof(int),1,stock1);
  6. fwrite(art,sizeof(art),1,stock1);
  7. fwrite(&ns,sizeof(int),1,stock1);
  8. fwrite(&precio,sizeof(float),1,stock1);
  9. fseek(stock1,0,SEEK_END);
  10. }


Otra cosa, algo q no me habia dado cuenta es que tanto en la lectura como la escritura pones & delante de art, lo cual creo q causa un error ya que esta demas el &
189  Sistemas Operativos / GNU/Linux / Re: Script LINUX algun valiente??? en: 16 Julio 2012, 00:20 am
foro equivocado
190  Programación / Programación C/C++ / Re: Tomar datos de un archivo y ponerlos en un vector!!! en: 14 Julio 2012, 20:44 pm
Hola! es como decis vos, el problema esta en sobreescribir. Cuando vos lees algo de un archivo el cursor se desplaza, por lo tanto cuando quieras guardar vas a hacerlo a partir de donde esta posicionado el cursor. Lo que tendrias que hacer es volver a posicionarte cuando se cumple comp1 == cod. Tenes que usar fseek


Fijate si te sale sino te sigo ayudando. Saludos
Páginas: 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 38
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines