Presentación + dudas de principiante

Iniciado por Programador91, 1 Febrero 2012, 21:25 PM

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

Programador91

Buenas a tod@s:

Soy un chico de 20 años, no me dedico ni a la informática ni a la electrónica, sino a la automoción, sin embargo, todo el tema de ordenadores, y electrónica, siempre me ha ido mucho. Es más, cuando fue la hora de escojer qué estudios quería cursar, estaba entre estos 3. Pero escogí automoción porque es lo que me gusta más y a parte, los otros dos también se pueden aplicar a este campo.

Se poquito de eléctronica, ahora estoy un poco en ello y en informática solo informática de usuario. Pero ahora me estoy poniendo en programación. He empezado a hacer mis primeros programitas y van de fábula. Si queréis os lo paso para que digáis vuestra opinión.

Bueno el caso es que en uno de mis programas quiero centrar el texto en la pantalla, no quiero que me quede una lista de opciones en el menú principal del programa, pegado en el margen izquierdo de la pantalla. Como puedo hacerlo para que me quede centrado?

Muchas gracias de antemano y felicidades por el foro, me gusta mucho tanto su organización como el nivel que hay en él y los posts que hay colgados. Creo que me voy a pasar muchas horas navegando.

Vaya rabia no haberlo descubierto antes.



тαптяα

¿Que lenguaje de programación usas?
Más datos.

Anastacio

Si puso esto aca, es probable que sea C, o C++, u otra variante del C.

No tengo ni idea, vendria mejor saber algo de tu programa para eso.
You, stop to close my post, you were novice too!!!!!!!!!!!!

rir3760

Como ya se comento vamos a suponer que Programador91 esta aprendiendo C o C++.

En ese caso lo mejor es continuar aprendiendo este en su forma estándar ya que así lo aprendido esta garantizado a funcionar correctamente sin importar el compilador y SO utilizado.

Una vez lo domines (me refiero a Programador91) pasas a las extensiones del lenguaje como es el caso con las dimensiones de la consola.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Programador91

Buenas a tod@s:

Disculpad, estoy trabajando en C++ como muy bien algun@s habéis intuido por aquí. En concreto, trabajo con DEV-C++, no es por nada en concreto. Tan solo porque en uno de los tutoriales que vi en You tube, es el que utilitzaban para programar. Y de todos los que ví fue el que me convenció más. No sé si fue una buena o mala elección. Pero de momento me apaño con este.

Volviendo a las preguntas, hoy he estado trabajando en un nuevo programa que nos han pedido en clase y me han surgido nuevas dudas/problemas. Por lo tanto los añado en la lista de preguntas anteriormente formuladas:

-Centrar texto en pantalla (esta en modo completo)

-Como puedo hacer para que, en cualquier momento, el programa me vuelva al menú principal pulsando la tecla "ESC". Por ejemplo seleccionas una opción que no deseabas, para no tener que cerrar y volver abrir el programa, me gustaría que pulsando la tecla de escape el programa te devolviera al menú principal.

-Si introduzco un dato y este es incorrecto, como puedo hacer para que una vez escrito el dato, al pulsar enter para introducirlo y el pc verifique que este dato es incorrecto, me lo cambie a un color rojo por ejemplo (el mismo dato anteriormente introducido, no que me aparezca de nuevo en rojo)

-Tengo esta duda:

cout<<"Introduce el valor obtenido"<<endl;
               cout<<""<<endl;
               cin>>a;
 
               cout<<""<<endl;
               if (a < 0.5)           
               {
               cout<<"La resistencia interna de la bomba de la gasolina es inferior que la minima marcada por el fabricante"<<endl;
               cout<<""<<endl;
               cout<<"Substituir la bomba de combustible"<<endl;
               }
               if (a > 4.5)
               {
               cout<<"La resistencia interna de la bomba de la gasolina es mayor que la maxima marcada por el fabricante"<<endl;
               cout<<""<<endl;
               cout<<"Substituir la bomba de combustible"<<endl;
               }
               cout<<""<<endl;
               if ( 0.5<=a<=4.5)

                {   
               cout<<"La resistencia interna de la bomba de la gasolina es la correcta"<<endl;
               }

Me da un fallo que es: Si pongo un valor inferior a 0.5 primero me sale que es incorrecto porque es inferior a la que marca por el fabricante, sin embargo, acto seguido me sale la frase que si que es correcta.

Y lo mismo pasa si lo pongo superior a 4.5. Me pone primero que es incorrecto el dato porque es mayor al que dicta el fabricante pero acto seguido me la toma como correcta.

Donde está el fallo????

Muchas gracias

Disculpad por el error de no haber especificado el lenguaje utilitzado, y cualquier duda estaré el caso para poderla resolver lo antes posible.

Programador91

Cita de: Programador91 en  2 Febrero 2012, 16:20 PM

cout<<"Introduce el valor obtenido"<<endl;
               cout<<""<<endl;
               cin>>a;
 
               cout<<""<<endl;
               if (a < 0.5)           
               {
               cout<<"La resistencia interna de la bomba de la gasolina es inferior que la minima marcada por el fabricante"<<endl;
               cout<<""<<endl;
               cout<<"Substituir la bomba de combustible"<<endl;
               }
               if (a > 4.5)
               {
               cout<<"La resistencia interna de la bomba de la gasolina es mayor que la maxima marcada por el fabricante"<<endl;
               cout<<""<<endl;
               cout<<"Substituir la bomba de combustible"<<endl;
               }
               cout<<""<<endl;
               if ( 0.5<=a<=4.5)

                {   
               cout<<"La resistencia interna de la bomba de la gasolina es la correcta"<<endl;
               }



