Autor
|
Tema: Cortar tira de caracteres en C++ (Leído 11,443 veces)
|
raquelsg88
Desconectado
Mensajes: 12
|
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
Mensajes: 301
Siempre aprendiendo
|
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
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡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
Mensajes: 83
|
para cortar una cadena se trata solo de insertar un cero en una posicion del vector...
|
|
|
En línea
|
|
|
|
darkvidhack
Desconectado
Mensajes: 159
Be Linux my friend...
|
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
Mensajes: 12
|
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
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡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
Mensajes: 851
BCN CITY
|
Y con un bucle for?¿ #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 pm por Riki_89D »
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
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: puts("Introduce la cadena de caracteres:"); 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
|
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
Mensajes: 195
|
No seria mas sencillo hacer un recorrido? ejemplo: 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
|
|
|
|
|
|