Ayuda con programa sencillo
Hola a todos!!
vereis, soy un novato en esto de la programacion en c++, y tengo un problemilla, ahi va:
Estoy haciendo un programilla que tiene que hacer:
-Pedir al usuario una cadena de caracteres, mezclando letras y numeros.
-EL programa debe separar las letras de los numeros en dos cadenas distintas y presentarlas por pantalla.
-Ha de ser capaz de eliminar los espacios en blanco.
Por ejemplo:
cadena de entrada; sd4534 fghi ils34
resultado: sdfghiils 453434
EL problema que tengo es el siguiente:
Hago un bucle for que vaya recorriendo cada caracter de la cadena de entrada, y viendo aver si es letra, numero o espacio, pero NO SE COMO ALMACENAR LA INFORMACION, me explico;
cuando el programa ve el tipo de caracter que es, nose como guardar y almacenar el caracter, para que luego lo muestre por pantalla.
JEJjejej vaya lioooooo.
No me entiendo ni yo, pero bueno, si me habeis entendido, agradeceria que me echaseis una mano, y sino lo entendeis decirlo y me intento explicar mejor.
SALUDOSSSSSSS
vereis, soy un novato en esto de la programacion en c++, y tengo un problemilla, ahi va:
Estoy haciendo un programilla que tiene que hacer:
-Pedir al usuario una cadena de caracteres, mezclando letras y numeros.
-EL programa debe separar las letras de los numeros en dos cadenas distintas y presentarlas por pantalla.
-Ha de ser capaz de eliminar los espacios en blanco.
Por ejemplo:
cadena de entrada; sd4534 fghi ils34
resultado: sdfghiils 453434
EL problema que tengo es el siguiente:
Hago un bucle for que vaya recorriendo cada caracter de la cadena de entrada, y viendo aver si es letra, numero o espacio, pero NO SE COMO ALMACENAR LA INFORMACION, me explico;
cuando el programa ve el tipo de caracter que es, nose como guardar y almacenar el caracter, para que luego lo muestre por pantalla.
JEJjejej vaya lioooooo.
No me entiendo ni yo, pero bueno, si me habeis entendido, agradeceria que me echaseis una mano, y sino lo entendeis decirlo y me intento explicar mejor.
SALUDOSSSSSSS
de momento he hecho esto, pero no me hace caso ni por asomo jejeje. Bueno, no os riais de la barbaridad que voy a poner:
#include <iostream.h>
#include <string.h>
void main (void)
{
int longitud, numeros[100], numero;
char texto[100];
char letras[100], letra;
cout<<"Escriba un texto con letras y numeros mezclados: "<<endl;
cin.getline (texto,100);
longitud=strlen(texto);
for (int i=0;i<longitud;i++){
if (texto[i]>=\'a\' && texto[i]<=\'z\' || texto[i]>=\'A\' && texto[i]<=\'Z\')//ver si es una letra (may o minuscula)
{
letra=texto[i];
letra=letras[i];
}
else if (texto[i]>=\'0\' && texto[i]<=\'9\')// ver si es numero
{
numero=texto[i];
numero=numeros[i];
}
}
cout<<letras<<numeros<<endl;
}
#include <iostream.h>
#include <string.h>
void main (void)
{
int longitud, numeros[100], numero;
char texto[100];
char letras[100], letra;
cout<<"Escriba un texto con letras y numeros mezclados: "<<endl;
cin.getline (texto,100);
longitud=strlen(texto);
for (int i=0;i<longitud;i++){
if (texto[i]>=\'a\' && texto[i]<=\'z\' || texto[i]>=\'A\' && texto[i]<=\'Z\')//ver si es una letra (may o minuscula)
{
letra=texto[i];
letra=letras[i];
}
else if (texto[i]>=\'0\' && texto[i]<=\'9\')// ver si es numero
{
numero=texto[i];
numero=numeros[i];
}
}
cout<<letras<<numeros<<endl;
}
en lugar de guardar el texto en la variable letra o numero, guardalo en los arrays
#include <iostream.h>
#include <string.h>
#include <ctype.h>//para usar isdigit() y isalpha()
#include <stdlib.h>//para usar atoi()
void main (void)
{
//declaraciones
int longitud, numero, letra;
numero=letra=0;//iniciar contadores a 0
int numeros[100];
char texto[100];
char letras[100];
//obtener cadena del usuario
cout<<\"Escriba un texto con letras y numeros mezclados: \"<<endl;
cin.getline (texto,100);
//fijar longitud de texto en variable
longitud=strlen(texto);
//bucle para clasificar los caracteres en numeros y letras
for (int i=0;i<longitud;i++)
{
//si es una letra guarda en array letras y sube contador
if(isalpha(texto[i]))
{
letras[letra]=texto[i];
letra++;
}
//si es un numero lo guarda en el array numeros y sube contador
if(isdigit(texto[i]))
{
numeros[numero]=atoi(&texto[i]);
numero++;
}
}
ahora le pones un bucle para mostrar cada array (letras y numeros), usando como longitud los contadores (letra y numero).
}
#include <iostream.h>
#include <string.h>
#include <ctype.h>//para usar isdigit() y isalpha()
#include <stdlib.h>//para usar atoi()
void main (void)
{
//declaraciones
int longitud, numero, letra;
numero=letra=0;//iniciar contadores a 0
int numeros[100];
char texto[100];
char letras[100];
//obtener cadena del usuario
cout<<\"Escriba un texto con letras y numeros mezclados: \"<<endl;
cin.getline (texto,100);
//fijar longitud de texto en variable
longitud=strlen(texto);
//bucle para clasificar los caracteres en numeros y letras
for (int i=0;i<longitud;i++)
{
//si es una letra guarda en array letras y sube contador
if(isalpha(texto[i]))
{
letras[letra]=texto[i];
letra++;
}
//si es un numero lo guarda en el array numeros y sube contador
if(isdigit(texto[i]))
{
numeros[numero]=atoi(&texto[i]);
numero++;
}
}
ahora le pones un bucle para mostrar cada array (letras y numeros), usando como longitud los contadores (letra y numero).
}
Muchas gracias a los dos por contestar.
keyMaker: nose que pasa pero no me funciona el programa con las correcciones que has hecho :(, por que puede ser??
kike: nunca habia usado arrays, (acabo de mirar un manual que tengo, no sabia ni lo que eran). Por cierto, para que sirve el comando "atoi"??? no lo entiendo, y el bucle final como se haria??
estoy muy verdeeee
GRACIAS
keyMaker: nose que pasa pero no me funciona el programa con las correcciones que has hecho :(, por que puede ser??
kike: nunca habia usado arrays, (acabo de mirar un manual que tengo, no sabia ni lo que eran). Por cierto, para que sirve el comando "atoi"??? no lo entiendo, y el bucle final como se haria??
estoy muy verdeeee
GRACIAS
ATOI CONVIERTE UNA CADENA A ENTERO
ej:
char cadena[4]="hola";
int n;
n=atoi(cadena);
printf("la cadena es %d",cadena);
bytes
ej:
char cadena[4]="hola";
int n;
n=atoi(cadena);
printf("la cadena es %d",cadena);
bytes
Gracias ISAIAS DUQUE GOMEZ.
Por favor necesito mas ayudaaa, sigo sin hacer que me funcione el dichoso programa.
Por favor necesito mas ayudaaa, sigo sin hacer que me funcione el dichoso programa.
ok el bucle que muestra las letras
for(int x=0;x<letra;x++)
cout<<'t'<<letras[x];
entre los dos bucles un fin de linea
cout<<endl;
y el bulce que muestra los numeros
for(int x=0;x<numero;x++)
cout<<'t'<<numeros[x];
for(int x=0;x<letra;x++)
cout<<'t'<<letras[x];
entre los dos bucles un fin de linea
cout<<endl;
y el bulce que muestra los numeros
for(int x=0;x<numero;x++)
cout<<'t'<<numeros[x];
Yo lo hubiera hacho de otra forma, pero bueno siguiendo tu misma linea, aqui te mando tu propio algoritmao con las correcciones correspondientes.
#include <iostream.h>
void main (void)
{
int longitud, numeros[100];
char texto[100];
char letras[100];
cout<<"Escriba un texto con letras y numeros mezclados: "<<endl;
cin.getline (texto,100);
longitud=strlen(texto);
for (int i=0, int j=0, int k=0; i<longitud; i++){
if ((texto[i]>='a' && texto[i]<='z') || (texto[i]>='A' && texto[i]<='Z'))//ver si es una letra (may o minuscula)
{
letras[j]=texto[i];
j++;
}
else if (texto[i]>='0' && texto[i]<='9')// ver si es numero
{
numeros[k]=texto[i];
k++;
}
}
cout<<letras<<numeros<<endl;
}
#include <iostream.h>
void main (void)
{
int longitud, numeros[100];
char texto[100];
char letras[100];
cout<<"Escriba un texto con letras y numeros mezclados: "<<endl;
cin.getline (texto,100);
longitud=strlen(texto);
for (int i=0, int j=0, int k=0; i<longitud; i++){
if ((texto[i]>='a' && texto[i]<='z') || (texto[i]>='A' && texto[i]<='Z'))//ver si es una letra (may o minuscula)
{
letras[j]=texto[i];
j++;
}
else if (texto[i]>='0' && texto[i]<='9')// ver si es numero
{
numeros[k]=texto[i];
k++;
}
}
cout<<letras<<numeros<<endl;
}
Me acabo de dar cuenta de que hay un pequeño problemilla:
si introduzco por ejemplo los numeros 1234,
el programa como resultado no me da 1234, sino 1234 234 34 4 :S:S.
El problema esta aqui no?:
//si es un numero lo guarda en el array numeros y sube contador
if(isdigit(texto[i]))
{
numeros[numero]=atoi(&texto[i]);
numero++;
}
Como hacer para que funcione?
gracias
si introduzco por ejemplo los numeros 1234,
el programa como resultado no me da 1234, sino 1234 234 34 4 :S:S.
El problema esta aqui no?:
//si es un numero lo guarda en el array numeros y sube contador
if(isdigit(texto[i]))
{
numeros[numero]=atoi(&texto[i]);
numero++;
}
Como hacer para que funcione?
gracias
