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

Recorrer un string en c++

Estas en el tema de Recorrer un string en c++ en el foro de C/C++ en Foros del Web. Hola amigos, primero que todo saludos y que esten pasando unas felices navidades (la verdad es que yo no las estoy pasando, ya veran por ...
  #1 (permalink)  
Antiguo 19/12/2011, 14:00
 
Fecha de Ingreso: diciembre-2011
Mensajes: 16
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Recorrer un string en c++

Hola amigos, primero que todo saludos y que esten pasando unas felices navidades (la verdad es que yo no las estoy pasando, ya veran por que)... bueno me registre porque estoy desesperado y creo que aqui pueden ayudarme...

pues me mandaron un proyecto en C++ (DONDE NO PUEDO USAR ARREGLOS NI APUNTADORES, SOLO CICLOS Y CONDICIONALES), que trata de corregir SIGNOS ortograficos... donde la persona escribe su texto, y luego el programa debe corregir los errores de SIGNOS ortograficos tales como ?,¿,!,; ya saben...

bueno ya almacene todo ese texto asi:

string cad;
getline(cin,cad);

puedo usar todas las funciones de string.h... pero necesito una funcion que me recorra todo el string (el texto que guarde arriba) en busca de esos signos ortograficos y poder realizar mis validaciones para ver si existe algun error.

los errores se marcan de la siguiente manera “<<<< -EL ERROR- >>>>”

EJEMPLO DE LO QUE HACE EL PROGRAMA

Entrada:
maría tenía un lindo(muy dulce ) corderito de (tres colores:verde, rojo y azul. ¡Ella lo quería mucho! aunque a veces se preguntaba si ¿el la quería a ella?. De todas formas ella jugaba con el todos los días; lo alimentaba dos veces al día y jugaban y jugaban… hasta que se ¿.cansaban?


Salida:
María tenía un lindo (muy dulce) corderito de <<<<(>>>> tres colores: verde, rojo y azul. ¡Ella lo quería mucho! Aunque a veces se preguntaba si ¿el la quería a ella? De todas formas ella jugaba con el todos los días; lo alimentaba dos veces al día y jugaban y jugaban… Hasta que se <<<<¿.>>>> cansaban?



NO LES PIDO QUE ME HAGAN EL PROYECTO, SOLAMENTE SI ME PUEDEN DECIR QUE FUNCION PODRIA USAR PARA HACER EL RECORRIDO DEL STRING...RECUERDEN QUE NO PUEDO USAR ARREGLOS NI APUNTADOS.... SOLO CICLOS Y CONDICIONALES... ESPERO ME PUEDAN BRINDAR SU AYUDA MUCHACH@S.... DE UNA VEZ GRACIAS Y FELIZ NAVIDAD



  #2 (permalink)  
Antiguo 19/12/2011, 14:05
 
Fecha de Ingreso: diciembre-2011
Mensajes: 16
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Recorrer un string en c++

al principio intente usar strchr, pero parece que solo se usa con apuntadores... todas las funciones que vi usan apuntadores.... y eso no lo puedo usar al igual que arreglos
  #3 (permalink)  
Antiguo 19/12/2011, 14:10
 
Fecha de Ingreso: diciembre-2011
Mensajes: 16
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Recorrer un string en c++

aahh.... y si me pueden dar una breve explicacion de como usar la funcion que me sugieran.... disculpen tanta cosa
  #4 (permalink)  
Antiguo 19/12/2011, 15:57
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Recorrer un string en c++

No te entiendo a que te refieres con una funcion para recorrer. Un string se puede recorrar de la misma forma que un array de carateres

for(i=0 ; i<cad.size;i++) cout << cad[i];

Si por ejemplo imprimes caracter a caracter.

Ahora no creo que encuentres una solucion para lo que tu buscas. Tienes que desarrollar un algoritmo. Estos son conocidos como emparejamientos. Por lo general es emparejamiento de parentesis. Pero puede ser de cualquier otra cosas.

Una idea es crerar una cola. Cuando encuentras un ( ¿ ¡ pones ese caracter en la cola. Cuando encuentras un ) ? ! tienes que sacar un elemento de la cola. Y ademas tiene que coicidir. digamos si tenes un ) en la cola tendria que haber un (.

Espero que se entienda.
  #5 (permalink)  
Antiguo 19/12/2011, 21:06
 
Fecha de Ingreso: diciembre-2011
Mensajes: 16
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Recorrer un string en c++

Hola, gracias por responder!!

Bueno a lo que me refiero con recorrer, es que por ejemplo:

tengo una cadena "caracas es muy bonita"


entonces yo tenia pensando recorrer esa cadena caracter por caracter.. primero la 'c' luego la 'a' y asi sucesivamente... y cuando encontrara por ejemplo un '(' guardarlo en una variable y luego buscar otra vez un ')' tal como dijistes tu... (al menos eso entendi xD)

para recorrer la cadena caracter por caracter tenia pensado usar strchr.... pero NO puedo usar arreglos ni apuntadores... y parece que esa funcion solo se utiliza con apuntadores (ya que devuelven un apuntador segun lei)

TE ANEXO LO TENGO PARA GUARDAR TODO ESE TEXTO QUE VA A INTRODUCIR EL USUARIO

#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;

int main()
{


string cad;
getline(cin,cad);
system("pause");


}

donde cad es la cadena que pretendo recorrer en busca de los caracteres ortograficos...

Gracias, espero tu respuesta! =P
  #6 (permalink)  
Antiguo 20/12/2011, 05:03
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Recorrer un string en c++

Entonces tendrias que hacer algo asi:


Código C++:
Ver original
  1. for(i=0 ; i<cad.size;i++)
  2.      if (cad[i] == '(' ) cout << "Encontre un parentesis";
  #7 (permalink)  
Antiguo 20/12/2011, 10:39
 
Fecha de Ingreso: diciembre-2011
Mensajes: 16
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Recorrer un string en c++

Cita:
Iniciado por sam90 Ver Mensaje
Entonces tendrias que hacer algo asi:


Código C++:
Ver original
  1. for(i=0 ; i<cad.size;i++)
  2.      if (cad[i] == '(' ) cout << "Encontre un parentesis";



Hola, nuevamente gracias... una preguntita mas y ya!! no molesto mas xDDD!!


if (cad[i] == '(' ) cout <<

la parte del cad[i] eso no es un arreglo verdad ?¿?¿?
lo pregunto porque soy inexperto en esto!! y siempre que he visto algo entre corchetes asi como el cad[i] lo relaciono con arreglos.... agradezco tu respuesta!
gracias
  #8 (permalink)  
Antiguo 20/12/2011, 11:11
 
Fecha de Ingreso: diciembre-2011
Mensajes: 16
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Recorrer un string en c++

Hola... estaba probando el codigo que colgastes... y me dice el siguiente error..
12 E:\getline.cpp invalid use of member (did you forget the `&' ?)

no se si podrias hecharme una mano con eso.... gracias
  #9 (permalink)  
Antiguo 20/12/2011, 13:44
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Recorrer un string en c++

Si no te convence los cochetes prueba con el operador at.
Aqui una pagina con ejemplos:

http://www.cplusplus.com/reference/string/string/at/
  #10 (permalink)  
Antiguo 20/12/2011, 16:00
 
Fecha de Ingreso: diciembre-2011
Mensajes: 16
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Recorrer un string en c++

oye muchas gracias de verdad!! me sirvieron tus respuesta y consejos... gracias

feliz navidad y prospero año!! que dios te pague

Última edición por wachilango; 14/01/2012 a las 19:49

Etiquetas: funcion, programa, string
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 18:41.