elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error con Operadores ternarios ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error con Operadores ternarios ?  (Leído 3,604 veces)
Onigiri

Desconectado Desconectado

Mensajes: 22


C++


Ver Perfil
Error con Operadores ternarios ?
« en: 26 Abril 2013, 09:00 am »

Hola;
pues estoy practicando con operador ternario.
Y pues aún no logro descubrir cuales son mis errores.

Código
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define Td 500
  4. #define Tn 800
  5.  
  6. main()
  7. {  char t;
  8. int  d,j,h;
  9.  
  10.      cout<<"\nIngresar Dia de Trabajo (1=Lunes; 2=Martes(..)) : "; cin>>d;
  11.  
  12.      do
  13.      {
  14.         cout<<"\nIngresar Turno (d/n) = "; cin>>t;
  15.         cout<<"\nIngresar Horas de trabajo = "; cin>>h;
  16.  
  17.         j = ((d!=7&&t=='d') ? (h*Td) : (d==7&&t=='d') ? (h*(200+Td)) : (d!=7&&t=='n') ? (h*Tn) : (h*(300+Tn)); )
  18.  
  19.         cout<<"Jornal = "<<j;
  20.      } while (d<0||d>7);
  21.  
  22.   getch();
  23.  
  24. }


Son las 3:00 A.M quizas es una tonteria pero de verdad no logro descubrir donde están mis errores.
//edit; no copie todo el codigo


« Última modificación: 26 Abril 2013, 14:08 pm por Onigiri » En línea

diskontrol

Desconectado Desconectado

Mensajes: 89


RAWR!


Ver Perfil
Re: Error con Operadores ternarios ?
« Respuesta #1 en: 26 Abril 2013, 11:09 am »

A simple vista eso no debe ni compilar... si eso es lo que te falla revisa los errores que te da el compilador

Si no te refieres a errores de compilación indica al menos que pretendes hacer :-)


En línea

Siempre ten tus cosas cuando las necesites con @Dropbox. ¡Una cuenta de 2 GB es gratis! http://db.tt/YxRhsCI
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Error con Operadores ternarios ?
« Respuesta #2 en: 26 Abril 2013, 11:38 am »


http://en.wikipedia.org/wiki/%3F:

Para comprenderlo.
En línea

Onigiri

Desconectado Desconectado

Mensajes: 22


C++


Ver Perfil
Re: Error con Operadores ternarios ?
« Respuesta #3 en: 26 Abril 2013, 14:07 pm »

El problema dice ésto.
Código
  1.      Los empleados de una fabrica trabajan en dos turnos, diurno y nocturno.
  2.             Se desea calcular el jornal diario de acuerdo con los siguientes puntos:
  3.              a) la tarifa de las horas diurnas es de 500 pesetas,
  4. b) la tarifa de las horas nocturnas es de 800 pesetas,
  5. c) caso de ser domingo, la tarifa se incrementara en 200 pesetas
  6.                     el turno diurno y 300 pesetas el turno nocturno.
  7.  
  8.  
  9.  
  10.  
  11.  


Si @x64Core ;
Y lo hago asi como esta.

Los errores que me salen son los siguientes por eso no encuentro el error.

Código
  1. Statement missing ;
(normalmente las condiciones else deben terminar en   ;
pero al ponerlas en casi todos los else me aparece Expression syntax, ahora solo le pongo en el último pero me aparece el statement missing)

Código
  1. 'j' is assigned a value that is never used
(esta si, no se porque si le he asumido j como valor int)



En línea

diskontrol

Desconectado Desconectado

Mensajes: 89


RAWR!


Ver Perfil
Re: Error con Operadores ternarios ?
« Respuesta #4 en: 26 Abril 2013, 14:31 pm »


Código
  1. Statement missing ;
(normalmente las condiciones else deben terminar en   ;
pero al ponerlas en casi todos los else me aparece expression syntax, ahora solo le pongo en el último pero me aparece el statement missing)


No estás usando elses...

te lo dejo más o menos funcional para que compares, aunque ahora que lo has editado está prácticamente bien

