ayuda con un programilla!!

Iniciado por astro1, 28 Mayo 2011, 08:00 AM

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

astro1

hola gente programadora..  este es mi primer post en esta sección
es aserca de un programa que me dejaron para un especial jejeje...
se trata de un programa que capture una precion maxima de una caldera, y despues que pida los valores de precion de la misma, pero cuando llegue al valor ya dado de la precion maxima de la caldera que mande un mensaje de alerta...

bueno asta haora he logrado introducir la precion maxima y pedir los valores de la precion...  lo que me hace falta es que cuando ya exede o se da un valor de precion de la caldera igual o mayor se pare el proseso... es decir me manda el mensaje de alerta!! pero no se para el proseso sigue pidiendome valores...

¿como le podria hacer para que cuando ponga un valor igual o mayor a la precion maxima permitida me de obciones de precionar tal tecla y que haga que se pare el proceso, o reiniciar todo el proceso, tales obciones dirian


la caldera ha llegado a su limite de precion si quiere disipar la precion pulse "D" si quiere apagar la caldera pulse "S"

es decir si se pulsa D me mandaria un mensage de  " la caldera ya se encuentra trabajando establemente" y me volveria a pedir los datos de la precion

y la letra S simplemente me mandaria un mensaje de " la caldera ha sido apagada"
y terminaria el programa....


se prodra!! les pongo lo que llevo.



#include <stdio.h>
#include <conio.h>
int main ()
{
     int A, B, C, PM;
     printf("Introdice el limite de presion de la caldera: " ); scanf("%d",&PM);
     printf("Introdice la primera lectura de presion de la caldera: "); scanf("%d",&A);
     if (A>=PM) printf("%s\n\n","PRECAUCION. la caldera ha llegado a la presion limite. DEBE DICIPAR LA PRECION.  ");
     else
     printf("%s\n\n","la caldera puede seguir trabajando.  ");
     
     printf("Introdice la segunda lectura de presion de la caldera: "); scanf("%d",&B);
     if (B>=PM) printf("%s\n\n","PRECAUCION. la caldera ha llegado a la presion limite. DEBE DICIPAR LA PRECION.  ");

     else
     printf("%s\n\n","la caldera puede seguir trabajando.  ");
     
     printf("Introdice la tercera lectura de presion de la caldera: "); scanf("%d",&C);
     if (C>=PM) printf("%s\n\n","PRECAUCION. la caldera ha llegado a la presion limite. DEBE DICIPAR LA PRECION.  ");
     else
     printf("%s\n\n","la caldera puede seguir trabajando.   ");
     getch();

}

esperando me puedan ayudar les doy las gracias de antemano :)

satu

Hola

Varias cosas:
-Escribes fatal, deberías cuidar un poco eso porque cuesta entenderte
-Estructura el código para que sea mas legible
-Léete esto
-Utiliza la etiqueta GeSHi para el código (la tienes junto al botón de elegir el tipo de fuente)

Te dejo el código, creo que es esto lo que pides, espero que te sirva


#include <stdio.h>

int main ()
{
    int A, PM;
    char opcion=0;

    printf("Introduce el limite de presion de la caldera: " );
    scanf("%d",&PM);

    while(opcion!='s' && opcion!='S')
        {
        printf("\nIntroduce la lectura de presion de la caldera: ");
        scanf("%d",&A);

        if (A>=PM)
            {
            do
                {
                printf("\n\nPRECAUCION. la caldera ha llegado a la presion limite. DEBE DESIPAR LA PRESION\n\n");
                printf("Quieres apagarla(S) o desipar la presion(D)?\n");
                while(getchar()!='\n');
                scanf("%c", &opcion);
                }
            while(opcion!='S' && opcion!='s' && opcion!='D' && opcion!='d');
            if(opcion=='s' || opcion=='S')
                printf("La caldera ha sido apagada. Pulsa una tecla para salir\n\n");
            else
                printf("La caldera se encuentra funcionando normalmente\n\n");
            }
        else
            printf("la caldera puede seguir trabajando\n\n");
        }


    while(getchar()!='\n');
    getchar();
    return 0;
}


