No se que condición pongo mal, pero siempre me imprime una cifra más de la que quiero. Os pongo el codigo fuente, a ver si sabéis que es lo que hago mal.
Gracias de antemano.
// TRIANGULO DE FLOYD en C++, David JIménez Marco
#include<iostream>
using namespace std;
int main()
{
   cout<< " TRIANGULO DE FLOYD,David Jimenez Marco,grado en Ingenieria Informatica,UDIMA";
   cout<< "*******************************************************************************";
   cout<< endl;
   //Introducimos las variables
   int k=0,i,linea=1,ultimo=1;
// Leemos el número de filas del triangulo de Floyd
   cout<<"Introduce el numero de filas:";
   cin >> i;
   cout<< endl;
// En la iteracion, indicamos  cuando tenemos que hacer el salto de linea
   
   
 
   do {k++;
 
    
   
         if (k>ultimo)
         {
           linea=linea+1;
           ultimo=ultimo+linea;
           cout<<endl;
         }
   cout<<   k   ;
   }while    (linea<=i);     
    
     
 
 
   
   cout << endl;
   system("pause");
   
}