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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con funcion atof
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con funcion atof  (Leído 4,645 veces)
Fox_Neo

Desconectado Desconectado

Mensajes: 234



Ver Perfil
Problema con funcion atof
« en: 8 Junio 2012, 01:55 am »

Hola gracias por leer mi duda, tengo el siguiente código y no consigo compilarlo:
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9. int a=0;
  10. char dato[80];
  11. cout<<"Introduce algo"<<endl;
  12. cin.get(dato,80,'\n');
  13. while(a<80)
  14. {
  15. if(dato[a]=='2')
  16. {
  17. cout<<atof(dato[a])<<endl;
  18. }
  19. a++;
  20. }
  21. return 0;
  22. }
El error que me da es el siguiente:
Código:
invalid conversion from 'char' to 'const char*'
 initializing argument 1 of 'double atof(const char*)' 

Uso el compilador DevC++ver 4.9.9.3
No entiendo donde está el fallo ya que el siguiente codigo si que lo compila:

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9. char a_char[10];
  10.  cin>>a_char;
  11.  cout<<"As a float: "<<atof(a_char);
  12. return 0;
  13. }
  14.  
he probado a cargar el valor de dato[a] a otra variable de tipo char, por si la función atof no admitia convertir vectores directamente pero tampoco no funicona :huh:
Salud


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Problema con funcion atof
« Respuesta #1 en: 8 Junio 2012, 04:12 am »

hola, los arrays de caracteres, el puntero es estático por eso no podes pasar el puntero del array pasando una variable como
indice tenes que especificarle al compilador que queres pasarle el puntero de N indice, sino fuera asi estuvieras pasando el valor
del indice y no el puntero:

Código:
cout<<atof( &dato[a] ) <<endl;

bueno lo demás, e dado por caso que ya sabes para que funciona la atof


En línea

Fox_Neo

Desconectado Desconectado

Mensajes: 234



Ver Perfil
Re: Problema con funcion atof
« Respuesta #2 en: 8 Junio 2012, 12:10 pm »

Gracias por la ayuda algo intuia que podría ser por no usar punteros, pero lo que no entiendo por qué el segundo código si que lo compila y funciona bien si no se usa punteros.

Salu2.
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Problema con funcion atof
« Respuesta #3 en: 8 Junio 2012, 16:34 pm »

El usar solo elnombre de una array es decir asi como lo usas en el segundo indica un puntero al primer indice es decir  "&variable[0]" es igual a "variable"...

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
Fox_Neo

Desconectado Desconectado

Mensajes: 234



Ver Perfil
Re: Problema con funcion atof
« Respuesta #4 en: 9 Junio 2012, 14:20 pm »

Gracias por la ayuda ahora si que me compila y mas o menos me hace lo que quiero pero hay un problema, el codigo es el siguiente:
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9. int a=0;
  10. float res;
  11. char dato[80];
  12. cout<<"Introduce algo"<<endl;
  13. cin.get(dato,80,'\n');
  14. while(a<80)
  15. {
  16. if(dato[a]=='2')
  17. {
  18. res=atof(&dato[a])+5;
  19. cout<<atof(&dato[a])<<endl;
  20. cout<<res<<endl;
  21. }
  22. a++;
  23. }
  24. return 0;
  25. }
Cuando introduzco una serie de carateres por ejemplo
Código:
fdsjñlk2sad
Funciona bien me aparece el 2 y luego 7, pero si introduzco por ejemplo
Código:
dsaf25
el valor que coge es 25 en vez de 2 y no entiendo por qué no coge solo el 2 :huh:

Salu2
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Problema con funcion atof
« Respuesta #5 en: 9 Junio 2012, 18:46 pm »

Hola! atof no convierte un numero en caracter a double, sino que convierte la porcion inicial de la cadena en double, es decir si en la porcion inicial hay numeros consecutivos ("123avc") se va a convertir esos numero como un solo double

Ejemplo cuando vos ingresas esta cadena: "ashf2ieurut26aa"
En primera instancia atof no hace nada ya que  la porcion inicial no es un numero. Luego cuando le pasas la direccion del primer "2" no solo le estas pasando a atof el '2', sino que le estas pasando la cadena: "2ieurut26aa". Aca atof convierte el 2... y finalmente le pasas a atof: "26aa", aca la porcion inicial tiene los numeros "26" por lo tanto convierte ese numero

Saludos
En línea

Ahorrate una pregunta, lee el man
Fox_Neo

Desconectado Desconectado

Mensajes: 234



Ver Perfil
Re: Problema con funcion atof
« Respuesta #6 en: 9 Junio 2012, 22:51 pm »

Gracias por la aclaración respecto a la función atof, pero sigo sin entender por qué no funciona correctamente mi codigo, ya que:
Cojo una cadena de caracteres y las introduzco en un vector, cada carácter está introducido en una posición del vector.
Leo el contenido del vector, y si encuentra en una posición del vector un carácter que sea 2  lo convierte a un número, pero lo que viene en la siguiente posición del vector todavia no se sabe porque todavía no ha accedido a ella,por eso solo tendría que convertir lo que está dentro de la posisción del vector, nose si me explico :silbar:

Salu2.
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Problema con funcion atof
« Respuesta #7 en: 10 Junio 2012, 05:45 am »

Es por lo que te dije antes... Si bien vos le pasas la direccion donde hay un '2', no le estas pasando solo el 2 sino que le estas pasando un puntero a esa posicion(por ser un arreglo). Con el ejemplo anterior atof recibe estas cadenas:
"2ieurut26aa" y "26aa", y procesa la parte inicial de la cadena mientras haya un numero

Saludos
En línea

Ahorrate una pregunta, lee el man
Fox_Neo

Desconectado Desconectado

Mensajes: 234



Ver Perfil
Re: Problema con funcion atof
« Respuesta #8 en: 10 Junio 2012, 20:58 pm »

Gracias por responder el problema que tengo es que me he dado cuenta que tengo un buen cacao entre strings y arrays ya que creía que el string funcionaba como un array que cada carácter tenia una posición como ocurre con los arrays, para lo que quiero hacer creo que tengo que pasar la cadena de string a un array, voy a ver como lo puedo hacer.
Salu2.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROBLEMA CON FUNCIÓN CASE:
Programación Visual Basic
CRAB 8 2,444 Último mensaje 3 Septiembre 2005, 21:28 pm
por NYlOn
Problema con la funcion Chr
Programación Visual Basic
sircid 2 1,648 Último mensaje 9 Agosto 2006, 14:50 pm
por sircid
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines