Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con strings y con vectores char!

Estas en el tema de Problema con strings y con vectores char! en el foro de C/C++ en Foros del Web. Que tal soy nuevo en esto queria ver si me pueden ayudar, pues veran no me resulta este programa en la que tengo lo siguiente(ignoren ...
  #1 (permalink)  
Antiguo 25/11/2012, 19:36
 
Fecha de Ingreso: noviembre-2012
Mensajes: 3
Antigüedad: 11 años, 4 meses
Puntos: 0
Exclamación Problema con strings y con vectores char!

Que tal soy nuevo en esto queria ver si me pueden ayudar, pues veran no me resulta este programa en la que tengo lo siguiente(ignoren las demas librerias son parte de otras partes del programa)
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <cmath>
#include <sstream>
#include <cctype>

using namespace std;

class Logvec{
public:
void Frase(string fras){
int i,contp=0,lim=fras.size();//se supone que me tendria que obtener el espacio total de la cadena aun con espacios...
char aux[lim];
cout<<endl;
for(i=0;i<lim;i++){
aux[i]=fras[i];
if(fras[i]==' '){contp+=1;//NO SE PORQUE NO ENTRA A ESTE IF!!
i++;}
cout<<aux[i];//unicamente me imprime la 1era palabra la demas arroja basura
}
cout<<"\nContador de palabras:"<<contp;
system("pause>nul");
}
int Invertida(char *frasin,int tam){
int i;
char fras2[tam];
for(i=0;i<tam;i++){
for(int j=tam;j>0;j--){
fras2[i]=frasin[j];//se supone que son vectores char y no se asigna nada a fras2
}
}
return *fras2;
}
int Long(string longi){
int i=0,e=1,contp=0;
do{
if(isalpha(longi[i])){
contp++;}
if(longi[i+2]==' '&&longi[i+1]==' '){e-=2;}//se rompera el do cuando e sea igual ya que e va a delantado pero se rompe el programa
i++;
e++;
}
while(i!=e);
return contp;//uincamente cuenta hasta la 1era palabra
}
};


int main(int argc, char *argv[]){
Logvec vec1,vec2,vec3,vec4,vec5,vec6,vec7;
string num,mor,fras,longi;
char frasin[100];
int tam=0,i;
c
cout<<"\nIngresa cadena para obtener el numero de palabras:"<<endl;
cin>>fras;;
vec3.Frase(fras);
cout<<"\nIngresa una frase para invertirla:"<<endl;
cin>>frasin;
for(i=0;i<100;i++){
if(isalpha(frasin[i])){
tam++; }
}
cout<<""<<vec4.Invertida(frasin,tam);
system("cls");
cout<<"Ingresa una cadena para su longitud:"<<endl;
cin>>longi;
cout<<""<<vec5.Long(longi);
system("pause>nul");
return EXIT_SUCCESS;
}

la 1era funcion es Implementar un método que recibe una cadena que puede ser una frase y retorna el total de palabras que la integran.
la 2nda . Implementa un método que recibe como parámetro un vector de char y su tamaño y retorne el vector de char invertida.
la 3era. Implementa un método que recibe como parámetro una cadena (string) y retorne la longitud de la cadena, no tienes permitido usar métodos que obtenga longitud.
Ojala me puedan ayudar el nucleo del problema es el string ya sea pasarlo a vec char y de ahi poderlo hace con el vector
  #2 (permalink)  
Antiguo 25/11/2012, 20:18
Avatar de cotolon  
Fecha de Ingreso: octubre-2012
Mensajes: 55
Antigüedad: 11 años, 5 meses
Puntos: 10
Respuesta: Problema con strings y con vectores char!

Hola, para strings en vez de cin >> fras (esto solo te agarra la frase hasta el primer espacio, si escribes "hola a todos" te agarra solo "hola")

utiliza esto: getline(cin, frase);

Lo otro no sé porque tienes un i++ dentro del "NO Entra a este if"

P.D: con getline si entra xd, lo otro toma en cuenta q si hay un espacio significa q tiene una palabra a la izquierda o a la derecha o solo a la izquierda o solo a la derecha o puede tener 2 espacios tanto en la izquierda y en la derecha
  #3 (permalink)  
Antiguo 25/11/2012, 20:37
 
Fecha de Ingreso: noviembre-2012
Mensajes: 3
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Problema con strings y con vectores char!

Cotolon el i++; es para que se recorra al siguiente espacio desde ese momento ya que esta una letra y gracias tratare con el getline aunque hasta ahorita donde yo probe si imprimo la cadena con el cout si me la imprime completa, y presisamente puse lo de dos espacios porque no se dejaran en la cadena mas de 1 espacio

Etiquetas: funcion, int, programa, string, strings, vectores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:39.