Código
  1. #include <iostream>
  2. #define Td 500
  3. #define Tn 800
  4.  
  5. int main () {
  6.  char t;
  7.  int d, h;
  8.  
  9.  std::cout << "\nIngresar Dia de Trabajo (1=Lunes; 2=Martes(..)) : ";
  10.  std::cin >> d;
  11.  
  12.  do
  13.    {
  14.      std::cout << "\nIngresar Turno (d/n) = ";
  15.      std::cin >> t;
  16.      std::cout << "\nIngresar Horas de trabajo = ";
  17.      std::cin >> h;
  18.  
  19.      std::
  20. cout << "Jornal = " << ((d != 7 && t == 'd') ? (h * Td) : (d == 7 && t == 'd') ? (h * (200 + Td)) : (d != 7 && t == 'n') ? (h * Tn) : (h * (300 + Tn))) << std::endl;
  21.  
  22.    }
  23.  while (d < 0 || d > 7);
  24.  return 0;
  25. }
  26.  


Y revisa el do-while, no creo que haga lo que pretendes.

Saludos!
En línea

Siempre ten tus cosas cuando las necesites con @Dropbox. ¡Una cuenta de 2 GB es gratis! http://db.tt/YxRhsCI
Onigiri

Desconectado Desconectado

Mensajes: 22


C++


Ver Perfil
Re: Error con Operadores ternarios ?
« Respuesta #5 en: 26 Abril 2013, 15:17 pm »

Gracias por estar ayudandome diskontrol
tristemente me da un monton de errores (uso borland 5.03)

Lo edite un poco hasta esto;
pero igual siguen saliendo errores

Código
  1. #include <iostream>
  2.    #define Td 500
  3.    #define Tn 800
  4.  
  5.    int main ()
  6.    {
  7.     char t;
  8.     int d, h;
  9.  
  10.     cout << "\nIngresar Dia de Trabajo (1=Lunes; 2=Martes(..)) : ";
  11.     cin >> d;
  12.  
  13.     do
  14.       {
  15.         cout << "\nIngresar Turno (d/n) = ";
  16.         cin >> t;
  17.         cout << "\nIngresar Horas de trabajo = ";
  18.         cin >> h;
  19.  
  20.         cout << "Jornal = "<< ((d != 7 && t == 'd') ? (h * Td) : (d == 7 && t == 'd') ? (h * (200 + Td)) : (d != 7 && t == 'n') ? (h * Tn) : (h * (300 + Tn)))
  21.  
  22.       } while(d<0);
  23.  
  24.     }
  25.  


Lo errores que me da son:

Código
  1. Statement missing ;
y me marca lo que hay en el while.
Código
  1. Code has no effect
me marca lo mismo.
Código
  1. Do statement must have while
me marca el ultimo corchete
Código
  1. Compound statement missing {
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Error con Operadores ternarios ?
« Respuesta #6 en: 26 Abril 2013, 15:47 pm »

* Cambia de compilador. Para recomendaciones utiliza el motor de búsqueda de los foros.

* Cuando utilizas el espacio de nombres estándar (std) debes indicarlo o, en el peor de los casos, utilizar la sentencia:
Código
  1. using namespace::std;
Antes de cualquier uso.

* En el calculo del jornal te falta el ';' para indicar el final de esa sentencia.

* La condición del bucle esta mal, esta es:
Código
  1. while (d < 0);
En buen cristiano se traduce a "mientras el día sea menor que cero". Debes cambiarlo para que se ejecute mientras el día sea valido (mayor o igual a 1 y menor o igual a 7):
Código
  1. while (d >= 1 && dia <= 7);

Un saludo
En línea

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
Onigiri

Desconectado Desconectado

Mensajes: 22


C++


Ver Perfil
Re: Error con Operadores ternarios ?
« Respuesta #7 en: 26 Abril 2013, 17:06 pm »

Gracias por responder!;
la cuestion es que pese a las modificaciones aun no he podido hacer que funcione.

Por cierto el " ; " siempre va en la úlmo lugar cierto?
o sea solo aqui

Código
  1. cout<<"Jornal = "<<((d!=7&&t =='d')?(h*Td):(d==7&&t=='d')?(h*(200+Td)):(d!=7&&t=='n')?(h*Tn):(h*(300 + Tn))    :huh:  ;  :huh: )

Estoy practicando estas operaciones
porque quiero aprenderlas.
Tengo un folleto pero solo explica en condiciones cortas como:
Código
  1. a = (b>a ? 2.0 : 12;)

Por eso aun no estoy segura de aquello
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Error con Operadores ternarios ?
« Respuesta #8 en: 27 Abril 2013, 02:40 am »

la cuestion es que pese a las modificaciones aun no he podido hacer que funcione.
Cuando eso suceda publica el código fuente completo y actualizado, si no lo haces no es posible solucionar el problema.

Por cierto el " ; " siempre va en la úlmo lugar cierto?
Correcto. El carácter ';' indica el final de una sentencia en los lenguajes C y C++.

En cuanto al programa con los cambios que te indique funciona correctamente:
Código
  1. #include <iostream>
  2. using namespace::std;
  3.  
  4. #define Td 500
  5. #define Tn 800
  6.  
  7. int main()
  8. {
  9.   char t;
  10.   char cont;
  11.   int d, h;
  12.  
  13.   do {
  14.      cout << "Ingresar Dia de Trabajo (1=Lunes; 2=Martes(..)) : ";
  15.      cin >> d;
  16.  
  17.      cout << "Ingresar Turno (d/n) = ";
  18.      cin >> t;
  19.  
  20.      cout << "Ingresar Horas de trabajo = ";
  21.      cin >> h;
  22.  
  23.      cout << "Jornal = " << ((d != 7 && t == 'd') ? (h * Td) : (d == 7 && t == 'd') ? (h * (200 + Td)) : (d != 7 && t == 'n') ? (h * Tn) : (h * (300 + Tn)));
  24.      cout << endl << endl;
  25.  
  26.      cout << "Continuar? (S/N)";
  27.      cin >> cont;
  28.   }while (cont == 's' || cont == 'S');
  29.  
  30.   return 0;
  31. }

De nuevo si continúan los problemas debes indicar cuales son.

Un saludo
En línea

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
Luz Violeta

Desconectado Desconectado

Mensajes: 26





Ver Perfil WWW
Re: Error con Operadores ternarios ?
« Respuesta #9 en: 27 Abril 2013, 14:28 pm »

1) Cambiame iostream.h por iostream (como corresponde)
2) Evitá conio como la plaga.
3) Siempre posteá la salida del compilador. Ejemplo:

Código:
% clang++ code.cxx
In file included from code.cxx:1:
In file included from /usr/include/c++/4.2/backward/iostream.h:31:
/usr/include/c++/4.2/backward/backward_warning.h:32:2: warning: This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++
      standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
      [-W#warnings]
#warning This file includes at least one deprecated or antiquated header. \
 ^
code.cxx:5:5: error: C++ requires a type specifier for all declarations
    main()
    ^~~~
code.cxx:16:115: error: expected ')'
             j = ((d!=7&&t=='d') ? (h*Td) : (d==7&&t=='d') ? (h*(200+Td)) : (d!=7&&t=='n') ? (h*Tn) : (h*(300+Tn)); )
                                                                                                                  ^
code.cxx:16:18: note: to match this '('
             j = ((d!=7&&t=='d') ? (h*Td) : (d==7&&t=='d') ? (h*(200+Td)) : (d!=7&&t=='n') ? (h*Tn) : (h*(300+Tn)); )
                 ^
code.cxx:16:117: error: expected expression
             j = ((d!=7&&t=='d') ? (h*Td) : (d==7&&t=='d') ? (h*(200+Td)) : (d!=7&&t=='n') ? (h*Tn) : (h*(300+Tn)); )
                                                                                                                    ^
1 warning and 3 errors generated.

4) No abusar el "using namespace", usar "using" o mejor usarlo en un ámbito local ... para algo están los namespaces, piensen un poco // en este caso se perdona, es un código de un ejercicio chiquitito.
5) No anides operadores ternarios de esa manera tan horrenda ...expandí de esta manera:

Código:
(condition) ? (if_true) : (if_false)


if (condition)
    if_true;
else
    if_false;
// [etc]


Saludos.
En línea

It's sort of like my past is an unfinished painting. And as the artist of that painting, I must fill in all the ugly holes and make it beautiful again.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
jerarquia de operadores
Scripting
Ferсhu 7 20,291 Último mensaje 5 Octubre 2007, 21:51 pm
por Ragnarok
Operadores Lógicos « 1 2 »
Java
zenydark 11 10,401 Último mensaje 24 Abril 2010, 22:20 pm
por zenydark
C++ - Sobrecarga de operadores
Programación C/C++
eltongabinghiman 2 2,741 Último mensaje 14 Marzo 2012, 18:14 pm
por x64core
Operadores de bits
Programación C/C++
david_BS 3 3,165 Último mensaje 4 Abril 2012, 22:37 pm
por durasno
Programa con operadores.
Java
spyller 0 1,477 Último mensaje 3 Septiembre 2012, 02:34 am
por spyller
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines