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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Punteros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Punteros  (Leído 2,565 veces)
Marsi

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Punteros
« en: 29 Mayo 2020, 02:18 am »

Estoy estudiando punteros y no entiendo muy bien, alguien me puede decir como se realizan estos programas?

.-Realice un programa que tenga una función que mediante apuntadores pueda transformar un
número entero en una cadena de caracteres formada por los dígitos del número entero.

.-Empleando apuntadores escribir un programa que lea una línea de texto y escriba en pantalla
las palabras de que consta la línea sin utilizar las funciones de string.h y particularmente sin usar
strtok ().


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.041



Ver Perfil
Re: Punteros
« Respuesta #1 en: 29 Mayo 2020, 02:30 am »

Saludos,

- El tema de los punteros es un lío XD, yo no lo acabo de digerir completamente, cada vez que los necesito le echo una ojeada a este Paper: https://openlibra.com/es/book/introduccion-a-los-punteros-en-c al menos dándole un par de leídas y poniéndolo en práctica lo entiendo por un tiempo :xD



- Wow, yo pensé que los punteros eran simples direcciones de memoria, pero al parecer son rangos de direcciones de memoria donde el tamaño del rango es el tipo de variable.

- Estoy haciendo el siguiente experimento intentando sumarle +1 al puntero para que apunte al siguiente caracter pero no lo hace, este le suma +4 porque el tipo es int. Pero si lo hago con char me manda una advertencia el compilador:

Código
  1. /* Realice un programa que tenga una función que mediante apuntadores pueda transformar un
  2. número entero en una cadena de caracteres formada por los dígitos del número entero. */
  3.  
  4. #include <stdio.h>
  5.  
  6. int main() {
  7.  int numero = 1869898055; // "Gato" en decimal litle endian
  8.  int *puntero = &numero;
  9.  printf("Puntero - 1 = %p\n", puntero - 1);
  10.  printf("Puntero     = %p\n", puntero);
  11.  printf("Puntero + 1 = %p\n", puntero + 1);
  12.  for (int i = 0; i < 4; i++) {
  13.    printf("%c", *puntero);
  14.    puntero += 1;
  15.  }
  16.  return 0;
  17. }

Citar
C:\Users\EdSon\Desktop>gcc punteros.c -o punteros.exe && punteros.exe
Puntero - 1 = 0028FF20
Puntero     = 0028FF24
Puntero + 1 = 0028FF28
G☺,Ç

Código
  1. /* Realice un programa que tenga una función que mediante apuntadores pueda transformar un
  2. número entero en una cadena de caracteres formada por los dígitos del número entero. */
  3.  
  4. #include <stdio.h>
  5.  
  6. int main() {
  7.  int numero = 1869898055; // "Gato" en decimal litle endian
  8.  char *puntero = &numero;
  9.  printf("Puntero - 1 = %p\n", puntero - 1);
  10.  printf("Puntero     = %p\n", puntero);
  11.  printf("Puntero + 1 = %p\n", puntero + 1);
  12.  for (int i = 0; i < 4; i++) {
  13.    printf("%c", *puntero);
  14.    puntero += 1;
  15.  }
  16.  return 0;
  17. }

Citar

C:\Users\EdSon\Desktop>gcc punteros.c -o punteros.exe && punteros.exe
punteros.c: In function 'main':
punteros.c:8:19: warning: initialization of 'char *' from incompatible pointer type 'int *' [-Wincom
patible-pointer-types]
    8 |   char *puntero = &numero;
      |                   ^
Puntero - 1 = 0028FF23
Puntero     = 0028FF24
Puntero + 1 = 0028FF25
Gato


« Última modificación: 29 Mayo 2020, 05:05 am por EdePC » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Punteros
« Respuesta #2 en: 29 Mayo 2020, 08:30 am »

.-Realice un programa que tenga una función que mediante apuntadores pueda transformar un
número entero en una cadena de caracteres formada por los dígitos del número entero.
Los punteros dan mucha libertad. Es muy difícil saber qué es lo que te están pidiendo exactamente pero yo creo que podría ser algo así:
Código
  1. void numberToString(int *number, char *string);
  2. char* numberToString(int *number);
En ambos casos es una función que recibe un entero por medio de un puntero, lo que sería el paso por referencia en C, y modifica (primer caso) o crea y devuelve (segundo caso) un puntero a una cadena en la que cada carácter es un dígito del número.

.-Empleando apuntadores escribir un programa que lea una línea de texto y escriba en pantalla
las palabras de que consta la línea sin utilizar las funciones de string.h y particularmente sin usar
strtok ().
En este caso quiero entender que tienes que separar cada una de las palabras leídas. Podrías guardar la línea de texto en una cadena unidimensional char[] e ir separando y mostrando alternativamente o, crear un array de cadenas char[][] y en cada fila guardar una de esas palabras.

Todo esto tiene bastante sentido si estás trabajando con memoria dinámica. Si no es así, también podrías hacerlo con memoria estática pero los punteros adquieren menos relevancia en este caso.

De todas formas, tienes que darnos más información sobre el problema. A ser posible con una breve explicación de lo que tú crees que tienes que hacer y cómo estás intentando hacerlo. Ya partimos luego de ahí para poder ayudarte mejor.

Suerte.  :-X
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 4,860 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
Punteros dobles / Punteros a puntero.
Programación C/C++
NOB2014 5 7,873 Último mensaje 13 Abril 2016, 16:00 pm
por MAFUS
(Consulta) Punteros a punteros en C
Programación C/C++
class_OpenGL 1 1,781 Último mensaje 19 Julio 2016, 14:29 pm
por class_OpenGL
Representación visual de punteros y punteros a punteros.. « 1 2 »
Programación C/C++
digimikeh 13 4,089 Último mensaje 4 Mayo 2019, 01:54 am
por RayR
Consulta sobre punteros y doble punteros
Programación C/C++
palacio29 4 2,785 Último mensaje 17 Mayo 2019, 20:40 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines