Presentación + dudas de principiante

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

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

Xandrete

Oh, otro consejo. Cambia de IDE. Dev-Cpp lleva desatendido algunos años (y, entre otras cosas, tiene el MinGW desactualizado). Si te gusta mucho Dev-Cpp tienes wxDev-Cpp, que sí recibe actualizaciones periódicamente. Aquí el link de su web. Y aquí tienes un artículo en que dan varias razones para no usar Dev-Cpp y alternativas (entre estas alternativas está wxDev-Cpp).

Saludos

Programador91

Buenas a tod@s:

Gracias eleon por resolver mi duda. Voy a ponerlo en práctica a ver que tal funciona.

Xandrete, el link que me has pasado veo que hay diversos programas, cual escojo? No hay ninguna versión en inglés?

De todos modos muchas gracias.

Xandrete

Cita de: Programador91 en  4 Febrero 2012, 18:15 PM
Buenas a tod@s:

Gracias eleon por resolver mi duda. Voy a ponerlo en práctica a ver que tal funciona.

Xandrete, el link que me has pasado veo que hay diversos programas, cual escojo? No hay ninguna versión en inglés?

De todos modos muchas gracias.

Ya que usas Dev-Cpp, pues te recomiendo wxDev-Cpp, para que el cambio sea lo menos radical posible. ¿Versión en inglés? Claro. De hecho, lo raro es que cualquiera de estos programas no salga originalmente en inglés. Las traducciones suelen ser cosa de las comunidades de usuarios.

Saludos

Programador91

Buenas a tod@s:

Ups Xandrete, quería decir en español, jeje, disculpa. Es que en el link están todos en inglés.

Xandrete

¡Ah, amigo!

Diría que wxDev-C++ tiene disponible versión en español. Prueba a descargar el instalador y mira si en algún momento te pregunta por el idioma. Pero vamos, tiene que tener porque en el artículo de la wikipedia que corresponde a este IDE se dice que hay versión en español. De todas formas, en tu lugar ya me iría acostumbrando a que todo esté en inglés, es el idioma de la ciencia y la tecnología.

Saludos, jefe.

Programador91

Cita de: eleon en  4 Febrero 2012, 13:48 PM

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



Buenas a tod@s:

Aún continuo peleandome con el programa y aun hay cositas que hay que perfilar.

Bueno volviendo al caso del ejemplo de arriba. Aquí, tal y como lo has puesto si no introduces un valor que no esté comprendido dentro de los margenes no te lo deja introducir y a mi me interesaría que si te dejara introducirlo y posteriormente te dijese que está fuera de los rangos especificando si es inferior o superior.

Muchas gracias de antemano. Y eso de la programación tiene sus intringuilis. Que hasta no ves donde te has equivocado jode un huevo porque te comes el tarro un montón. O a veces te complia bien y no te dice que haya ningun error, pero sin embargo, el programa no correc omo lo tendría que hacer, dando por buenos valores que están mal.

Muchas gracias de nuevo y nada, a seguir peleando porque todo funcione como debe ser.

eleon

CitarBueno volviendo al caso del ejemplo de arriba. Aquí, tal y como lo has puesto si no introduces un valor que no esté comprendido dentro de los margenes no te lo deja introducir y a mi me interesaría que si te dejara introducirlo y posteriormente te dijese que está fuera de los rangos especificando si es inferior o superior.

Quita el bucle y pon condicionales, si es menor de 35 que imprima "tal", si es mayor que 80 que imprima "tal" y sino (ni menor de 35 ni mayor de 80, es decir, entre 35 y 80) que haga tal cosa.

No sé dónde podrías tener problemas, haz el código y luego pregunta dudas concretas.

Saludos.

Programador91

Buenas a tod@s:

Mira aquí te dejo el codigo a ver si le encuentras el fallo, yo lo he hecho de este modo, antes de leer tu recomendación.

De todos modos, lo he probado de poner de diferentes formas y ninguna da los resultados esperados. A parte, en el segundo case, el 9, que tan solo hay una variable, tampoco funciona del todo bien, ya que cuando le pongo 4.7, que tendría que estar dentro de los valores dados por el fabricante, no me lo da por bueno, sino por inferior al establecido.

Tengo otros case que funcionan igual dar una variable y decir si está dentro de los margenes establecidos o si es superior o inferior y funcionan correctamente. Sin embargo, estos, están escritos de la misma forma, y no me sale correctamente.

Bueno aquí os dejo el código y a ver si es que es un problema de sintaxis o es porque al no estar bien aprovechado, es decir, que si se puede reducir de algun modo o algo, y de este modo hacerlo más eficaz y por lo tanto rule bien o que.