Si tienes alguna duda ya sabes donde estamos

Saludos
Breakbeat como forma de vida

astro1

waaa!! justamente como lo queria... que shido muchas gracias... aora el problema es entenderle jijiji... ya que soy nuevo y algunas cosas no las logro comprender.... aver si me puedes guir un poquitin aun que se que es mucho pedir jeje... te explico como le entiendo y me dices donde estoy mal y me corriges vale....todo sea con el fin de aprender.

#include <stdio.h> // nombre de fichero

int main ()  // cabecera de fuincion
{ //se abre el cuerpo  o desarrollo A o 1
    int A, PM; // se declaran variables enteras A para los valores de las preciones y PM para el limite de la precion
    char opcion=0; // aqui comienzan mis dudas por que pones esto??

    printf("Introduce el limite de presion de la caldera: " );// le dices que imprima
    scanf("%d",&PM);// captura en la variable PM

    while(opcion!='s' && opcion!='S')// mientras obcion = S?? otra de las cosas que no comprendo
        { // se habre cuerpo o desarrolo B o 2
        printf("\nIntroduce la lectura de presion de la caldera: ");Imprime
        scanf("%d",&A);//camptura en A la precion pedida

        if (A>=PM) //condicion si la precion que introdusco es mayor o igual vpue la de limite
            {//se habre cuerpo C o 3
            do // supongo que pides que haga lo que que esta enserrado en el cuerpo C cumpliendo la condicion if
                { //se habre el cuerpo D o 4
                printf("\n\nPRECAUCION. la caldera ha llegado a la presion limite. DEBE DESIPAR LA PRESION\n\n"); // imprime renglon abajo si la presion dada es mayor o igual a la precion limite.
                printf("Quieres apagarla(S) o desipar la presion(D)?\n");//imprime enseguida de dandome obciones
                while(getchar()!='\n');//se habre otra obcion de mientras??? para qe lo que sigue de while
                scanf("%c", &opcion);//para que es la %c conozco algunos otros como %f, %d %s pero ese no si me podrias decir para que es ??
                }//se cierra el cuerpo D o 4
            while(opcion!='S' && opcion!='s' && opcion!='D' && opcion!='d');// no se que hace este codigo
            if(opcion=='s' || opcion=='S')//condicion de salida o apagado de caldera
                printf("La caldera ha sido apagada. Pulsa una tecla para salir\n\n");//se imprime enseguida de precionar S
            else
                printf("La caldera se encuentra funcionando normalmente\n\n");//sino se imprime esto?? como vinculas a la D con esto??
            }se cierra el cierpo C o 3
        else
            printf("la caldera puede seguir trabajando\n\n");//se imprime si precionamos D????
        }// se cierra el cuerpo 2 o B


    while(getchar()!='\n');//no se para que sirve
    getchar();// conozco el getch pero no getchar??
    return 0;
}se cierra el cuerpo 1 o A!!

bueno asi seria masomenos... al leer esto te daras cuenta que no entiendo  el while he googleado aserca de esto pero no lo comprendo de verdad... lo veo como una if pero mas espesifica.... bueno espero me puedan ayudar...

mucgisimas gracias de antemano..

javito852

Hola.
Voy por pasos.

"char opcion=0; // aqui comienzan mis dudas por que pones esto??"

Eso se llama inicializar una variable y se debe hacer cuando se declara la variable. Se le da un valor inicial. Si no se le diese ningún valor, cogería uno residual que podría llevarte a fallos. Además la primera linea donde se utiliza esta variable es en el while, por lo tanto nos aseguramos que en la primera comprobación del while, option no valga S.

"while(opcion!='s' && opcion!='S')// mientras obcion = S?? otra de las cosas que no comprendo"
Busca info sobre el bucle "while". Lo que hace aquí es ejecutar el código que guarda entre corchetes en las siguientes lineas, las veces que sea necesario mientras se cumpla la expresión entre paréntesis, (en este caso, que la variable opcion valga "s" o "S"). Esta variable cambia cuando decides apagar la caldera.

