ayuda con este tema

Iniciado por sofia555555, 28 Febrero 2019, 05:32 AM

0 Miembros y 2 Visitantes están viendo este tema.

sofia555555

Buenas noches a todos , tengo una duda chicos estoy haciendo un programa sobre un  ascensor y entonces
por ejemplo esta en planta Baja (PB)

son 12 pisos y quiero que nada mas tenga 4 paradas que serian PB-4-8-12

y yo elijo el numero 4

entonces quiero mostrar en pantalla lo siguiente

Piso = PB  es como inicia el programa pero quiero cuando arranque el ascensor  muestre en pantalla la siguiente secuencia

Piso= PB
Piso= 1
Piso= 2
Piso= 3
Piso= 4

Y ahi se detenga

entonces yo coloco lo siguiente

Código (cpp) [Seleccionar]


if(piso<0){
Piso=Piso+1;
Sleep(3000); // pongo 3 segundos por cada piso que sube es lo que tarda
}



Mis dudas son como haria que se detenga en 4  y como haria que la variable Piso pueda cambiar de PB a numero  , hay alguna variable que pueda utlizar caracteres y enteros?

srWhiteSkull

Cita de: sofia555555 en 28 Febrero 2019, 05:32 AM
hay alguna variable que pueda utlizar caracteres y enteros?

Nooo,

Pero podrías usar el cero.

PD a lo mejor PB es una constante si es porque aparece en algún código que estás copiando.

sofia555555

Cita de: srWhiteSkull en 28 Febrero 2019, 05:50 AM
Nooo,

Pero podrías usar el cero.

PD a lo mejor PB es una constante si es porque aparece en algún código que estás copiando.


si pero en los ascensores aparece PB despues los numero de pisos asi que no lo se , no esta bien poner el 0 quisiera Que diga PB despues 1 , 2 y asi

srWhiteSkull

Pero que diga dónde? Me imagino que eso saldrá solo en la pantalla del ascensor. De todas formas con esa información no puedo ayudarte y ahora mismo me voy a dormir.

Buenas noches.

sofia555555

Cita de: srWhiteSkull en 28 Febrero 2019, 06:59 AM
Pero que diga dónde? Me imagino que eso saldrá solo en la pantalla del ascensor. De todas formas con esa información no puedo ayudarte y ahora mismo me voy a dormir.

Buenas noches.

Si claro lo que quiero es mostrar en pantalla como si fuera la pantalla led de los ascensores

K-YreX

Cita de: sofia555555 en 28 Febrero 2019, 05:32 AM
Buenas noches a todos , tengo una duda chicos estoy haciendo un programa sobre un  ascensor y entonces
por ejemplo esta en planta Baja (PB)

son 12 pisos y quiero que nada mas tenga 4 paradas que serian PB-4-8-12

y yo elijo el numero 4

entonces quiero mostrar en pantalla lo siguiente

Piso = PB  es como inicia el programa pero quiero cuando arranque el ascensor  muestre en pantalla la siguiente secuencia

Piso= PB
Piso= 1
Piso= 2
Piso= 3
Piso= 4

Y ahi se detenga

entonces yo coloco lo siguiente

Código (cpp) [Seleccionar]


if(piso<0){
Piso=Piso+1;
Sleep(3000); // pongo 3 segundos por cada piso que sube es lo que tarda
}



Mis dudas son como haria que se detenga en 4  y como haria que la variable Piso pueda cambiar de PB a numero  , hay alguna variable que pueda utlizar caracteres y enteros?

Si quieres que se detenga en el 4 pues con un condicional, sencillo.
Para el tema de mezclar letras (PB) con números (1, 2, 3...) tienes varias opciones:
  • Usar <string> o <char> y entonces representar los números como caracteres en vez de como números. Si luego quieres incrementar algún valor tendrás que usar una función que los transforme de <char> a <int> y después a <char> nuevamente.
  • Usar <int> y que PB sea el 0. Luego cuando se vaya a mostrar la planta, hacer un condicional para que si la planta es el 0, se muestre "PB" y sino que se muestre el número de la planta.
  • Igual también te sirve usar una enumeración <enum>.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

sofia555555

#6
Cita de: YreX-DwX en 28 Febrero 2019, 12:21 PM
Si quieres que se detenga en el 4 pues con un condicional, sencillo.
Para el tema de mezclar letras (PB) con números (1, 2, 3...) tienes varias opciones:
  • Usar <string> o <char> y entonces representar los números como caracteres en vez de como números. Si luego quieres incrementar algún valor tendrás que usar una función que los transforme de <char> a <int> y después a <char> nuevamente.
  • Usar <int> y que PB sea el 0. Luego cuando se vaya a mostrar la planta, hacer un condicional para que si la planta es el 0, se muestre "PB" y sino que se muestre el número de la planta.
  • Igual también te sirve usar una enumeración <enum>.
