Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Wazzp en 1 Septiembre 2010, 01:08 am



Título: Problema con programa...
Publicado por: Wazzp en 1 Septiembre 2010, 01:08 am
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
  1. #include <iostream>
  2. main()
  3. {
  4. using namespace std;
  5.  
  6. int segundos;
  7. cout << "Ingrese una cantidad de segundos" << endl;
  8. cin >> segundos;
  9. cout << "Ingresaste :";
  10. cout << segundos << endl;
  11. cout << "Presione enter para continuar." << endl;
  12. return 0;
  13. }


Título: Re: Problema con programa...
Publicado por: Littlehorse en 1 Septiembre 2010, 02:56 am
Código
  1. #include <iostream>
  2. int main()// Valor de retorno debe ser un entero.
  3. {
  4. using namespace std;
  5.  
  6. int segundos;
  7. cout << "Ingrese una cantidad de segundos" << endl;
  8. cin >> segundos;
  9. cout << "Ingresaste :";
  10. cout << segundos << endl;
  11. cout << "Presione enter para continuar." << endl;
  12. cin.ignore();//Descartas datos innecesarios que puedan existir en el buffer
  13. cin.get();//Esperas que se presione una tecla.
  14. return 0;
  15. }

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


Título: Re: Problema con programa...
Publicado por: [L]ord [R]NA en 1 Septiembre 2010, 06:43 am
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
  1. h=s/3600;
  2. s-=(h*3600);
  3. m=s/60;
  4. s-=(m*60);


Título: Re: Problema con programa...
Publicado por: Gerik en 1 Septiembre 2010, 19:38 pm
Código
  1. # include <conio.h>
  2. # include <stdio.h>
  3. # include <iostream.h>
  4.  
  5. class Tiempo
  6.      {public:
  7.       int s,h,m,seg;
  8.  
  9.       Tiempo(){s,h,m,seg=0;
  10.               };
  11.       ~Tiempo(){};
  12.       void time()
  13.         {cout<<"...:::Conversion De Segundos A Horas Minutos y Segundo:::...";
  14.         cout<<"\n\nDigite Los Segundos a Convertir: ";
  15.         cin>>s;
  16.         if(s>=3600)
  17.               {h=s/3600;
  18.                m=(s%3600)/60;
  19.                seg=(s%3600)/60;
  20.                }
  21.         clrscr();
  22.         cout<<"La Conversion de Segundos a Horas Minutos y Segundos es: ";
  23.         cout<<"\n\n"<<h<<" Horas";
  24.         cout<<"\n"<<m<<" Minutos";
  25.         cout<<"\n"<<seg<<" Segundos";
  26.         getch();
  27.        }
  28.      };
  29. main(){
  30.     Tiempo obj;
  31.     obj.time();
  32.     }

Espero Te sirva


Título: Re: Problema con programa...
Publicado por: [L]ord [R]NA en 1 Septiembre 2010, 20:22 pm
Que conste que ya Gerik le completo la tarea...

Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::cin;
  4. using std::endl;
  5. int main()
  6. {
  7. int h, m, s;
  8. cin>>s;
  9. h=s/3600;
  10. s-=(h*3600);
  11. m=s/60;
  12. s-=(m*60);
  13. cout<<"Horas: "<<h<<" Minutos: "<<m<<" Segundos: "<<s<<endl;
  14. cin.ignore();
  15. cin.get();
  16. }
  17.  

@Gerik: Conio.h no es standar.


Título: Re: Problema con programa...
Publicado por: Wazzp en 1 Septiembre 2010, 22:07 pm
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!


Título: Re: Problema con programa...
Publicado por: [L]ord [R]NA en 1 Septiembre 2010, 22:13 pm
Cuando termines el codigo postealo... no creo que dures mucho ahora que ya esta la idea.


Título: Re: Problema con programa...
Publicado por: Wazzp en 1 Septiembre 2010, 22:15 pm
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
  1. #include <iostream>
  2. int main()
  3. {
  4. using namespace std;
  5.  
  6. int s;
  7. cout << "Ingrese una cantidad de segundos" << endl;
  8. cin >> s;
  9. int h,m;
  10. h=(s/3600);
  11. s-=(h*3600);
  12. m=(s/60);
  13. s-=(m*60);
  14. cout << "" <<std::endl;//agrega una linea para facitiliar la lectura
  15. cout <<"Horas:"<<h<<endl;
  16. cout << "Minutos:"<<m<<endl;
  17. cout << "Segundos:"<<s<<endl;
  18. cin.ignore();
  19. cin.get();
  20. return 0;
  21. }code]
  22.  
  23. 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.


Título: Re: Problema con programa...
Publicado por: Littlehorse en 2 Septiembre 2010, 22:46 pm
Citar
Por cierto,Hay alguna manera de agregar una linea sin usar el cout sin nada entre ""? Probe el \n y no sirvio
   
Código
  1.   cout<<"Cad1 \n";
  2.   cout<<"\n";
  3.   cout<<endl;
  4.   cout<<"Cad2"<<endl;
  5.   cout<<"Cad3"<<"\n";
  6.   etc>
  7.  


Título: Re: Problema con programa...
Publicado por: Horricreu en 2 Septiembre 2010, 23:28 pm
Citar
Por 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 (http://www.cplusplus.com/reference/iostream/manipulators/endl/).

Saludos :P


Título: Re: Problema con programa...
Publicado por: Wazzp en 2 Septiembre 2010, 23:38 pm
Intente usar endl; solo pero me tiraba un error.. como que faltaba algo antes.. por eso use el cout...


Título: Re: Problema con programa...
Publicado por: Horricreu en 2 Septiembre 2010, 23:56 pm
Intente usar endl; solo pero me tiraba un error.. como que faltaba algo antes.. por eso use el cout...

¿Qué error? ¿Has puesto std:: o using namespace std? Y además, endl y cout son cosas distintas.

Saludos :P


Título: Re: Problema con programa...
Publicado por: Wazzp en 3 Septiembre 2010, 21:03 pm
Sisi ya se.. Pero bueno no importa. No voy a rehacer el Trabajo intentando conseguir ese error.. Si vuelve a surgir,entonces en ese caso voy a postearlo a ver que pasaba :). Ahora,por eso de los caminos de la vida mi vieja desinstalo todo lo que tenia guardado,los libros y Codeblocks asi que tengo que buscar todo de vuelta :(... a Buscar se ha dicho!!

Gracias a todos por la ayuda!!

Edit: Okkk! Ya tengo todo de vuelta.. tengo una pregunta.. Una amiga me pidio si le podia hacer un progama que calculara la cantidad de horas minutos segundos y Dias que hay entre 2 fechas de tipo DD-MM-AAAA.. Ahora la pregunta es.. deberia preocuparme por los meses que tengan 30-31-28-29 dias?