C/Visual C - Signo + o -

   
Vista:

Signo + o -

Publicado por Alejandro (3 intervenciones) el 27/05/2016 17:15:57
Hola que tal, soy nuevo en el lenguaje C.

En un ejercicio me piden que muestre el signo postivo o negativo segun sea el numero. Mi pregunta es cual es el codigo para mostrar el signo de un numero?

Por ejemplo tengo una variable float con el valor 75.43. En pantalla me tiene que aparecer +75.43.
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

Signo + o -

Publicado por agustin (179 intervenciones) el 27/05/2016 19:58:10
Pues no se si existe esa opción en C pero puedes hacerlo asi:
1
2
3
4
5
6
7
8
9
10
11
12
char signo;
float n;
 
printf ("Introduce un valor: ");
scanf ("%f",&n);
if (n>0)
   signo='+';
else if(n <0)
   signo='-';
else
   signo=0;
printf ("El valor es: %c%f\n",signo, n);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Signo + o -

Publicado por Chema (187 intervenciones) el 27/05/2016 21:03:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#define Sig(n)  (-(n < 0) )
 
 int main(void) {
	float a;
	int i;
	int b = 0;
	a = -15.123;
 
	 for (i = 0; i < 15; i++){
		 a+= i;
		 b = Sig(a);
		 printf("%g\t%d\n", a,b);
	 }
 
	 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
2
Comentar

Signo + o -

Publicado por Tom (481 intervenciones) el 27/05/2016 21:14:50
Otra más :D
1
printf("%c%d\n", (n > 0) ? '+' : (n < 0) ? '-' : ' ', abs(n));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Signo + o -

Publicado por agustin (179 intervenciones) el 28/05/2016 11:15:25
Se supone que es un float por lo que debería usar fabs. Es básicamente lo mismo que hago yo pero usando el método abreviado del condicional. Buen aporte.
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

Signo + o -

Publicado por agustin (179 intervenciones) el 28/05/2016 11:18:31
Checa ¿Podrías explicar que hace ese define? Por lo que yo entiendo defines una función ¿no? Pero ¿eso también mostraría el signo +?
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

Signo + o -

Publicado por Alejandro (3 intervenciones) el 28/05/2016 00:54:49
Muchas gracias a todos, me funciono el de todos. Ultima pregunta, como hago un cronometro??
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

Signo + o -

Publicado por agustin (179 intervenciones) el 28/05/2016 11:27:44
Deberías crear otro post para esa pregunta pero ya te digo que es muy dependiente del S.O.
Para eso se podría usar un timer que no es lo más preciso del mundo mundial pero te sacaría del apuro lo que pasa es que no es para nada estándar y depende del IDE elegido ya que en POO es un objeto y cada IDE tiene el suyo.
Otra opción es usar la API del S.O. lo cual tampoco es estándar ya que cada S.O. tiene la suya. En Windows podrías usar por ejemplo GetTickCount al comenzar el proceso que quieres cronometrar y volverlo a usar al terminarlo y restando los dos valores obtenidos tendrías el tiempo transcurrido.
Otro modo seria usar time.
La manera más estándar que se me ocurre seria crear un hilo y en este colocar un bucle con un sleep con lo que dependiendo del valor del sleep consumiría más o menos recursos pero podrías saber el tiempo también pero dependiendo de lo que hagas en el hilo será más o menos preciso.
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

Signo + o -

Publicado por Alejandro (3 intervenciones) el 28/05/2016 19:07:27
Muchas graciaas!! buen datoo.. y mil disculpas por preguntar aca, lo tendre en cuenta
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

Signo + o -

Publicado por Chema (187 intervenciones) el 28/05/2016 12:10:33
--¿Podrías explicar que hace ese define? Por lo que yo entiendo defines una función MACRO ¿no? Pero ¿eso también mostraría el signo +?----


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 #define Mask(n) (n == -1 ? ' ' : '+')
 #define Sig(n)  (-(n < 0X0) )
 #define Sigmask(n) (Mask(Sig(n)))
 
 int main(void) {
	float a;
	int i;
	a = -15.123;
 
	for (i = 0; i < 15; i++,a+= i)
		 printf("%c %g\t\n", Sigmask(a),a)
		 ;
 
	 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

Signo + o -

Publicado por Rafael (17 intervenciones) el 28/05/2016 17:36:02
lee un poco sobre directivas Preprocesador la verdad que son muy utiles te permiten casi que poner funciones "siempre y cuando sean pequeñas" parecidas a funciones inline pero en ese caso cuando lo haces preprocesador te da segun me dijeron mas fluides en tu programa. ya que las sentencias y demas se cargan antes que el programa en si, (no se si estoy mal , que alguien me corrija)

https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Lo_m%C3%A1s_b%C3%A1sico#Directivas_de_preprocesador
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Signo + o -

Publicado por Chema (187 intervenciones) el 28/05/2016 18:35:00
---lee un poco sobre directivas Preprocesador la verdad que son muy utiles te permiten casi que poner funciones "siempre y cuando sean pequeñas" parecidas a funciones inline pero en ese caso cuando lo haces preprocesador te da segun me dijeron mas fluides en tu programa. ya que las sentencias y demas se cargan antes que el programa en si, (no se si estoy mal , que alguien me corrija) ---


El uso de las macros debería limitarse a crear código más legible.

Las macros no son tan "chulas" como parece tienen sus problemas.
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

Signo + o -

Publicado por agustin (179 intervenciones) el 28/05/2016 21:13:23
Hasta donde yo se, cuando usas un define, al compilar se sustituye el nombre por su valor. Supongo que en ese caso se copia la macro en cada sitio que la use y por eso es más fluido que una función pero se produce código duplicado y si se usa mucho es contraproducente.
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

Signo + o -

Publicado por Chema (187 intervenciones) el 28/05/2016 22:39:03
Estimado Agustin,. Fluido me hallo.

Fluido ,Curioso y socorrido palabro, neolengua en brillante estilo.
Comentas que: ".....y por eso es más fluido que una función" , debo entender que las funciones son fluidas pero las macros más.
Desconocía que las funciones fueran fluidas, cada día aprendo algo más y me siento mas fluido.

Sobre lo que comentas del código duplicado, ¿No te parece una obviedad? , precisamente las macros se crearon con ese propósito.
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

Signo + o -

Publicado por agustin (179 intervenciones) el 29/05/2016 00:43:09
Yo no he dicho que las funciones sean fluidas. No me gusta que pongan en mi boca cosas que no dije. Si digo que una liebre es más veloz que un caracol eso no implica que el caracol sea veloz.
No digo que tu código sea peor o mejor que otros, solo dije que si se abusa de macros se duplica mucho código pero sigue siendo algo muy útil al igual que en c++ las templates también lo son.
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

Signo + o -

Publicado por Capitan Kirk capitan.kirk09@gmail.com (94 intervenciones) el 30/05/2016 14:53:30
Prueba con

1
2
3
4
5
6
7
8
int main()
{
	double	x = 3.0;
	int	n = 7;
 
	printf("%+f\n", x);
	printf("%+d", n);
}

es decir, simplemente poniendo un signo (+) en el especificador de formato. Esto hace que se imprima el signo, sea cual sea.

Saludos,
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