hacer que el programa me vuelva a pedir los datos

Iniciado por Pwma, 30 Noviembre 2010, 04:09 AM

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

Pwma

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);
}

Mr.Blue

con un while se hace

ej
do{
puts ("desea seguir? S/N");
gets (opcion);
}while  (opcion != 'N' && opcion != 'S'); // Validacion
while (opccion=='N'){    // Si opcion igual a N termina

.-......................
.............
.............
.............
}



Pwma

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.

Mr.Blue

do{
puts ("desea seguir? S/N");
gets (opcion);
}while  (opcion != 'N' && opcion != 'S'); // Validac

while (opccion=='N'){    // Si opcion igual a N termina




//Aca todo tu codigo que quieres repetir




//antes de cerrar llave tenes q volver a pedir dato
do{
puts ("desea seguir? S/N");
gets (opcion);
}while  (opcion != 'N' && opcion != 'S'); // Validacion para que el usuario no ingrese otro caracter q no sea " N " o " S "
}

EddyC

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 ?


pitka

yo lo hago de esta forma:

Código (cpp) [Seleccionar]

char resp;

do
{

//Todo tu codigo


cout <<"Salir? S/N ";
cin >>resp;

} while (toupper(resp) != 'S');



JuszR

#7
Solo lo paso a tu código:

Código (cpp) [Seleccionar]
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;
}

cout << "Listo! Alguna otra operacion? (3 para salir)" << endl;
cin >> caso;

}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;
}
}
}


cout << "Listo! Alguna otra operacion? (3 para salir)" << endl;
cin >> caso;
}
break;
case 3:

cout << "Saliendo.." << endl;

break;
default:
cout << "Opcion no valida" << endl;
break;
}
cout << "\n----------------------------------------------------"<<endl;
}

while (caso != 3);
}


[Intenta tabular y ordenar más el código, es un poco difícil de entenderlo así.]
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]