Buenas a tod@s:

He podido solucionar el problema que cito arriba, al final lo he solucionado del siguiente modo:

cout<<"Introduce el valor obtenido"<<endl;
               cout<<""<<endl;
               cin>>a;
 
               cout<<""<<endl;
               if (a < 0.5)           
               {
               cout<<"La resistencia interna de la bomba de la gasolina es inferior que la minima marcada por el fabricante"<<endl;
               cout<<""<<endl;
               cout<<"Substituir la bomba de combustible"<<endl;
               }
               else if (a > 4.5)
               {
               cout<<"La resistencia interna de la bomba de la gasolina es mayor que la maxima marcada por el fabricante"<<endl;
               cout<<""<<endl;
               cout<<"Substituir la bomba de combustible"<<endl;
               }
               cout<<""<<endl;
               else if ( 0.5<=a<=4.5)

                {   
               cout<<"La resistencia interna de la bomba de la gasolina es la correcta"<<endl;
               }

El resto de dudas aún siguen en pie :huh:

Muchas gracias de antemano

eleon

#6
Buenas:

Para centrar el texto tienes el famoso "gotoxy(x, y)" de la biblioteca "conio.h" pero es un crimen contra la programación, está totalmente desaconsejada esa librería asi que si la ves por ahi no la uses, de la que no tengo malas referencias es de la función "setw(num)" de la librería "iomanip" que viene por defecto en muchos compiladores. Aqui te dejo un ejemplo:

Código (cpp) [Seleccionar]
#include <iostream>
#include<iomanip>
using namespace std;

int main()
{
    cout << setw(30) << "texto" << setw(30) << "texto" << endl;
}


Acerca de lo de "presionar ESC para volver al inicio" hasta donde tengo entendido hay que usar una API para leer el "presionar" o "soltar" una tecla, para lo cual primero debes aprender a programar bien en C++ antes de meterte en esas cosas, lo que si que puedes hacer es un menú y un bucle:

Código (cpp) [Seleccionar]
while (opcion != 0)
{
    cout << "1- Opcion" << endl << "2- Opcion" << endl << "3-Salir";
    cin >> opcion;

    switch (opcion)
    {
       case 1:
           //Instrucciones
           break;
       case 2:
           //Instrucciones
           break;
        case 3:
            opcion = 0; //Al asignarle 0 a "opcion" saldrá del bucle y no volverá a mostrar el menú
            break;
}


Y para comprobar que la opcion seleccionada es correcta debes usar otro bucle dentro del anterior:

Código (cpp) [Seleccionar]
while (opcion < 1 || opcion > 3) //Mientras se salga del rango de las opciones se volverá a imprimir el mensaje y a pedir una opcion
{
    cout << "1- Opcion" << endl << "2- Opcion" << endl << "3-Salir";
    cin >> opcion;
}


Espero que te sirva, saludos.

Programador91

Buenas a tod@s:

Muchas gracias por las respuestas. Lo pondré en práctica a ver que tal. ;-)

Programador91

Buenas a tod@s:

Continuo con mi proyecto para presentar en clase.

Ahora me encuentro que tengo que introducir 2 variables y compararlas. En caso de que una de las dos no cumpla los requisitos saber cual es para diagnosticar el problema y la consecuente solución.

Aquí os ejemplifico el problema.

Tenemos que introducir dos valores diferentes que les vamos a llamar X e Y.

La X tiene que estar entre los valores 35 y 45 y la Y entre 3.0 y 4.0. Pero si X nos da 80 la Y entonces tendrá que darnos unos valores comprendidos entre los 300 y 400.

En caso de que alguna de las dos variables no entre dentro de estos parámetros como lo puedo hacer para que me diga por ejemplo X está por debajo de los valores indicados por el fabricante? Y por supuesto esto con el resto, es decir que me diga cual de las dos está mal y si está por encima o por debajo.

Muchas gracias de antemano. Por supuesto, en el final del trabajo en los agredicimientos aparecerá vuestro foro. Es lo mínimo que puedo hacer después de esta acojida ;-)

eleon

#9
La misma respuesta que antes, usa un bucle para evitar que el usuario introduzca un dato erróneo y usa un análisis de casos o condicionales para tratar los elementos. Ejemplo:

Código (cpp) [Seleccionar]
while (x < 35 || x > 80)  //Aqui se pedirá el valor de x mientras no esté entre 35 y 80 (min y max)
{
  cout << "Valor de X: ";
  cin >> x;
}
if (x >= 35 && x <= 45)  //Si está comprendido entre 35 y 45...
{
  while (y < 3 || y > 4) //...Se pide un valor de Y entre 3 y 4
  {
      cout << endl << "El valor de Y debe estar comprendido entre 3 y 4: ";
      cin >> y;
  }
else  //Y si no es asi...
{
   while (y < 300 || y > 400)  //... se pide un valor de Y entre 300 y 400
   {
      cout << endl << "El valor de Y debe estar comprendido entre 300 y 400: ";
      cin >> y;
    }
}

//Tratamiento de X e Y


Te lo dejo como guía de cómo plantear estos ejercicios, por supuesto tienes que acomodarlo a tu programa en particular.

Saludos.