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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [27] 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 ... 160
261  Programación / Programación C/C++ / Re: cifrar un entero de 4 cifras en lenguaje C. en: 10 Septiembre 2014, 01:17 am
estoy trabado con la última parte la de intercambio de dígitos, lo he intentado de varias manera pero no me funciono.
Nada impide que proceses cada uno de los dígitos empezando con el menos significativo y terminando con el mas, lo usual mediante el uso del cociente y el residuo de la división entre diez. Una vez obtenido el nuevo dígito lo multiplicas por la potencia de diez necesaria para colocarlo en la posición correcta, de esta forma:
Código
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.   int pot[] = {100, 1000, 1, 10};
  6.   int num = 5724;
  7.   int res = 0;
  8.   int i;
  9.  
  10.   for (i = 0; i < 4; i++, num /= 10)
  11.      res += (num + 7) % 10 * pot[i];
  12.  
  13.   printf("%d\n", res);
  14.  
  15.   return 0;
  16. }

Un saludo
262  Programación / Programación C/C++ / Re: Bloques de memoria en C++ [Duda de Concepto] en: 9 Septiembre 2014, 21:40 pm
Quisiera saber por qué tengo que  definir a "bloque" como un puntero.
Porque el resultado del operador new es la dirección en memoria donde se localiza el objeto creado (en tu caso un array de "cantbytes" caracteres), esa dirección se debe almacenar en una variable de tipo puntero porque en C y C++ "puntero" es el termino técnico para "dirección en memoria".

Un saludo
263  Programación / Programación C/C++ / Re: Write en FSTREAMS C++ [Duda] en: 9 Septiembre 2014, 04:12 am
¿Los bytes se insertan o reemplaza los ya existentes desde el primer offset al 50?
Remplazan los existentes.

Un saludo
264  Programación / Programación C/C++ / Re: Duda básica sobre C: en: 9 Septiembre 2014, 00:24 am
Lo que no entiendo para qué sirve es el 2 y el 1 que hay delante de la "d" y detrás del "%".
El valor entero inmediatamente después del carácter '%' indica la anchura del campo con una alineación (predeterminada) a la derecha con el propósito de permitir una impresión en columnas.

Por ejemplo con este programa:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int main(void)
  6. {
  7.   char *test[] = {
  8.      "a",
  9.      "bb",
  10.      "ccc",
  11.      "dddd"
  12.   };
  13.   size_t num_elem = sizeof test / sizeof test[0];
  14.   size_t i;
  15.  
  16.   for (i = 0; i < num_elem; i++)
  17.      printf("%5s %5d\n", test[i], (int) (i * pow(10, i)));
  18.  
  19.   return EXIT_SUCCESS;
  20. }
Se genera la salida:
Código:
    a     0
   bb    10
  ccc   200
 dddd  3000

Puedes encontrar mas ejemplos mediante el motor de búsqueda de los foros.

----

El 2 se refiere a la cantidad de numeros a mostrar ej 8885 va mostrar 88 nada mas
No. Si los caracteres generados sobrepasan la anchura del campo se imprimen tal cual, como si la anchura nunca se hubiera indicado.

----

cual sería la diferencia entre mostrar string y mostrar caracteres?
"%c" imprime un carácter mientras que "%s" imprime una cadena (secuencia de caracteres terminada con el carácter '\0'). Por ejemplo:
Código
  1. char ch = 'X';
  2. char str[] = "Hola";
  3.  
  4. printf("%s %c\n", str, ch); /* Imprime "Hola X" */

Yo algunas cosillas que he programado en c++ y lo que he aprendido en conclase, para las frases y demás utilizaba el tipo char, aunque más tarde me entere del tipo string en este foro, y me dijeron que era más correcto, por eso me gustaría saber la diferencia.
En el titulo del tema indicas que el lenguaje es C con "Duda básica sobre C:" pero ahora indicas que es C++, en el caso de este ultimo lo políticamente correcto es enfocarse en su biblioteca estándar: clase string, operadores ">>"/"<<" de las clases de entrada/salida, etc.

Un saludo
265  Programación / Programación C/C++ / Re: problema con las extensiones en: 6 Septiembre 2014, 21:18 pm
En ese caso lo primero que debes hacer es revisar la documentación de la biblioteca que estas utilizando para saber que funciones de manejo de archivos provee, buscando por supuesto una función para obtener solo el nombre, es la forma mas fácil de resolver el problema.

Si por alguna extraña razón no se incluye esa función y tienes algo como "archivo.txt" nada impide sustituir los últimos tres caracteres con strcpy:
Código
  1. char nombre[] = "archivo.txt";
  2. size_t len = strlen(nombre);
  3.  
  4. /* ... */
  5.  
  6. printf("Nombre: %s\n", nombre);
  7. strcpy(nombre + len - 3, "xyz");
  8. printf("Nombre: %s\n", nombre);

Un saludo
266  Programación / Programación C/C++ / Re: Duda en programación C: en: 6 Septiembre 2014, 16:21 pm
La figura C) es la que me falla, me sale una representación bastante distinta, es algo así:

 **********
                *********
               ********
              *******
            *******
          *******
        *****
