elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 00:49  


Tema destacado: Suscripción al boletín mensual de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  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 974 veces)
raquelsg88

Desconectado Desconectado

Mensajes: 2


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

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: 263

Siempre aprendiendo


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

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 por satu » En línea

Breakbeat como forma de vida
do-while


Desconectado Desconectado

Mensajes: 604


Cuando me afeito, recuerdo porque me dejo barba.


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

¡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

¡¡¡Feliz año nuevo!!!
dewolo

Desconectado Desconectado

Mensajes: 83


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

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

Desconectado Desconectado

Mensajes: 119


Obsesionado!!


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

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: 2


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

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: 604


Cuando me afeito, recuerdo porque me dejo barba.


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

¡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

¡¡¡Feliz año nuevo!!!
Riki_89D


Desconectado Desconectado

Mensajes: 848


BCN CITY


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

Y con un bucle for?¿

Código
#include "iostream"
 
 
void Obtener_Tira(char txt[255],int num)
{
char Buff[255];
memset(Buff,0,255);
for(int n = 0; n != num; n++)
{
Buff[n] = txt[n];
}
 
std::cout << "La cadena cortada es: " << Buff <<std::endl;
getchar();
}
 
int main(void)
{
 
Obtener_Tira("Holaaaa buenos dias",9);
 
return 0;
}
 
 

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 por Riki_89D » En línea
rir3760


Desconectado Desconectado

Mensajes: 382


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

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
puts("Introduce la cadena de caracteres:");
fgets(tira, 25, stdin);
 
puts("Introduce un numero:");
if (scanf("%d", &n) == 1 && n >= 0 && n < 25)
  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

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
s00rk

Desconectado Desconectado

Mensajes: 139



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

No seria mas sencillo hacer un recorrido?

ejemplo:

Código
string palabra = "";
   int n = 0;
   cout << "Ingresa Palabra: ";
   cin >> palabra;
   cout << "Ingresa Numero: ";
   cin >> n;
   if(n > palabra.size())
   {
         cout << "El numero ingresado es mayor al total de caracteres en la palabra";
   }else{
         for(int x = 0; x < n; x++)
         {
                 cout << palabra[x];
         }
   }

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
me tira un error
Windows
el_mambero2 1 356 Último mensaje 3 Diciembre 2005, 03:54
por mit
Duda, cortar texto ¿bien con campo con pocos caracteres o en php alguna funcion?
Desarrollo Web
Rey11 2 574 Último mensaje 19 Enero 2006, 21:22
por Rey11
cadena de caracteres y caracteres en C
Programación C/C++
darkxxx 2 13,675 Último mensaje 3 Septiembre 2008, 22:51
por The_Judgement
Hd4870 no tira el fan
Hardware
ayleid 4 1,035 Último mensaje 5 Mayo 2010, 08:57
por ayleid
Alguien sabe buscar palabra de x caracteres y los demás caracteres a continuació
Programación Visual Basic
usuario oculto 3 2,030 Último mensaje 2 Agosto 2010, 18:36
por Psyke1
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines