Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Pwma en 30 Noviembre 2010, 04:09 am



Título: hacer que el programa me vuelva a pedir los datos
Publicado por: Pwma en 30 Noviembre 2010, 04:09 am
hola
tengo un problema, solo me hace falta hacer q el programa me vuelva a pedir todos los datos pero no se como, me pueden ayudar? aqui esta mi programa:
#include <iostream>
using namespace std;
struct sensores {
int hora;
char  nombre [10];
int presiones;
int temperatura;
};
const int k = 10;
int main () {
sensores als [k];
char opc;
//primera captura
for (int i=0;i<k;i++) {
cout << "indica la hora_"; cin >> als.hora;
cout << "indica nombre del sensor_"; cin >> als.nombre;
cout << "indica presiones_"; cin >> als.presiones;
cout << "indica temperatura_"; cin >> als.temperatura;
}
int caso;
do {
cout << "\ncaso 1 listar: ";
cout << "\ncaso 2 ordenar: ";
cout << "\ncaso 3 salir: ";
cin >> caso;
switch(caso) {
case 1: {for (int j=0; j < k; j++) {
cout << " \nhora: " << als[j]. hora;
cout << " \tnombre: " << als[j]. nombre;
cout << " \tpresiones: " << als[j]. presiones;
cout << " \ttemperatura: " << als[j]. temperatura;
}
}break;
case 2: {
sensores aux;
for (int i=0;i < k; i++)
{ for (int j=i+1;j < k; j++)
{if (als [j].presiones < als .presiones)
{aux = als ;
als = als [j];
als[j] = aux;
}
}
}
} break;
case 3: {} break;
default: {} break;
}
cout << "\n----------------------------------------------------"<<endl;
}while (caso != 3);
}


Título: Re: hacer que el programa me vuelva a pedir los datos
Publicado por: Mr.Blue en 30 Noviembre 2010, 04:26 am
con un while se hace

ej
Código
  1. do{
  2. puts ("desea seguir? S/N");
  3. gets (opcion);
  4. }while  (opcion != 'N' && opcion != 'S'); // Validacion
  5. while (opccion=='N'){    // Si opcion igual a N termina
  6.  
  7. .-......................
  8. .............
  9. .............
  10. .............
  11. }



Título: Re: hacer que el programa me vuelva a pedir los datos
Publicado por: Pwma en 30 Noviembre 2010, 05:20 am
perdon por mi ignorancia, lo incluyo hasta abajo tal y como lo pasaste o tengo q modificarle algo? me aparecen en rojo los opciones =_= gracias.


Título: Re: hacer que el programa me vuelva a pedir los datos
Publicado por: Mr.Blue en 30 Noviembre 2010, 19:25 pm
Código
  1. do{
  2. puts ("desea seguir? S/N");
  3. gets (opcion);
  4. }while  (opcion != 'N' && opcion != 'S'); // Validac
  5.  
  6. while (opccion=='N'){    // Si opcion igual a N termina
  7.  
  8.  
  9.  
  10.  
  11. //Aca todo tu codigo que quieres repetir
  12.  
  13.  
  14.  
  15.  
  16. //antes de cerrar llave tenes q volver a pedir dato
  17. do{
  18. puts ("desea seguir? S/N");
  19. gets (opcion);
  20. }while  (opcion != 'N' && opcion != 'S'); // Validacion para que el usuario no ingrese otro caracter q no sea " N " o " S "
  21. }


Título: Re: hacer que el programa me vuelva a pedir los datos
Publicado por: EddyC en 4 Diciembre 2010, 18:26 pm
como te dicen aca con un while , podes hacerlo de la siguiente manera
creas una variable entera a la que llamas "flag" o "bandera" y la igualas a 0 , antes de pedir los datos por primera vez haces un while que incluya a todos y que tenga como condicion que tu variable "flag" o "bandera" sea igual a 0 , al final de todo preguntas si desea seguir , si desea seguir el flag lo dejas en 0, si no desea seguir lo pones en 1 y de esa manera ya no te pide mas los datos , me explico ?


Título: Re: hacer que el programa me vuelva a pedir los datos
Publicado por: nicolas_cof en 4 Diciembre 2010, 20:00 pm
No es buena idea usar gets();

Lo que no hay que hacer en C/C++. Nivel basico (https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html)

Salu10.


Título: Re: hacer que el programa me vuelva a pedir los datos
Publicado por: pitka en 5 Diciembre 2010, 13:27 pm
yo lo hago de esta forma:

Código
  1. char resp;
  2.  
  3. do
  4. {
  5.  
  6. //Todo tu codigo
  7.  
  8.  
  9. cout <<"Salir? S/N ";
  10. cin >>resp;
  11.  
  12. } while (toupper(resp) != 'S');



Título: Re: hacer que el programa me vuelva a pedir los datos
Publicado por: JuszR en 5 Diciembre 2010, 22:32 pm
Solo lo paso a tu código:

Código
  1. int caso;
  2. do {
  3. cout << "\ncaso 1 listar: ";
  4. cout << "\ncaso 2 ordenar: ";
  5. cout << "\ncaso 3 salir: ";
  6. cin >> caso;
  7. switch(caso) {
  8. case 1: {for (int j=0; j < k; j++) {
  9. cout << " \nhora: " << als[j]. hora;
  10. cout << " \tnombre: " << als[j]. nombre;
  11. cout << " \tpresiones: " << als[j]. presiones;
  12. cout << " \ttemperatura: " << als[j]. temperatura;
  13. }
  14.  
  15. cout << "Listo! Alguna otra operacion? (3 para salir)" << endl;
  16. cin >> caso;
  17.  
  18. }break;
  19. case 2: {
  20. sensores aux;
  21. for (int i=0;i < k; i++)
  22. { for (int j=i+1;j < k; j++)
  23. {if (als [j].presiones < als .presiones)
  24. {aux = als ;
  25. als = als [j];
  26. als[j] = aux;
  27. }
  28. }
  29. }
  30.  
  31.  
  32. cout << "Listo! Alguna otra operacion? (3 para salir)" << endl;
  33. cin >> caso;
  34. }
  35. break;
  36. case 3:
  37.  
  38. cout << "Saliendo.." << endl;
  39.  
  40. break;
  41. default:
  42. cout << "Opcion no valida" << endl;
  43. break;
  44. }
  45. cout << "\n----------------------------------------------------"<<endl;
  46. }
  47.  
  48. while (caso != 3);
  49. }

[Intenta tabular y ordenar más el código, es un poco difícil de entenderlo así.]