Hola Moderadores y Foreros !
Al siguiente Código le cambio valores al for( int i = 0; i<=10; i = i + 1 ), pero me sigue dando 16 - previamente le dí valores al FOR para que sí me muestre x pantalla " 16 " ; lo increíble es que si es un problema de buffer, no entiendo porqué SÍ respeta que cambie las coordenadas a gotoxy(3,19); y los valores del FOR ..... no !!! cada vez que modifico y compilo. Les comento que tengo la última versión Dev-C++ Embarcadero y también la 5.11( será ése el conflicto ??? )
Aquí, el Código =
#include <iostream>
#include <windows.h>
using namespace std;
void gotoxy(int x,int y)
{
HANDLE hcon;
hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y= y;
SetConsoleCursorPosition(hcon,dwPos);
}
int main()
{
int i;
for( int i = 0; i<=10; i = i + 1 )
gotoxy(3,19);
{
cout<<i<<"\n";
}
return(0);
}
/* Gracias por leer el mensaje */
El problema no es el entorno, es el codigo.
Hay dos variables i, una solo tiene ambito dentro del bucle for y el mismo solo tiene una sentencia (la de gotoxy), despues tenes un bloque de codigo (las llaves ahi no cumplen ninguna funcion mas que la de agrupar, las podrias sacar y el codigo generado seria exactamente el mismo) que se ejecuta una sola vez y que empuja una variable i sin inicializar en cout.
gotoxy(3,19);
for (int i = 0; i <= 10; ++i)
cout << i << endl;
VC++ al compilar te da un aviso:
c:\src\???.cpp(31) : warning C4700: uninitialized local variable 'i' used
Hola ! Probé todo lo que me dijiste y no me arroja errores PERO el Código no hace lo que yo busco, que es " Forzar " a que el conteo no muestre un Nro debajo del otro desde 0 a 10; lo que busco es que el Ciclo FOR a partir del gotoxy que le doy, " muestre todo el cálculo dentro de la misma posición, es decir, QUE DIRECTAMENTE me aparezca sólo el número 10 en el gotoxy que yo le indique.
Y de hecho lo logré cuando me apareció - sin las modificaciones que me sugeriste - el 16 únicamente en el gotoxy que propuse -, PERO no había caso como expliqué, de alterar los valores del FOR, y que me aparezca un nuevo valor.
Respecto del Visual C ++ no lo tengo instalado; Sólo tengo el Dev-C++ y en ninguna de las dos versiones instaladas arroja el error que mencionaste; aparece " el 16 " y no arroja ni Warning ni error.
Aquí el Código como quedó después de lo que me propusiste ( notá que SOLAMENTE el " 0 " respeta el gotoxy(3,19) .... debajo, desde el 1 hasta el 10 ningún valor respeta el gotoxy =
#include <iostream>
#include <windows.h>
using namespace std;
void gotoxy(int x,int y)
{
HANDLE hcon;
hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y= y;
SetConsoleCursorPosition(hcon,dwPos);
}
int main()
{
gotoxy(3,19);
/* { En foro me dicen q quite esto */
/* int i; En foro me dicen q quite esto */
for( int i = 0; i<=10; /* En foro ... i = i + 1 */ ++i )
/* gotoxy(3,19); En foro me dicen que lo ponga arriba del for */
/* { En foro me dicen q quite esto */
cout<<i<<endl;
{
return(0);
}
}
/* Gracias por reponderme */
Eso ya era otro problema en tu codigo de base, usaste \n que es un salto de linea y tenes que comprender que no lo lograste en ningun momento, tu bucle solamente llamaba a gotoxy en cada iteracion, nada mas, el cout estaba fuera del bucle y usaba otra variable i no inicializada. Ese 16 era una casualidad, podia ser cualquier valor y en mi caso era 0 por ejemplo.
Esto supongo que si hace lo que querias:
for (int i = 0; i <= 10; ++i)
{
gotoxy(3,19);
cout << i << "\r";
}
Funcionó !!! Muchas gracias Eternal Idol !
De nada ::)