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);
}
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
.-......................
.............
.............
.............
}
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.
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 "
}
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 ?
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.
yo lo hago de esta forma:
char resp;
do
{
//Todo tu codigo
cout <<"Salir? S/N ";
cin >>resp;
} while (toupper(resp) != 'S');
Solo lo paso a tu código:
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í.]