Sé que en el primer apartado se podría poner mejor, pero esta ya era mi ultima tentativa de modo que si coincidian dos opciones pues me salieran ambas, pero ni de ese modo me sale  :(
Primero lo hacía todo junto j y k y todas sus variables pero juntas, si una estaba bien y la otra más baja de lo recomendado o más alta o viceversa con la j. Pero tampoco me salía por eso probé con esta opción individual pero tampoco.

cout<<"Mide la resistencia interna de la sonda de temperatura del aire entre los puntos  1 y 4"<<endl;
              cout<<""<<endl;
              cout<<"Introduce el valor obtenido"<<endl;
              cout<<""<<endl;
              cin>>j;
              cout<<""<<endl;
              cout<<"Mide la temperatura del aire"<<endl;
              cout<<""<<endl;
              cout<<"Introduce el valor obtenido"<<endl;
              cout<<""<<endl;
              cin>>k;
              cout<<""<<endl;
             
              if (15<=k<=25 & 2.3<=j<=2.7)
              {
              cout<<"Ambos valores introducidos son correctos"<<endl;
              }
              else if (k<15)
              {
              cout<<"La temperatura introducida es mas baja a la necessaria para realizar la prueba"<<endl;
              }
              else if (k>25)
              {
              cout<<"La temperatura introducida es mas alta a la necessaria para realitzar la prueba"<<endl;
              }
              else if (j<2.3)
              {
              cout<<"La resistencia introducida es mas baja a la marcada por el fabricante"<<endl;
              }
              else if (j>2.7)
              {
              cout<<"La resistencia introducida es mas alta a la marcada por el fabricante"<<endl;
              }
              cout<<""<<endl;
              system ("PAUSE");
              system ("CLS");
              break;
     
     case 9:
             
             cout<<""<<endl;
             cout<<"VERIFICACION DEL SENSOR DE LA PRESSION ABSOULTA"<<endl;
             cout<<""<<endl;
             cout<<"Mide la tension entre los puntos C (+) i A (-) del sensor, que corresponen a la tension d'alimentacion"<<endl;
             cout<<""<<endl;         
             cout<<"Introduce el valor obtenido"<<endl;
             cout<<""<<endl;
             cin>>l;
             cout<<""<<endl;
             
             if (l<4.7)
             {
             cout<<"La tension introducida es mas baja a la indicada por el fabricant"<<endl;
             }
             else if (l<=4.7 && l <= 5.2)
             {
             cout<<"La tension introducida esta dentro los parametres del fabricante"<<endl;
             }
             if (5.2<l)
             {
             cout<<"La tension introducida es mes alta a la marcada por el fabricante"<<endl;
             }
             cout<<""<<endl;
             system ("PAUSE");
             system ("CLS");
             break;

Muchas gracias de antemano, continuaré mirando donde está el fallo o que pero es que me da rabia porque como el case 9 tengo muchos, que solo son una sola variable y tambien me fallan, porque no me terminan de ir bien, porque me dan valores como malos cuando me los tendría que dar por buenos.

Y perdonad las molestias. Ya digo, soy un principiante, y aunque me leo los muchos manuales que me he descargado, no termino de encontrar solución alguna a las pegas que me voy encontrando.

eleon

#18
Esto no es correcto:

Código (cpp) [Seleccionar]
            if (l<4.7)
            {
            cout<<"La tension introducida es mas baja a la indicada por el fabricant"<<endl;
            }
            else if (l<=4.7 && l <= 5.2)
            {
            cout<<"La tension introducida esta dentro los parametres del fabricante"<<endl;
            }
            if (5.2<l)
            {


Para un análisis de casos se deben cumplir dos condiciones:
1- Todas las posibilidades deben estar abarcadas.
2- Una posibilidad no puede aparecer en dos casos distintos.

Tanto el primer como el segundo if se ejecutarán si el valor de "l" es menor que 4.7, por tanto es erróneo. Además en el segundo if poner "l<=4.7 && l <= 5.2" es redundante, ya que si es menor que 4.7 también va a ser menor que 5.2.

Saludos.

rir3760

Aparte de lo ya comentado por eleon hay otros errores al principio del programa, en este condicional:
Código (cpp) [Seleccionar]
if (15<=k<=25 & 2.3<=j<=2.7) ...
Cuando deseas verificar si un valor esta dentro de un rango no puedes utilizar la forma usual en matemáticas "15 <= k <= 25". En su lugar debes indicar las dos condiciones, por ejemplo "15 <= k && k <= 25".

También debes utilizar de forma consistente los operadores, en tu caso debes utilizar el operador lógico "&&". El operador '&' es valido pero su uso tiene otra intención (operación AND a nivel de bits).

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