AYUDA problema al anidar un for y un while

Iniciado por cesarjgrd.18, 11 Diciembre 2011, 14:41 PM

0 Miembros y 1 Visitante están viendo este tema.

cesarjgrd.18

Buenas! Tengo que hacer un proyecto del cole! Apenas lo estoy empezando! Voy bien! Solo que necesito anidar un for con un while! al hacerlo y ejecutarlo se queda pidiendo datos de entrada y no hace mas nada! Si dejo el while solo si corre perfecto pero necesito que el while se repita! Aqui les dejo el code a ver si me pueden ayudar! Gracias

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

string punto(string parrafo){
int tamano, x=0, x1, x2, x3, x4;
string str, inicial, b1, b2, b3;
tamano=parrafo.size();
do {
while (x<=tamano && str!="."){
str=parrafo.substr(x, 1);
x=x+1;}
x1=x-2;
b1=parrafo.substr(x1, 1);
if (b1==" "){
parrafo=parrafo.erase(x1, 1);
x=x-1;}
x3=x-2;
b2=parrafo.substr(x3, 1);
if (b2== "," || b2==";"){
parrafo=parrafo.insert(x3," <<");
x4=x1+4;
parrafo=parrafo.insert(x4,">>");
x=x+5;}
b3=parrafo.substr(x, 1);
if (b3!=" "){
parrafo=parrafo.insert(x, " ");}
x2=x+1;
inicial=parrafo.substr(x2, 1);
transform(inicial.begin(),inicial.end(), inicial.begin(), ::toupper);
parrafo=parrafo.replace(x2, 1, inicial);
tamano=parrafo.size();
}
while (!(x==tamano));
return parrafo;
}

int main(){
string parrafo, parrafo1;
cout<<"Introduzca un texto"<<endl;
getline(cin, parrafo);
parrafo1=punto(parrafo);
cout<<parrafo1<<endl;
return 0;
}

Isótopo

Haz debug y fíjate en el tamaño de la variable x, porque yo diría que formas un bucle infinito y nunca retornas el parrafo.

-Asus Crosshair IV Formula            
-AMD Phenom II X6 1090T 3.94Ghz @1.38V
-Corsair H70
-Sapphire Radeon HD 6970 2GB Dual-Fan
-G.Skill PIS PC3-17066 4GB 1900MHz 7-9-7-20 @1.65V
-WD Caviar Black 500GB
-Seagate Barracuda Green 2TB x2
-Antec TruePower New 750W Modular
-Cooler Master Dominator CM-690

cesarjgrd.18

Cita de: Isótopo en 11 Diciembre 2011, 16:45 PM
Haz debug y fíjate en el tamaño de la variable x, porque yo diría que formas un bucle infinito y nunca retornas el parrafo.


Buenas amigo! Gracias por la ayuda! Pero me podrias decir como hacer eso?

Isótopo

Pues depende del compilador que estés usando. Debe de tener alguna opción que ejecute el código con pausas en cada línea para ver el desarrollo del programa. Así puedes ver el valor de cada variable y donde se te atasca exáctamente.

-Asus Crosshair IV Formula            
-AMD Phenom II X6 1090T 3.94Ghz @1.38V
-Corsair H70
-Sapphire Radeon HD 6970 2GB Dual-Fan
-G.Skill PIS PC3-17066 4GB 1900MHz 7-9-7-20 @1.65V
-WD Caviar Black 500GB
-Seagate Barracuda Green 2TB x2
-Antec TruePower New 750W Modular
-Cooler Master Dominator CM-690