Formato de salida en C++

dagavi

He empezado la carrera de ingeniería informatica y en programación hay unejercicio en el que debo de sumar un segundo a una fecha que ha sido introducida como hora minuto segundo, el problema que tengo es que la salida debe de ser HH:MM:SS y si escribo en la entrada, por ejemplo: 12:59:59, en vez de salir el 13:00:00 sale 13:0:0

¿Como podría hacer para que el formato de salida tuviera dos digitos?

Gracias.

Edit: El código que he escrito hasta ahora es:

#include < iostream>
using namespace std;

int main(){
int h,m,s;
cin >> h >> m >> s;
s=s+1;
if (s>=60){
s=0;
m=m+1;
if (m>=60){
m=0;
h=h+1;
cout << h << ":" << m << ":" << s << endl;
} else {
cout << h << ":" << m << ":" << s << endl;
}
} else {
cout << h << ":" << m << ":" << s << endl;
}
}

VipeR_CS

Tienes que comprobar si los minutos y los segundos es una cantidad menor que 10. Si es menor a 10 le metes un 0 delante a piñón y sino lo dejas como está.

dagavi

Muchas gracias :D

oZk4h

Suponiendo k estes en primer curso y acabes de empezar no se cómo esk ya sabes programar en cplasplas xD. Nosotros en la asignatura f.informaticos (en electronica) hemos empezao con c haciendo programas para medir intensidades de circuitos con interruptores. Sera k en informatica teneis mas lvl y os meten mas duro.


Aprovechando el thread me gustaría k alguien aburrido me ayudase a crear una tabla de datos en C, organizados por columnas. No vale la solucion chapuza k he intentado hacer (clickear link para ver):http://img130.imageshack.us/img130/3615/tablauv4.jpg
Al compilarlo me salen las columnas desordenadas a trozos(unos a la izk otros derecha...vamos una chapuza XD).

Mi intencion es crear un tabla con las cabeceras correspondientes(simbolo, peso,etc..) y k kede todo perfectamente ordenado, pero.. no se k comandos usar ni na, ya k el profesor esto no lo ha explicao xD(me aburria y he decidido preguntaros para ir un poco x adelantao xD).

Bueno pues eso, espero vuestra ayuda.

salu2

smintcs

lo de la tabla lo puedes hacer de muchas formas, pero como seguramente no os lo han explicado todavia vete probando a añadir espacios donde veas q no te cuadra bien

si quieres ir adelantandote un poco puedes mirar algun manual y hacerlo con arrays que seria sencillo y tarde o temprano lo darás

te dejo aqui como seria el codigo con los espacios ya puestos, pero q conste q esta seria la version cutrilla

bueno te lo subo a un server temporal q mv se come los espacios
http://www.mytempdir.com/949356

maRc

Cambia el cout por:
cout << setfill('0') << setw(2) << h << setw(2) << m << setw(2) << s;

El setfill hace que el caracter de relleno sea el '0', el setw hace que cada cosa que imprimas tenga una longitud mínima de 2 caracteres, poniendo tantos carácteres de relleno como hagan falta.

Por otro lado, con que pongas un solo cout después de todos los if basta.

DArgo

#4 prueba a poner \t entre lo que quieras separar. Si son bastantes datos pon dos \t. Eso funciona con el printf y cout

dagavi

#6 Muchas gracias por eso. Me has reducido un código de 59 lineas a 19, me ha sido muy útil conocer eso (en un principio esa era la idea que yo tenía concebida, establecer X dígitos para el resultado, pero desconocía como hacerlo)

dagavi

De ahí que sea una ingeniería (números) y no una cerrera de letras :]

Pero weno, edito y listo xD

Usuarios habituales

  • dagavi
  • DArgo
  • maRc
  • smintcs
  • oZk4h
  • VipeR_CS