Problema con programa...

Iniciado por Wazzp, 1 Septiembre 2010, 01:08 AM

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

Wazzp

Bueno tengo un problemilla..
Estoy escribiendo un programa que tome una cantidad de segundos introducida por el usuario, y cuente la cantidad de horas, minutos y segundos que hay en esa cantidad..
Ahora bien,Solo hice la parte en la que el usuario introduce los datos, se lo mande a un amigo para que pruebe el programa y cada vez que presiona enter,el mismo se cierra.. les dejo el codigo.. que deberia agregar para que el programa no se cierra con enter?
PD:La parte de "Presione enter para continuar" La voy a quitar una vez solucione este problema y pueda avanzar con el prog.. Tambien,Deberia usar la funcion if para hacer la parte del calculo de horas min y segs? Gracias por la ayuda!

Código (cpp) [Seleccionar]
#include <iostream>
main()
{
using namespace std;

int segundos;
cout << "Ingrese una cantidad de segundos" << endl;
cin >> segundos;
cout << "Ingresaste :";
cout << segundos << endl;
cout << "Presione enter para continuar." << endl;
return 0;
}

Littlehorse

Código (cpp,2,12,13) [Seleccionar]
#include <iostream>
int main()// Valor de retorno debe ser un entero.
{
using namespace std;

int segundos;
cout << "Ingrese una cantidad de segundos" << endl;
cin >> segundos;
cout << "Ingresaste :";
cout << segundos << endl;
cout << "Presione enter para continuar." << endl;
cin.ignore();//Descartas datos innecesarios que puedan existir en el buffer
cin.get();//Esperas que se presione una tecla.
return 0;
}


Utiliza el buscador del foro, podrás encontrar varios hilos que explican distintas formas de hacer pausas, que debería usarse, que no, etc.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

[L]ord [R]NA

#2
En lo que te refieres a si es necesario utilizar if para las horas la respuesta es no, simplemente tienes que pensar en una manera optima de pasar de segundo a minutos, y de minutos a horas. ten en cuenta que:

1hr = 60min = 3600seg y 1min = 60seg.

Esto te lleva a la siguiente deduccion, si divides la cantidad de segundos entre 3600 te dara la cantidad de horas... puedes restar la cantidad de segundos que utilizaste. entonces los segundos restantes puedes dividirlos entre 60 y te daran la cantidad de minutos, nuevamente vuelves y restas la cantidad de segundos utilizados y solo te quedarian los segundos. Esta forma es mas rapida, debido a que evitas tener que ejecutar varias veces una porcion  de codigo.

Código (cpp) [Seleccionar]

h=s/3600;
s-=(h*3600);
m=s/60;
s-=(m*60);

Gerik

Código (cpp) [Seleccionar]
# include <conio.h>
# include <stdio.h>
# include <iostream.h>

class Tiempo
      {public:
       int s,h,m,seg;

       Tiempo(){s,h,m,seg=0;
               };
       ~Tiempo(){};
       void time()
         {cout<<"...:::Conversion De Segundos A Horas Minutos y Segundo:::...";
         cout<<"\n\nDigite Los Segundos a Convertir: ";
         cin>>s;
         if(s>=3600)
               {h=s/3600;
                m=(s%3600)/60;
                seg=(s%3600)/60;
                }
         clrscr();
         cout<<"La Conversion de Segundos a Horas Minutos y Segundos es: ";
         cout<<"\n\n"<<h<<" Horas";
         cout<<"\n"<<m<<" Minutos";
         cout<<"\n"<<seg<<" Segundos";
         getch();
        }
      };
main(){
     Tiempo obj;
     obj.time();
     }


Espero Te sirva

[L]ord [R]NA

Que conste que ya Gerik le completo la tarea...

Código (cpp) [Seleccionar]

#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
int h, m, s;
cin>>s;
h=s/3600;
s-=(h*3600);
m=s/60;
s-=(m*60);
cout<<"Horas: "<<h<<" Minutos: "<<m<<" Segundos: "<<s<<endl;
cin.ignore();
cin.get();
}


@Gerik: Conio.h no es standar.

Wazzp

Gracias a todos por la ayuda.. No me habia dado cuenta de esos errores.. Yo habia leido lo del cin.ignore,lo intente pero pero igual no funcionaba, no sabia que tambien habia que usar el .get.. Recien me levanto de una siesta asi que ni bien me despierto bien me pongo a completar el codigo. Voy a intentar ignorar el codigo de Gerik asi lo hago yo solo,Gracias por la ayuda igual Gerik!

[L]ord [R]NA

Cuando termines el codigo postealo... no creo que dures mucho ahora que ya esta la idea.

Wazzp

#7
Gracias R.N.A. De todas formas,Aunque el codigo ya este hecho, Medio como que lo ignore al pasar porque me gustaria hacerlo yo solo para verificar que estoy entendiendo.. mi mas grave problema es que los libros que baje son de C y no de C++ por eso hay cosas que no funcionan XD!!! Soy medio tonto ya se pero todo a su tiempo. Mas tarde me paso por la sección de ejercicios o de libros para buscar mas info. Esto de la programacion no es tan dificil como pense!

Ns vemos.

Lh: Utiliza el botón modificar.

Entonces.... el codigo que quedo fue...
Código (cpp) [Seleccionar]
#include <iostream>
int main()
{
using namespace std;

int s;
cout << "Ingrese una cantidad de segundos" << endl;
cin >> s;
int h,m;
h=(s/3600);
s-=(h*3600);
m=(s/60);
s-=(m*60);
cout << "" <<std::endl;//agrega una linea para facitiliar la lectura
cout <<"Horas:"<<h<<endl;
cout << "Minutos:"<<m<<endl;
cout << "Segundos:"<<s<<endl;
cin.ignore();
cin.get();
return 0;
}code]

Por cierto,Hay alguna manera de agregar una linea sin usar el cout sin nada entre ""? Probe el \n y no sirvio... o lo use mal.

Littlehorse

CitarPor cierto,Hay alguna manera de agregar una linea sin usar el cout sin nada entre ""? Probe el \n y no sirvio

Código (cpp) [Seleccionar]

   cout<<"Cad1 \n";
   cout<<"\n";
   cout<<endl;
   cout<<"Cad2"<<endl;
   cout<<"Cad3"<<"\n";
   etc>
   
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Horricreu

CitarPor cierto,Hay alguna manera de agregar una linea sin usar el cout sin nada entre ""? Probe el \n y no sirvio

También puedes usar endl.

Saludos :P