Si logre resolver lo del piso que se detuviera , dejare por ultimo el tema de Pb y los numeros de los piso ,  ahora imaginemos que el ascensor llego al piso 4 abrio las puertas como hacer que duren 2 seg abiertas y despues las cierre como hacer ese condicional?

K-YreX

Te muestro un pequeño fragmento para darte una idea y que tú puedas adaptarlo a tus necesidades.
(Supongo que estás compilando desde Windows no?)
Código (cpp) [Seleccionar]

#include <iostream>
#include <windows.h>

using namespace std;

int main(){
    int piso_actual = 0;
    int piso_final = 4;
    while(piso_actual < piso_final){ // tambien funciona con piso_actual != piso_final
        if(piso_actual == 0)
            cout << "Piso: PB" << endl;
        else
            cout << "Piso: " << piso_actual << endl;
        piso_actual++; // incremento en 1 de la variable piso_actual
        Sleep(2000); // retardo de 2 segundos entre piso y piso
    }
}


Como estás empezando te comento un par de cosas:
  • El <if else> no tiene llaves {} por lo que sólo incluye una instrucción cada uno.
    Código (cpp) [Seleccionar]

    // Opcion 1 usando llaves
    if(var == 0){
        cout << var << endl;
    }
    cout << var+1 << endl;

    // Opcion 2 sin usar llaves, equivalente a la opcion 1
    if(var == 0)
        cout << var << endl;
    cout << var+1 << endl;


  • Si el programa lo vas a compilar en Linux tienes que cambiar <windows.h> por <unistd.h> y la función <Sleep(milisegundos)> por <usleep(microsegundos)>.
  • Hay más formas de mostrar el número de planta, pero esta es una de ellas. Si quieres ver cómo se haría de alguna otra forma, coméntamelo.

    Espero que esto te sirva y si tienes alguna duda más, siempre puedes preguntar. Suerte :-X
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

sofia555555

Cita de: YreX-DwX en  1 Marzo 2019, 03:27 AM
Te muestro un pequeño fragmento para darte una idea y que tú puedas adaptarlo a tus necesidades.
(Supongo que estás compilando desde Windows no?)
Código (cpp) [Seleccionar]

#include <iostream>
#include <windows.h>

using namespace std;

int main(){
    int piso_actual = 0;
    int piso_final = 4;
    while(piso_actual < piso_final){ // tambien funciona con piso_actual != piso_final
        if(piso_actual == 0)
            cout << "Piso: PB" << endl;
        else
            cout << "Piso: " << piso_actual << endl;
        piso_actual++; // incremento en 1 de la variable piso_actual
        Sleep(2000); // retardo de 2 segundos entre piso y piso
    }
}


Como estás empezando te comento un par de cosas:
  • El <if else> no tiene llaves {} por lo que sólo incluye una instrucción cada uno.
    Código (cpp) [Seleccionar]

    // Opcion 1 usando llaves
    if(var == 0){
        cout << var << endl;
    }
    cout << var+1 << endl;

    // Opcion 2 sin usar llaves, equivalente a la opcion 1
    if(var == 0)
        cout << var << endl;
    cout << var+1 << endl;


  • Si el programa lo vas a compilar en Linux tienes que cambiar <windows.h> por <unistd.h> y la función <Sleep(milisegundos)> por <usleep(microsegundos)>.
  • Hay más formas de mostrar el número de planta, pero esta es una de ellas. Si quieres ver cómo se haría de alguna otra forma, coméntamelo.

    Espero que esto te sirva y si tienes alguna duda más, siempre puedes preguntar. Suerte :-X
Si gracias uso windows , quiero dejar a lo ultimo lo de si esta en PB sera el 0 porque si no me complico  :-( , quisiera saber como hacer el condicional para con la funcion sleep para que cuando abra las puertas duren 2 segundos abiertas y  luego las cierre despues de los dos segundos

K-YreX

Para hacer eso lo mejor es controlar el estado de las puertas con una variable booleana <bool> cuyos posibles valores son true(1) y false(0). Como ya has visto como se usa la función <Sleep()> y cómo funcionan los condicionales, te dejo la respuesta en pseudocódigo para que tú te encargues de pasarlo a C++. :-X

bool puerta_abierta = true
si puerta_abierta
    esperar(2 segundos)
    puerta_abierta = false
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;