"do // supongo que pides que haga lo que que esta enserrado en el cuerpo C cumpliendo la condicion if"
Busca información sobre el bucle "do....while". Este es parecido al while anterior, sólo que el primero hacía la comprobación al principio, y éste la hace al final. Por supuesto, al estar dentro del if anterior, se ejecutará solo en el caso de que se cumpla el if.

"while(getchar()!='\n');//se habre otra obcion de mientras??? para qe lo que sigue de while "
Fin del bucle "do....while". Como ya te he dicho, busca información sobre esto.

"scanf("%c", &opcion);//para que es la %c conozco algunos otros como %f, %d %s pero ese no si me podrias decir para que es ??"

c viene de char. Almacena un caracter introducido por pantalla en la variable "opcion".

"printf("La caldera se encuentra funcionando normalmente\n\n");//sino se imprime esto?? como vinculas a la D con esto??"
Fíjate que es parte de la sentencia else. Repasa la sintaxis de "if....else". Entonces será fácil de entender. Quiere decir que si en el scanf no has introducido el caracter "s" o "S", se supone entonces que has introducido el caracter D, que significa que disipas la presión, por lo tanto el mensaje de "la caldera se encuentra funcionando normalmente"

"printf("la caldera puede seguir trabajando\n\n");//se imprime si precionamos D????" Esta es 2a parte del primer if. Este mensaje sale mientras los valores actuales se mantienen por debajo del límite.

"while(getchar()!='\n');//no se para que sirve"
    getchar();// conozco el getch pero no getchar??"

Espera que pulses una tecla para salir. Busca info sobre getchar.



Consejos:
-Intenta programar más claro, usa variables con nombres que te recuerden que contiene. Ej: Si vas a guardar un nombre en una variable, llámala "nombre" en lugar de "a"
No te cortes al poner una linea de código en blanco para separar bucles o cosas distintas. Ayudará a la lectura.

- Respeta la identación.

- Busca manuales básicos de C, esas dudas son muy básicas y cualquier manual te las responde. Si una vez leidos varios manuales sigues con alguna duda en particular, busca ejercicios resueltos donde salga ese problema e intenta comprenderlos. Si entonces no te aclaras, pregunta.

- Para cualquier duda, usa la opción de buscar que te da el foro, muchas dudas ya habrán sido solucionadas con antelación por otro usuario. Google y el resto de buscadores son tus amigos, utilízalos.

- ¿obcion? ¿condicion si la precion que introdusco es mayor o igual vpue la de limite?
Antes de publicar mensajes, revísalos para comprobar que la ortografía son correctas y se entiende todo.

- Sigue trabajando.

Un saludo.




astro1

ok!! muchas gracias por la explicacion ahora tengo otra duda.....

como quedaria un codigo que cuando se cumpla una condicion la primera vez te imprima cierta cosa y la segunda vez que se cumpla la condicion se imprima otra cosa diferente!!!

es decir en el programa  te imprime lo mismo cuando exede la precion.... ahora seria que la primera vez que se cumpla la condicion de la precion que solo imprima CUIDADO y la segunda vez que se cumpla la misma condicion que imprima PELIGRO!!!

es decir dos cosas diferente para la misma condicion

gracias de antemano!!  :P

Akai

astro1, espero sinceramente que no estés preguntando para que te hagan los deberes de clase, porque lo parece.

Utiliza un contador para saber el número de veces que has entrado en esa condición, y según el contador, hacer una u otra cosa.

Y no, no voy a escribirte el código para hacerlo.

astro1

#6
AAA ok!! se utilizaria eso jeje :) pense que existia algun codigoalgo asi como if first time prinf ("tal cosa amarillo")
else prinf("azul")
if second time prinf("otra cosa naranja")
else prinf (azul)
if third time prinf("otra cosa rojo")
else prinf (azul)

jeje buscare algo de ese contador :) gracias akai :)

y encuanto tu especulacion no es asi.. de hecho el prgrama que me dejaron ya lo tengo tal y como me lo pidieron. lo que pregunto es para aprendisaje personal... :)

va alratin me doy una buelta para ver si le entendi!!! gracias a todos los que an colaborado :)