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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 160
61  Programación / Programación C/C++ / Re: Guardar Datos desde cmd en un txt en: 1 Abril 2015, 04:17 am
solo tienes que usar los comandos de la cmd con la librería windows.h
Para tener acceso al prototipo de la función system basta con incluir el encabezado <stdlib.h>.

¿Porque funciona con <windows.h>? Porque ese encabezado a su vez incluye <stdlib.h>.

Un saludo
62  Programación / Programación C/C++ / Re: operaciones con bit en: 1 Abril 2015, 04:12 am
Utilizando Google el segundo vinculo es Wikipedia: Bitwise operations in C.

Un saludo
63  Programación / Programación C/C++ / Re: system ("pause"); en: 30 Marzo 2015, 04:42 am
Se puede hacer que al poner system ("pause"); dentro de un bucle anidado, haya que poner una palabra o letra específica para que continúe ejecutándolo?
No ya que el comando "pause" solo requiere de la pulsación de una tecla, nada mas.

La operación la tienes que realizar de forma manual:
1) Indicas al usuario que debe introducir un determinado carácter o palabra para continuar.
2) Lees la entrada del usuario.
3) Verificas si es la correcta o no.

Si se trata de un solo carácter puedes leer este con la función getchar, en el caso de una palabra con scanf. Para verificar la entrada si es un carácter simplemente utilizas el operador de comparación "==" mientras en el caso de una palabra utilizas la función strcmp.

Un saludo
64  Programación / Programación C/C++ / Re: Calcula el cuadrado de un numero usando aritmetica de punteros en: 30 Marzo 2015, 04:28 am
He encontrado una función algo peculiar la cual calcula el cuadrado de un determinado numero, hasta ahi todo bien
El problema con esa forma de obtener el cuadrado es que tal vez funcione o tal vez no ya que la expresión genera UB (comportamiento no definido), la explicación en detalle se encuentra en el vinculo cortesía de ivancea96.

Un saludo
65  Programación / Programación C/C++ / Re: Es necesario escribir return; al final de una funcion, y void? en: 29 Marzo 2015, 17:53 pm
Código
  1. void Funcion(void)
  2. {
  3.   procesamiento......
  4. }

Es necesario el "void" sino necesito recibir ningún valor?, qué es lo correcto?.
Depende.

En una declaración los paréntesis vacíos indican que la función recibe un numero no determinado de argumentos, si la intención es indicar que no recibe argumentos se debe utilizar la palabra reservada "void". Un ejemplo:
Código
  1. void f();      /* El numero de argumentos es indeterminado */
  2. void g(void);  /* El numero de argumentos es cero */

En una definición los paréntesis vacíos indican que la función no recibe argumentos, no es necesario utilizar void para indicarlo. Sin embargo se recomienda utilizar void en las definiciones por simetría (estilo). Un ejemplo:
Código
  1. void f()      /* El numero de argumentos es cero */
  2. {
  3.   /* ... */
  4. }
  5.  
  6. void g(void)  /* El numero de argumentos es cero */
  7. {
  8.   /* ... */
  9. }

Un saludo
66  Programación / Programación C/C++ / Re: Ayuda con un divisor de archivos en: 29 Marzo 2015, 05:08 am
Por favor requiero su ayuda para poder terminar este código, es similar al hacha, divide los archivos en 100 bytes pero no funciona como quiero que funcione
Lo primero que debes hacer es indicar de una forma clara y precisa que operación debe realizar el programa (los comentarios en el se deben cambiar en esa misma linea).

Un saludo
67  Programación / Programación C/C++ / Re: Programacion en C Matrices Ayuda! en: 29 Marzo 2015, 04:51 am
me gustaría q me ayudaran con el paso de parámetro
Los argumentos de una función son los valores pasados en la llamada, los parámetros son las variables locales inicializadas con el argumento (valor) correspondiente.


este es el paso por valor| función(tipo m[][TAM]); | lo q yo quiero es el paso por referencia, osea enviarle la dirección de la matriz a una función.
En C los arrays como argumentos generan de forma automática la dirección en memoria de su primer elemento, si tu declaras una función en cualquiera de estas dos formas:
Código
  1. int fn(char a[]);
  2.  
  3. /* O */
  4. int fn(char a[N]);
La declaración se termina procesando así:
Código
  1. int fn(char *a);

En buen cristiano: no hay necesidad de emular el paso por referencia del primer elemento del array ya que este es automático.

