C/Visual C - Para que acepte todo??

 
Vista:
sin imagen de perfil

Para que acepte todo??

Publicado por Edwin (70 intervenciones) el 15/10/2006 20:05:34
recien estoy comenzando con visual c, mi problema es con las variables,por ejemplo declaro un int y solo ke puedo poner datos enteros,al igual con float solo puedo ingresar números con necesariamente un decimal al costado. ni pregunta es como puedo hacer para que mi variable acepte enteros o decimales.
gracias de antemano...
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

RE:Para que acepte todo??

Publicado por Carlos (34 intervenciones) el 15/10/2006 22:16:58
Las variables tipo float y double te aceptan tanto enteros como decimales. Debes tener presente que los tipo int sólo te recibirán enteros y los tipo float o double, ambos casos. Quizá tu problema radica en que cuando imprimes un dato tipo float te salen al lado el montón de decimales. Esto lo puedes corregir de dos formas.

1) Utlizando el operador cast () que sirve para transformar datos según el caso.
int a;
float b=3.1416;
a=(int)b;

En el programa de arriba transformé un dato tipo float en uno int. Si imprimes a, el resultado será 3

2)La otra forma radica enla manera de imprimir el valor

float a=3.1415;
printf("%.2f",f);

En el programa de arriba obligo a imprimir el numero de decimales que deseo, osea 2. El resultado sería 3.14. De la misma forma puedes darle el numero de decimales que quieras.

Suerte!!!!!
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

RE:Para que acepte todo??

Publicado por Edwin (70 intervenciones) el 16/10/2006 01:51:54
Gracias por contestarme...

Mi duda es que cuando declaro una variable FLOAT, y en el momento de asignarle un valor a dicha variable, tengo que ingresar obligatoriamente un decimal, como por ejemplo:

float a;

declarando esta variable, para poder ingresar algun dato como por ejemplo el numero 2, tengo q poner 2.0 para que no me salga error, bueno eso es lo que pasa cuando declaro con este tipo.

Como puedo hacer para que no haya necesidad de agregarle el decimal a la variable, tambien tengo problemas con los tipo char, cuando declaro:

char b;

solo me acepta hasta 4 caracteres como maximo.

y si pongo:

char b[5];

solo me acepta 5 caracteres, ni mas ni menos, osea de que no puedo meterle la palabra "dos", or que me sale error.

Gracias de Antemano....
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

RE:Para que acepte todo??

Publicado por Eduardo Negrete (76 intervenciones) el 16/10/2006 02:39:09
Checa los tipos de datos que existe, y el numero de bytes que tiene cada uno

por ejemplo el char b; contiene un byte donde un byte son ocho bits y con ocho bits puedes reperentar un numero de -127 a 128

si quieres saber el numero de bytes de cada variable puedes usar

char b;

sizeof( b );

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
sin imagen de perfil

RE:Para que acepte todo??

Publicado por Carlos (34 intervenciones) el 16/10/2006 06:22:35
Hola

Cuando trabajas con caracteres debes tener cuidado, particularmente la manera como los capturas. Si vas a capturar una palabra como por ej."dos", asegúrate primero que todo que el arreglo donde lo vas a guardar sea grande.

char a;
scanf("%s",a);

Si en el programa anterior intentas guardar la palabra "dos", seguramente sólo te almacenará la letra 'd'. Debería de mostrarte un error o quizá un warning cuando tratas de hacer esto ya que el resto de la palabra quedará almacenada en cualquier lado de la memoria. Ahora bien, debes tener también en cuenta que cuando guardas un arreglo de caracteres, de último, el sistema coloca un '0' para indicar que hasta allí llega el arreglo. Para el ejemplo anterior, si pudieses ver el arreglo desde adentro lo que observarías sería 'd' 'o' 's' '0'. Te digo todo esto, para que cuando almacenes caracteres también tengas en cuenta este byte adicional.

Cuando trabajas con cadenas de caracteres también te enfrentas al problema de tener que utilizar espacios, por ej. para ingresar nombres compuestos

char a[100];
scanf("%s",a);

Si para el ejemplo anterior ingresas "Carlos Alberto", cuando lo fueses a mostrar por pantalla con un printf, por ej., sólo verías Carlos ya que este no tolera espacios y de ahí en adelante, el resto del texto se pierde. (Recuerda que para este caso no se utiliza el símbolo & antes del nombre de la variable a la hora de capturar el arreglo). Para este caso es mejor utilizar la función gets()

char a[100];
gets(a);

Para el caso anterior, si vuelves a ingresar el nombre compuesto se te guardará completo y no tendrás ningún problema.

Por último sólo te indico que debes tener cuidado con el tipo de información que guardas y la cantidad de memoria que necesitarás. Ya algo te señalé al comienzo de este resumen con el tipo char y en cierta forma se extiende para los otros casos. Si vas utilizar enteros trabaja con int. Si vas utilizar decimales trabaja con float o double, dependiendo del caso.

Suerte!!!!!!!
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

RE:Para que acepte todo??

Publicado por fernando.gomez (1603 intervenciones) el 20/10/2006 01:48:40
Lo que te comenta Carlos es correcto. Si

float f = 5;

te está enviando un error entonces 1) o el error es en otra parte que quizás no te hayas dado cuenta, o 2) tu compilador es excesívamente viejo (y por esto entiendo compiladores de 1990 o antes), o 3) tu compilador está hecho con algún dialecto raro de C que no sigue el estándar.

Con respecto a

char b;

esta declaración no te guarda 4 caracteres (!) sino uno solo. Y la declaración

char b[5];

no te permite almacenar cinco caracteres, sino cuatro, debido a que siempre se necesita el caracter nulo al final del arreglo. Ahora, la palabra "dos" es de tres letras, por lo que un arreglo con 4 elementos es suficiente para ser almacenada en esa variable.

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