......
Cuando publiques un dibujo en texto por favor utiliza etiquetas [ code ] para preservar el espaciado. ¿No sera algo así?
Código:
          **********
         *********
        ********
       *******
      ******
     *****
    ****
   ***
  **
 *
En este caso se imprimen diez lineas cada una con el mismo numero de espacios y asteriscos, empezando con diez y terminando con uno. Para hacerlo solo tienes que aplicar lo aprendido en los ejercicios anteriores.

Un saludo
267  Programación / Programación C/C++ / Re: problema con las extensiones en: 6 Septiembre 2014, 16:07 pm
No entiendo el problema. ¿Porque no simplemente pides el nombre sin extensión?

Agregar a continuación la extensión es fácil, formas hay varias por ejemplo utilizando strcat (prototipo en <string.h>):
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(void)
  6. {
  7.   char nombre[FILENAME_MAX];
  8.  
  9.   puts("Indica el nombre:");
  10.   scanf("%s", nombre);
  11.   printf("Nombre: %s\n", nombre);
  12.  
  13.   strcat(nombre, ".txt");
  14.   printf("Nombre con extension: %s\n", nombre);
  15.  
  16.   return EXIT_SUCCESS;
  17. }

Un saludo
268  Programación / Programación C/C++ / Re: Escritura y lectura de archivos binarios en: 5 Septiembre 2014, 21:58 pm
Tal vez no me estoy explicando correctamente ya que no hay necesidad alguna de "recorrer" el array, simplemente se imprime el registro indicado cuyo indice obtienes con la función scanf.

Solo para estar seguro.

1) Al utilizar fread en esta forma:
Código
  1. fread(persona, sizeof persona[0], regs_a_leer, fichero);
Se le indica que lea el numero de registros indicado por "regs_a_leer", el objetivo de ello es leer todos los registros en el archivo y como máximo (el tercer argumento de la función) debes indicar la capacidad del array "persona". De nuevo se leen todos los registros.

2) La función puede leer menos bien porque se genere un error o porque simplemente no hay tantos registros en el archivo. Por eso la función retorna el numero de elementos leídos y almacenamos ese valor en la variable "regs_leidos":
Código
  1. regs_leidos = fread(persona, sizeof persona[0], regs_a_leer, fichero);

3) Si todo sale bien el valor de "regs_leidos" sera igual a "regs_a_leer" (si no es así hay un error tal vez lógico, tal vez en la lectura del archivo). Solo resta obtener el indice del registro e imprimirlo:
Código
  1. int i;
  2.  
  3. /* ... */
  4.  
  5. puts("Indice del registro a imprimir:");
  6. scanf("%d", &i);
  7.  
  8. /* ... */
  9.  
  10. /* Se imprimen los campos del registro "persona[i]" */

Un saludo
269  Programación / Programación C/C++ / Re: Programa para detectar palindromos en: 5 Septiembre 2014, 21:34 pm
Porque "palindromo" es un puntero y cuando estos se convierten a booleanos los distintos de NULL resultan en true y los iguales en false, tu bucle se procesa de esta forma:
Código
  1. do {
  2.   if (cadena[k] != cadena[j]){
  3.      esPalindromo = false;
  4.   }else {
  5.      k++;
  6.      j--;
  7.   }
  8. }while (k < j && true); // palindromo != NULL ==> true

Los resultados del operador && en los dos casos que nos importan son:
Código:
false && true ==> false
 true && true ==> true

Como puedes ver (en este caso en particular) el segundo operando no importa, el resultado solo lo decide el primero, tenemos:
Código
  1. do {
  2.   if (cadena[k] != cadena[j]){
  3.      esPalindromo = false;
  4.   }else {
  5.      k++;
  6.      j--;
  7.   }
  8. }while (k < j);

Por eso, si los caracteres a comparar en cualquier momento son distintos, se entra en un bucle infinito: para terminar se debe modificar el valor de los contadores "i" y "j" pero la rama de ejecución donde ello se realiza nunca se ejecuta.

Un saludo
270  Programación / Programación C/C++ / Re: Comando personalizado que limpie pantalla en: 5 Septiembre 2014, 21:03 pm
Estoy comenzando a estudiar programación.
Tengo la siguiente tarea:
Debo hacer una aplicacion en c++ que limpie la pantalla.
Requisitos:
-Que el comando que limpie la pantalla sea "limpiar".
-Que sin importar que se escriba mayuscula o minúscula haga la función sin reventarse.
Te piden que desarrolles un programa que acepte un argumento mediante la linea de comandos, verifique que sea igual a "limpiar", "LIMPIAR", "Limpiar", etc. (no hay distinción entre mayúsculas y minúsculas) y finalmente realice la operación indicada (limpiar la pantalla).

Para el primer paso utiliza el motor de búsqueda para revisar los temas relacionados con el paso de argumentos mediante la linea de comandos.

Para el segundo de nuevo utiliza el motor de búsqueda pero ahora para encontrar temas relacionados con las funciones tolower y toupper.

El ultimo paso no se debería realizar ya que si apenas empiezas deberías estar enfocado en la base (C++ estándar) y no en como realizar una operación especifica del SO (coméntale eso en buen plan a tu profesor).

Un saludo
Páginas: 1 ... 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [27] 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 ... 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines