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 ... 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 [156] 157 158 159 160
1551  Programación / Programación C/C++ / Re: limits.h en: 5 Agosto 2011, 03:27 am
Una forma de acortar el programa es mediante una macro utilizando el operador '#' (para delimitar el argumento, en otras palabras convertirlo en cadena literal):
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #include <limits.h>
  5. #include <float.h>
  6.  
  7. #define IMPRIMIR(macro, fmt)  printf(#macro ": " fmt "\n", macro)
  8.  
  9. int main (void)
  10. {
  11.   IMPRIMIR(INT_MIN, "% d");
  12.   IMPRIMIR(INT_MAX, "% d");
  13.   putchar('\n');
  14.  
  15.   IMPRIMIR(LONG_MIN, "% ld");
  16.   IMPRIMIR(LONG_MAX, "% ld");
  17.   putchar('\n');
  18.  
  19.   IMPRIMIR(FLT_MIN, "%e");
  20.   IMPRIMIR(FLT_MAX, "%e");
  21.   putchar('\n');
  22.  
  23.   /* ... */
  24.  
  25.   return EXIT_SUCCESS;
  26. }

Un saludo
1552  Programación / Programación C/C++ / Re: Duda con bloque for al aumentar una variable en: 4 Agosto 2011, 10:44 am
Aprovechando este post tengo una pregunta más:
Hice un programa que pide un valor numérico, pero al introducir una letra, se vuelve a repetir (como si fuera un bucle infinito) ¿como puedo hacer una excepción para controlar eso?
Supongo por lo comentado que utilizas la función scanf para leer el valor. En ese caso se debe recordar que ella solo procesa los caracteres necesarios para la conversión, si esta falla los caracteres inválidos se quedan ahí (en el bufer de la entrada estándar).

Lo que debes hacer es verificar el valor de retorno de la función (esta es el numero de conversiones exitosas) y descartar el resto de la linea.

Por ejemplo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   int num;
  7.   int ok;
  8.   int ch;
  9.  
  10.   do {
  11.      printf("Introduce un numero (1 a 9): ");
  12.      fflush(stdout);
  13.      ok = scanf("%d", &num) == 1 && num >= 1 && num <= 9;
  14.  
  15.      /* Descartamos el resto de la linea */
  16.      while ((ch = getchar()) != EOF && ch != '\n')
  17.         ;
  18.   }while (!ok);
  19.  
  20.   printf("El numero es %d\n", num);
  21.  
  22.   return EXIT_SUCCESS;
  23. }

Un saludo
1553  Programación / Programación C/C++ / Re: [c++]Prototipo de una funcion.. donde debe ir? antes de main? en: 4 Agosto 2011, 02:23 am
como comento en el codigo si lo pongo entre using namespace std y main compila bien, pero si lo pongo en otro lugar no.. q pasa llevan orden?
No.

Los prototipos de las funciones no deben necesariamente ir en una parte determinada del programa.

Lo que si se debe cumplir es: deben estar colocados antes del uso (llamada) de la funcion correspondiente. Eso se cumple colocandolos (lo usual) antes de toda definicion.

Por ejemplo:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. // etc
  5.  
  6. // Prototipos de funciones
  7.  
  8. // Definicion de funciones empezando por la principal
  9. int main()
  10. {
  11. // ...
  12.  
  13. return 0;
  14. }
  15.  
  16. // Mas definiciones ...

Un saludo
1554  Programación / Programación C/C++ / Re: Recomendacion de libro C en: 3 Agosto 2011, 18:15 pm
Ya he revisado los libros que están publicado acá, La cosa es que "las versiones nuevas" están en ingles y los otros son muy viejos y pues ya no cumple con los standard,
El primer estándar de C es de 1989/1990 y es todavía el mas soportado, también debes considerar que un libro por el solo hecho de ser reciente no da garantías.

En cuanto al ingles te convendría aprenderlo ya que la gran mayoría de los libros/referencias/etc. están en ese lenguaje.

En mi opinión dos de los mejores libros para aprender C son "K&R2" y "Pointers on C" (los dos en ingles). También se requiere de mucho esfuerzo (no es ósmosis).

Un saludo
1555  Programación / Programación C/C++ / Re: [C] GotoXY Error en: 3 Agosto 2011, 14:52 pm
Te conviene aprender primero las partes de C que están garantizadas (C estándar) y solo después las características especificas (extensiones) del compilador que estés utilizando.

Funciones como gotoxy y getch son parte de la biblioteca conio de Borland y su soporte depende del compilador. Eso en el caso de que el error (no lo mencionas) sea del tipo "undefined reference ...".

Un saludo
1556  Programación / Programación C/C++ / Re: limits.h en: 3 Agosto 2011, 01:54 am
Hola, tengo un problema que no se porqué pasa, yo creo que es el compilador
En ese caso nos ayudarías como no tienes idea si nos indicas cual estas utilizando.

El único problema en potencia con el programa son los tipos "long long" y "unsigned long long" ya que estos fueron introducidos con el estándar C99. Debes revisar la documentación de tu compilador para saber si soporta esos tipos y que este configurado correctamente.

También debes utilizar "%lu" para imprimir la macro "ULONG_MAX".

Es como está en el libro, pero el valor de la variable "long long", a la hora de ejecutar el programa,  no corresponde con la uqe sale en el libro
Por esa razón se utilizan esas macros: los valores que se indican en un libro son los mínimos garantizados, los valores exactos dependen de la implementación.

Un saludo
1557  Programación / Programación C/C++ / Re: Archivos y Stdarg en: 3 Agosto 2011, 01:35 am
Una cosa que no entiendo es la linea esta:

Código:
      entrada = fopen(va_arg(va, char const *), "r");

La parte de "char const *" sería como decirle que va a encontrar una constante de caracteres, o sea "FILE" y le asignas el '*'... ¿O algo así?...
No.

Se utiliza la macro "va_arg" para obtener cada uno de los argumentos sin nombre (los que sustituyen a "...", en tu caso los tres nombres de archivo).

El segundo argumento de "va_arg" debe ser el tipo, en tu caso utilizamos "char const *" ya que ese es el tipo de las literales de cadena como "a.txt".

Un saludo
1558  Programación / Programación C/C++ / Re: ayuda c a c++ en: 3 Agosto 2011, 01:03 am
Una pequeña observacion, tienes declaradas las variables 'op' y 'a' como variables de tipo char, cuando en realidad lo que almacenarán es un entero.
No. El uso de ambas variables es correcto ya que en ellas se almacenan caracteres para luego ser comparados en los casos contra las literales '1', '2', etc.

Un saludo
1559  Programación / Programación C/C++ / Re: Nuevo y primera duda en: 2 Agosto 2011, 19:55 pm
No. Su pagina principal todavia lista la version 5.0 Beta (o 4.9.9.2, es la misma) como su ultima version y en su pagina en sourceforge tanto en codigo fuente como binarios esa es la ultima.

Tal vez se trate de una "rama" independiente. ¿Donde escuchaste eso?

Un saludo
1560  Programación / Programación C/C++ / Re: Archivos y Stdarg en: 2 Agosto 2011, 19:44 pm
Tienes que darle un buen repaso a tu material de referencia ya que el programa tiene varios errores importantes y algunos de ellos de concepto.

Dentro de la función tratas de abrir los archivos cuando ya abriste estos en la función principal, también tratas a los objetos de tipo "FILE" (debería ser "FILE *") como cadenas de texto indicando el nombre de los archivos.

El programa corregido (compáralo con el original):
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdarg.h>
  4.  
  5. #define NOM_ARCHIVO_SALIDA  "concat.txt"
  6.  
  7. void concatenar(int num_elem, ...);
  8.  
  9. int main(void)
  10. {
  11.   concatenar(3, "a.txt", "b.txt", "c.txt");
  12.  
  13.   return EXIT_SUCCESS;
  14. }
  15.  
  16. void concatenar(int num_elem, ...)
  17. {
  18.   FILE *entrada;
  19.   FILE *salida;
  20.   va_list va;
  21.   int ch;
  22.  
  23.   va_start(va, num_elem);
  24.   salida = fopen(NOM_ARCHIVO_SALIDA, "a");
  25.  
  26.   while (num_elem--){
  27.      entrada = fopen(va_arg(va, char const *), "r");
  28.  
  29.      while ((ch = fgetc(entrada)) != EOF)
  30.         fputc(ch, salida);
  31.      fclose(entrada);
  32.   }
  33.  
  34.   fclose(salida);
  35.   va_end(va);
  36. }

Un saludo
Páginas: 1 ... 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 [156] 157 158 159 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines