El programa cerrara la válvula de desvió únicamente cuando el tanque detecte bajo nivel.
Programa Modificado C++
/* PROGRAMA ELABORADO POR: CARLOS FERRER
Rev may 2026
(Modificado para incluir interruptor de alto nivel y Válvula de desvió/Emergencia)
*/
#include<iostream> // Mostrar datos en pantalla
#include<fstream> // leer y escribir en un archivo de texto
#include<windows.h> // Control de ejecución (tiempo de refrescamiento de pantalla)
#include<locale.h>
using namespace std;
int main()
{
setlocale(LC_ALL,"spanish");
string bomba="APAGADA";
double presion=0;
string pantalla="ON";
string valvula_d="CERRADA";
int aux=1;
// Leemos los datos del archivo de texto prueba a través de la función
// Sheila (Puede ser cualquier nombre coloque el de mi hija)
inicio:
ifstream sheila("d:\\prueba.txt");
string nivel_b;
string nivel_a;
string valvula_s;
sheila >>nivel_b>>nivel_a>>valvula_s;
// Validamos la comunicación con el archivo de texto
if (nivel_b=="OFF" or nivel_b=="off" or nivel_b=="Off")
{
nivel_b="OFF";
}
else if (nivel_b=="ON" or nivel_b=="On" or nivel_b=="on")
{
nivel_b="ON";
}
else
{
nivel_b="No hay comunicacion";
}
if (nivel_a=="OFF" or nivel_a=="off" or nivel_a=="Off")
{
nivel_a="OFF";
}
else if (nivel_a=="ON" or nivel_a=="On" or nivel_a=="on")
{
nivel_a="ON";
}
else
{
nivel_a="No hay comunicacion";
}
if (valvula_s=="ABIERTA" or valvula_s=="Abierta" or valvula_s=="abierta")
{
valvula_s="ABIERTA";
}
else if (valvula_s=="CERRADA" or valvula_s=="Cerrada" or valvula_s=="cerrada" )
{
valvula_s="CERRADA";
}
else
{
valvula_s="No hay comunicacion";
}
if (nivel_b=="No hay comunicacion" or nivel_a=="No hay comunicacion" or valvula_s=="No hay comunicacion")
{
aux=1;
pantalla="ON";
}
else
{
aux=0;
pantalla="ON";
}
if (aux==0)
{
// imprimimos los valores en pantalla
if(pantalla=="ON")
{
system("cls");
cout <<"La Presion= "<<presion;
cout <<" - Tu bomba esta= "<<bomba<<endl;
cout <<" - El Switch de nivel bajo= "<<nivel_b;
cout <<" - El Switch de nivel alto= "<<nivel_a<<endl;
cout <<" - La valvula de servicio esta= "<<valvula_s;
cout <<" - La valvula de desvio esta= "<<valvula_d<<endl;
pantalla ="OFF";
}
// Establecemos un tiempo de 1/4 de segundo para ver los cambios en la presión
Sleep (1000);
//Simulamos la válvula de desvió
if (nivel_a=="OFF" and nivel_b=="OFF")
{
valvula_d="ABIERTA";
pantalla ="ON";
}
if (nivel_a=="OFF" and nivel_b=="ON")
{
valvula_d="ABIERTA";
pantalla ="ON";
}
if (nivel_a=="ON" and nivel_b=="OFF")
{
valvula_d="CERRADA";
pantalla ="ON";
}
// Simulamos la Presión
if (valvula_d=="CERRADA" and valvula_s=="CERRADA" and bomba=="ENCENDIDA")
{
presion=presion+3;
pantalla ="ON";
}
if (valvula_d=="CERRADA" and valvula_s=="ABIERTA" and bomba=="APAGADA")
{
presion=presion-3;
pantalla ="ON";
}
if (valvula_d=="CERRADA" and valvula_s=="ABIERTA" and bomba=="ENCENDIDA" and presion<32)
{
presion=presion+1;
pantalla ="ON";
}
if (valvula_d=="CERRADA" and valvula_s=="ABIERTA" and bomba=="ENCENDIDA" and presion>32)
{
presion=presion-1;
pantalla ="ON";
}
if (valvula_d=="ABIERTA" and bomba=="APAGADA" and valvula_s=="ABIERTA")
{
presion=presion-4;
pantalla ="ON";
}
if (valvula_d=="ABIERTA" and bomba=="ENCENDIDA" and valvula_s=="ABIERTA" and presion>28)
{
presion=presion-2;
pantalla ="ON";
}
if (valvula_d=="ABIERTA" and bomba=="ENCENDIDA" and valvula_s=="ABIERTA" and presion<28)
{
presion=presion+0.5;
pantalla ="ON";
}
if (valvula_d=="ABIERTA" and bomba=="APAGADA" and valvula_s=="CERRADA")
{
presion=presion-1;
pantalla ="ON";
}
if (valvula_d=="ABIERTA" and bomba=="ENCENDIDA" and valvula_s=="CERRADA" and presion<32)
{
presion=presion+1;
pantalla ="ON";
}
if (valvula_d=="ABIERTA" and bomba=="ENCENDIDA" and valvula_s=="CERRADA" and presion>32)
{
presion=presion-1;
pantalla ="ON";
}
//impedimos que la presión de negativo
if (presion<0)
{
presion=0;
pantalla ="ON";
}
// Controlamos el encendido y apagado de la bomba
if (nivel_a=="ON" and nivel_b=="OFF" and bomba=="ENCENDIDA")
{
bomba="APAGADA";
pantalla ="ON";
}
if (nivel_a=="ON" and nivel_b=="ON" and presion<20 and bomba=="APAGADA")
{
bomba="ENCENDIDA";
pantalla ="ON";
}
if (nivel_a=="ON" and nivel_b=="ON" and presion>40 and bomba=="ENCENDIDA")
{
bomba="APAGADA";
pantalla ="ON";
}
if (nivel_a=="OFF" and presion<40 and nivel_b=="ON" and bomba=="APAGADA")
{
bomba="ENCENDIDA";
pantalla ="ON";
}
if (nivel_a=="OFF" and nivel_b=="OFF" and bomba=="ENCENDIDA")
{
bomba="APAGADA";
pantalla ="ON";
}
}
// INFORMAMOS SI NO HAY COMUNICACIÓN CON EL ARCHIVO
if (aux==1)
{
if(pantalla=="ON")
{
system("cls");
cout <<" **** NO HAY COMUNICACIÓN CON EL ARCHIVO DE TEXTO *****";
pantalla ="OFF";
}
}
goto inicio;
}








