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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


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

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Cortar tira de caracteres en C++
« en: 20 Octubre 2011, 10:52 am »

Hola, necesito ayuda para hacer un programita, me piden lo siguiente:

Escribe una función que reciba una tira de caracteres y un número entero, y obtenga la tira cortada hasta ese número de caracteres.

Por ejemplo, si el usuario escribe "hola" y un "2", el resultado sea "ho".

No tengo muy claro de como empezar porq soy nueva en esto, utilizo el programa dev c++.

Espero q podais ayudarme


En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Cortar tira de caracteres en C++
« Respuesta #1 en: 20 Octubre 2011, 14:57 pm »

Hola

Aquí no se hacen tareas, léete las normas del foro, pero te voy a orientar para que puedas empezar. Luego si tienes dudas concretas las preguntas.

Lo que tienes que hacer es:

char cadena[50] //por ejemplo de 50 caracteres
int numero
leer cadena
leer numero
cadena[numero] = '\0'

Así de fácil es. Ahora inténtalo y nos pones las dudas que tengas

Saludos


« Última modificación: 21 Octubre 2011, 09:42 am por satu » En línea

Breakbeat como forma de vida
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Cortar tira de caracteres en C++
« Respuesta #2 en: 21 Octubre 2011, 00:34 am »

¡Buenas!

La respuesta a tu pregunta esta en la estructura de las cadenas de caracteres en C. Si miras las codiciones que tiene que cumplir un vector de caracteres para considerarse cadena, sabras como truncar la cadena que te den en la posicion que quieras.

Resumiendo, investiga sobre lo que es una cadena de caracteres en C.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
dewolo

Desconectado Desconectado

Mensajes: 83


Ver Perfil
Re: Cortar tira de caracteres en C++
« Respuesta #3 en: 21 Octubre 2011, 01:58 am »

para cortar una cadena se trata solo de insertar un cero en una posicion del vector...
En línea

darkvidhack

Desconectado Desconectado

Mensajes: 159


Be Linux my friend...


Ver Perfil WWW
Re: Cortar tira de caracteres en C++
« Respuesta #4 en: 21 Octubre 2011, 19:51 pm »

busca sobre la función 'substr', es para 'extraer' cadenas de otras cadenas ;)

Saludos
En línea

live and let die

la duda es la base de todo conocimiento
raquelsg88

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Cortar tira de caracteres en C++
« Respuesta #5 en: 24 Octubre 2011, 23:00 pm »

He hecho esto y si me corta la palabra, pero a nada que escriba una frase, los espacios no los coge y se keda colgado el programa, q puedo hacer?

#include <stdio.h>
#include <string.h>



main()
{
    char tira[25];
    int n;
    printf("Introduce la cadena de caracteres: ");
    scanf("%s",tira);
    printf("Introduce un número: ");
    scanf("%d",&n);
   
    tira[n]='\0';
   
    printf("\nLa tira cortada es %s",tira);
   
    printf("\n\n");   
    printf("Pulse una tecla para finalizar");
   
    getchar();
    getchar();   
   
   
}
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Cortar tira de caracteres en C++
« Respuesta #6 en: 24 Octubre 2011, 23:04 pm »

¡Buenas!

scanf lee cadenas hasta que encuentra el primer caracter de tipo espacio en banco. Por eso no vas a poder leer frases utilizandola, prueba a utilizar fgets:

http://www.cplusplus.com/reference/clibrary/cstdio/fgets/

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Cortar tira de caracteres en C++
« Respuesta #7 en: 24 Octubre 2011, 23:35 pm »

Y con un bucle for?¿

Código
  1. #include "iostream"
  2.  
  3.  
  4. void Obtener_Tira(char txt[255],int num)
  5. {
  6. char Buff[255];
  7. memset(Buff,0,255);
  8. for(int n = 0; n != num; n++)
  9. {
  10. Buff[n] = txt[n];
  11. }
  12.  
  13. std::cout << "La cadena cortada es: " << Buff <<std::endl;
  14. getchar();
  15. }
  16.  
  17. int main(void)
  18. {
  19.  
  20. Obtener_Tira("Holaaaa buenos dias",9);
  21.  
  22. return 0;
  23. }
  24.  
  25.  

en este caso el programa devuelve "Holaaaa b" (asta el 9 caracter por que es un 9 el numero ingresado :=))

y para recojer el texto tengo entendido que gets() va muy bien,yo uso "cin" aun que este no va tan bien,hay que vaciar siempe el buffer!

saludos
« Última modificación: 24 Octubre 2011, 23:43 pm por Riki_89D » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Cortar tira de caracteres en C++
« Respuesta #8 en: 25 Octubre 2011, 05:15 am »

He hecho esto y si me corta la palabra, pero a nada que escriba una frase, los espacios no los coge y se keda colgado el programa, q puedo hacer?
Como ya te comento do-while debes utilizar fgets y tambien debes verificar que el numero indicado po el usuario (la posicion) sea menor que 25:
Código
  1. puts("Introduce la cadena de caracteres:");
  2. fgets(tira, 25, stdin);
  3.  
  4. puts("Introduce un numero:");
  5. if (scanf("%d", &n) == 1 && n >= 0 && n < 25)
  6.   tira[n]='\0';

----

Y con un bucle for?¿

...

en este caso el programa devuelve "Holaaaa b" (asta el 9 caracter por que es un 9 el numero ingresado :=))

y para recojer el texto tengo entendido que gets() va muy bien,yo uso "cin" aun que este no va tan bien,hay que vaciar siempe el buffer!
Si revisamos con cuidado el programa de raquelsg88 este es en lenguaje C.

Hay varios problemas con la solucion que propones: en C++ es un error modificar una cadena literal (la cadena "Holaaaa buenos dias") y no se aconseja el uso de la funcion gets (eso se describe a detalle en los temas fijos del foro).

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
s00rk

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: Cortar tira de caracteres en C++
« Respuesta #9 en: 25 Octubre 2011, 08:16 am »

No seria mas sencillo hacer un recorrido?

ejemplo:

Código
  1. string palabra = "";
  2.    int n = 0;
  3.    cout << "Ingresa Palabra: ";
  4.    cin >> palabra;
  5.    cout << "Ingresa Numero: ";
  6.    cin >> n;
  7.    if(n > palabra.size())
  8.    {
  9.          cout << "El numero ingresado es mayor al total de caracteres en la palabra";
  10.    }else{
  11.          for(int x = 0; x < n; x++)
  12.          {
  13.                  cout << palabra[x];
  14.          }
  15.    }

Bueno se me hace mas sencillo y corto y a la vez checamos que el numero ingresado no sea mayor a la cantidad de caracteres que contiene el string.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hd4870 no tira el fan
Hardware
ayleid 4 2,695 Último mensaje 5 Mayo 2010, 08:57 am
por ayleid
Alguien sabe buscar palabra de x caracteres y los demás caracteres a continuació
Programación Visual Basic
usuario oculto 3 5,006 Último mensaje 2 Agosto 2010, 18:36 pm
por Psyke1
Cantidad de caracteres en un arreglo y cortar una cadena
Programación C/C++
josri 5 3,842 Último mensaje 16 Marzo 2013, 16:34 pm
por naderST
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines