Programación General > C/C++

 No dejar espacio tras último dato

(1/1)

amgc:

--- Código: C++ ---bool perfecto(int n){    int suma, i;    suma = 0;    for (i = 1; i < n; i++)    {        if (n % i == 0) {            suma += i;            cout << i << " ";} // impresión de divisores    }    if (suma == n)        return true;    else        return false; } Ese bloque de código hace referencia a una función empleada para calcular si un número es perfecto y como pueden observar, hay una línea que imprime cada uno de sus divisores propios dejando un espacio entre éste y el siguiente, pero quisiera que no se dejase un espacio en blanco tras el último divisor. ¿Qué puedo hacer para resolver esto?

Reciban un cordial saludo.
Atentamente, Ángel Manuel. :comp:

Amilius:
Simple: imprimirlo antes.
Como de antemano es posible saber si ya imprimiste un número (actualizando una variable "bool"), no imprimas un espacio antes del número si aún no imprimiste un número.

amgc:

--- Cita de: "Amilius" ---Simple: imprimirlo antes.
Como de antemano es posible saber si ya imprimiste un número (actualizando una variable "bool"), no imprimas un espacio antes del número si aún no imprimiste un número.
--- Fin de la cita ---

Hola, cómo que imprimirlo antes, es que no le he entendido; lo que quiero es que tras el último divisor impreso no se deje ningún espacio. He probado con líneas para que no se dejase espacio si no se hacían repeticiones (i++) pero o bien falla o aparecen absurdeces. Si no le importa, escriba en la respuesta alguna línea de código para entendernos mejor.

Muchas gracias
Un saludo

herzdark:
mmm muy buena pregunta pero yo lo intentaria con el operador ? ej: condición?resp verdadera:resp falsa y ademas la condición del for no es <= porque como lo estas tomando no contas el valor i=n porque n es divisor de si mismo xej 6 tiene div a 1,2,3 y 6

--- Código: C++ ---bool perfecto(int n){int suma, i; suma = 0; for (i = 1; i <= n; i++)  {if (n % i == 0)     {suma += i;     cout << i <<(i!=n)? " ":endl;// impresión de divisores     }   } if (suma == n)    return true;  else    return false;}  
espero q te alla servido

amgc:

--- Cita de: "herzdark" ---mmm muy buena pregunta pero yo lo intentaria con el operador ? ej: condición?resp verdadera:resp falsa y ademas la condición del for no es <= porque como lo estas tomando no contas el valor i=n porque n es divisor de si mismo xej 6 tiene div a 1,2,3 y 6

--- Código: C++ ---bool perfecto(int n){int suma, i; suma = 0; for (i = 1; i <= n; i++)  {if (n % i == 0)     {suma += i;     cout << i <<(i!=n)? " ":endl;// impresión de divisores     }   } if (suma == n)    return true;  else    return false;}  
espero q te alla servido
--- Fin de la cita ---

Estimado usuario:

Su respuesta me ha sido de gran utilidad. Muchísimas gracias.
Reciba un cordial saludo.

Navegación

[0] Índice de Mensajes

Ir a la versión completa