Un saludo
68  Programación / Programación C/C++ / Re: [?]Eliminar nodo en: 27 Marzo 2015, 15:51 pm
En tu programa utilizas solo la biblioteca estándar de C cuando, por el uso de new, se trata de C++. Si estas aprendiendo C++ enfocate en su biblioteca estándar. En cuanto al uso intercalado de scanf y fgets (el problema similar en C++ aparece con el uso del operador ">>" y getline) hay un montón de temas en la base de datos de los foros, solo es cuestión de utilizar el motor de búsqueda.

También por favor lee el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

----

Los problemas en su mayoría se encuentran en la función "borrarNodo", el que mencionas se genera si el nodo a eliminar no existe debido a este bucle:
Código
  1. printf("INTRODUZCA EL ID A ELIMINAR: ");
  2. scanf("%d", &aux->dato);
  3. while (aux->dato != nuevo->dato){
  4.   ant = nuevo;
  5.   nuevo = nuevo->puntero;
  6. }
En el se itera una y otra vez hasta encontrar un nodo con el valor buscado, si eso no sucede se tratara de procesar el nodo después del ultimo (NULL) causando el error que mencionas al realizar la operación (NULL)->puntero.

----

Mira que pensaba poner un listado de los errores en esa función pero, y recalco que no quiero sonar grosero, son demasiados: reservas memoria cuando no es necesario, no revisas si se alcanza el final de la lista, los nombres de las variables son malos ("nuevo" es el puntero para iterar la lista), hay que tener en cuenta variables "globales" que no son necesarias, etc..

La base para eliminar un nodo es:
Código
  1. void borrarNodo()
  2. {
  3.   if (inicio == NULL)
  4.      puts("Lista vacia");
  5.   else {
  6.      nodo *aux;
  7.      int dato;
  8.  
  9.      puts("Dato a eliminar:");
  10.      scanf("%d", &dato);
  11.  
  12.      if (inicio->dato == dato){
  13.         // Eliminamos el primero
  14.         aux = inicio;
  15.         inicio = inicio->puntero;
  16.         free(aux);
  17.      }else {
  18.         // Eliminamos (si aplica) algun nodo despues del primero
  19.         nodo *p = inicio;
  20.  
  21.         while (p->puntero != NULL && p->puntero->dato != dato)
  22.         p = p->puntero;
  23.  
  24.         // ...
  25.      }
  26.   }
  27. }

Por supuesto no esta completo, falta la parte mas importante y difícil (eliminar un nodo después del primero). Inténtalo tu solo y si tienes problemas te ayudamos.

Un saludo
69  Programación / Programación C/C++ / Re: Problema en C con la funcion fread y fwrite en: 27 Marzo 2015, 04:01 am
Para imprimir el registro almacenado en el archivo no necesitas de un bucle, en su lugar basta con una sentencia condicional donde se verifique el valor de retorno de la función (uno en caso de una lectura exitosa). De esta forma:
Código
  1. if (fread(&Persona, sizeof(Persona), 1, Gente1) == 1)
  2.   printf("%s%s%d\n", Persona.Name, Persona.City, Persona.Age);

Un saludo
70  Programación / Programación C/C++ / Re: Problema en C con la funcion fread y fwrite en: 26 Marzo 2015, 17:32 pm
alguien tiene idea de por qué el programa me tira los warning: "assignment make pointer from integer without a cast" y al ejecutarlo, cuando va a finalizar el programa, deja de funcionar: "program.exe has stopped working"
Los errores se generan en las llamadas a fopen:
Código
  1. if (Gente1 = fopen("gente1.dat","ab") == NULL){
  2.  
  3. /* ... */
  4.  
  5. if (Gente1 = fopen("gente1.dat","rb") == NULL){
El operador "==" tiene una prioridad mayor que "=" por lo que esas sentencias se procesan así:
Código
  1. if (Gente1 = (fopen("gente1.dat","ab") == NULL)){
  2.  
  3. /* ... */
  4.  
  5. if (Gente1 = (fopen("gente1.dat","rb") == NULL)){
Por ello la variable almacenara el valor entero cero si fopen tiene éxito y uno en caso contrario.

Para solucionarlo solo tienes que utilizar paréntesis para primero asignar y solo entonces comparar:
Código
  1. if ((Gente1 = fopen("gente1.dat","ab")) == NULL){
  2.  
  3. /* ... */
  4.  
  5. if ((Gente1 = fopen("gente1.dat","rb")) == NULL){

Por ultimo evita el uso de gets y fflush(stdin), las razones de ello en el tema |Lo que no hay que hacer en C/C++. Nivel basico|

Un saludo
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines