Dev - C++ - ayuda con un programa con ternarios

 
Vista:
sin imagen de perfil

ayuda con un programa con ternarios

Publicado por Leonardo (2 intervenciones) el 20/05/2017 21:34:23
Buenas quisiera ver si hay alguien que me ayude a resolver este problema con ternarios ya que no se muy bien como manejar ese operador, y debo entregar ese programa por correo el lunes , solo se como validar la primera condicion del rango , pero hace falta ejecutar la operacion de capicua la de n%10,pero ya despues de eso no se como continuar ya que me pierdo y no se como continuar aqui debajo esta el problema:

"Realice un programa que dado un numero entero en el rango (-20.000 y 20.000) muestre si es capicuo , si es par o impar ,(no podra usar senencias de control) cree una funcion portada y una funcion capicua que retorne 1 si es capicua y 0 si no lo es, ademas determine la composcion del numero (descomponer en unidades , decenas,centenas,unidad de mil) y que determine si el numero ingresado es divisor de su digito menos significante (unidad) en caso de serlo ver si el resultado de dicha division es divisible de nuevo por el digito menos significante . "



estos son los comentarios sobre lo que se quiere con el programa :
todas las operaciones son secuenciales : capicua , par o impar, descomposicion y division del numero por
numero menos significante ingresado(si me hubiesen dejado hacerlas con if else o for lo hiciera sin preguntar pero con ternarios como es algo que no acostumbro a usar no se como desarrollar el ´programa y se me hace muy dificil continuar ya que no entiendo como realizar bien el programa )


1) antes que nada hay que crear una funcion portada y llamarla dentro del int main(){ portada() }
2)no es necesario usar reves para comparar ya que la funcion capicua hace todo ,simplemente es ver si el numero es capicua y ya .


si me pueden ayudar se los agradeceria en el alma

esto fue lo unico que logre hacer ya que no se como continuar :


1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
 
using namespace std;
 
int main(){
 
	int num;
cin>>num;
	(num>-20001&&num<20001)?cout<<"el numero ingresado es capicua" : cout<<"el numero ingresado no es capicua";
 
	return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda con un programa con ternarios

Publicado por agustin (522 intervenciones) el 20/05/2017 22:48:13
Yo lo que haría seria invertir el número y restar el ingresado con el invertido. Si da cero es capicua.
Para todo usar funciones y por supuesto tienes que usar bucles while o for ya que si no ¿como sabrás cuantos dígitos tiene el número. Los ternarios no son más que una forma abreviada de un condicional if else y nada más. Un ternario no puede sustituir a un bucle a no ser que uses etiquetas y goto que para mi opinión es lo peor que te puedes encontrar en un código de C/C++.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ayuda con un programa con ternarios

Publicado por Leonardo (2 intervenciones) el 21/05/2017 00:31:21
no es necesario un bucle simplemente es cuestion de usar los ternarios pero no se como implementarlos , si fuese con bucles o if else lo hiciera sin problemas igual gracias asi como tu yo quede cuando me pusieron ese ejercicio como lo hago sin for o if else WTF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda con un programa con ternarios

Publicado por agustin (522 intervenciones) el 21/05/2017 11:35:48
A ver, solo se me ocurren dos modos de hacer lo que pretendes sin bucles.
1-Si no se te permite aun usar funciones usar goto y etiquetas.
Te pongo un pequeño ejemplo usando goto. No me compila al usar ternarios con goto dentro asi que habrá que esperar que alguien que sepa mas que yo nos ilumine el porque no compila y da error justo ahi. Si sustituyo el ternario por un condicional va perfecto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    int num,aux,numInv=0,capicuo,resto;
 
    cout << "Introduce un numero: ";
    cin >> num;
    aux=num;
 
    InvertirNumero:
    resto=aux%10;
    numInv=numInv*10+resto;
    aux/=10;
    aux!=0 ? goto InvertirNumero : goto Fin;
 
    Fin:
    (numInv-num==0) ? capicuo=1 : capicuo=0;
    capicuo==1 ? cout << "Es capicuo" : cout << "No es capicuo";
    return 0;
}
//---------------------------------------------------------------------------

Asi si funciona pero uso condicional en vez de ternario:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    int num,aux,numInv=0,capicuo,resto;
 
    cout << "Introduce un numero: ";
    cin >> num;
    aux=num;
 
    InvertirNumero:
    resto=aux%10;
    numInv=numInv*10+resto;
    aux/=10;
    if(aux!=0) goto InvertirNumero; else goto Fin;
 
    Fin:
    (numInv-num==0) ? capicuo=1 : capicuo=0;
    capicuo==1 ? cout << "Es capicuo" : cout << "No es capicuo";
    return 0;
}

2-Si se te permite usar funciones, haciendo uso de recursibidad.
Te pongo un pequeño codigo para que veas como seria con recursividad:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream.h>
 
using namespace std;
 
int InvertirNumero(int num, int &numInv)
{
    int resto;
 
    resto=num%10;
    numInv=numInv*10+resto;
    num/=10;
    num!=0 ? InvertirNumero(num,numInv) : 0;
    return numInv;
}
 
int EsCapicuo(int num)
{
    int numInv=0,retval;
 
    numInv=InvertirNumero(num,numInv);
    (numInv-num==0) ? retval=1 : retval=0;
    return retval;
}
 
int main(int argc, char* argv[])
{
    int num,capicuo;
 
    cout << "Introduce un numero: ";
    cin >> num;
    capicuo=EsCapicuo(num);
    capicuo==1 ? cout << "Es capicuo" : cout << "No es capicuo";
    return 0;
}
//---------------------------------------------------------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar