Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Conversiones de tipo datos

Estas en el tema de Conversiones de tipo datos en el foro de C/C++ en Foros del Web. Hola soy nueva en C++ y necesito ayuda con lo mas basico ya que lo intentado hacer que me funcione sin tener mayor exito. Tengo ...
  #1 (permalink)  
Antiguo 01/11/2011, 03:00
 
Fecha de Ingreso: octubre-2009
Mensajes: 21
Antigüedad: 15 años, 2 meses
Puntos: 0
Exclamación Conversiones de tipo datos

Hola soy nueva en C++ y necesito ayuda con lo mas basico ya que lo intentado hacer que me funcione sin tener mayor exito.

Tengo un fichero que contiene los sgtes datos :

Person One
56.09

Second Person
98.44

ahora mi programa tiene que leer estos datos y escribirlos en otro fichero pero cuando lea el numero decimal tiene que multiplicar por 1.10 lo cual no sucede ya que considera que no es digito. La verdad no se como convertir de cadena a entero.

#include <iostream>
#include<string>
#include<fstream>
#include<cctype>
#include <stdio.h>
#include <stdlib.h>
using namespace std;


int main( )
{
char name2[100];
ofstream fout;
cout<<"Enter Name of output file: "<<endl;
cin.getline(name2,100);
fout.open(name2);
if(fout.fail()){
cout<<"Unabled to open the file to write";
exit(1);
}

char name[100];
cout<< "Enter Name of input file: "<<endl;
cin.getline(name, 100);
ifstream fin;
fin.open(name);

if(fin.fail()){
cout<<"Unabled to read the file";
exit(1);
}else{
string type;

while(getline(fin,type)){
int x=atoi(type.c_str());
if(isdigit(x)){
x=x*1.10;
cout<<x<<" numero ***"<<endl;
fout<<x<<" "<<endl;
}else if( type!=" " ){

cout<<type<<" "<<endl;
fout<<type<<" "<<endl;

}
//fin.ignore(10000, '\n');
}
}
fin.close();
fout.close();
system("pause");

}
Espero y me puedan ayudar a solucionar este problema gracias!!
  #2 (permalink)  
Antiguo 01/11/2011, 06:25
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: Conversiones de tipo datos

hola creo que no te da pq usas un string type, y la funcion atoi recibe como parametro un char, el parametro que le estas enviando type.c_str() no sirve porque la funcion c.str() devuelve un puntero de un array char y para poder usarlo deberias hacer
Código C++:
Ver original
  1. char * cstr;
  2.  
  3.   string str ("Cadena de texto");
  4.  
  5.   cstr = new char [str.size()+1];
  6.   strcpy (cstr, str.c_str());

no te compliques usa un char linea[100]; con eso leeras bien y podras usar bien el atoi
  #3 (permalink)  
Antiguo 01/11/2011, 08:46
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 8 meses
Puntos: 228
Respuesta: Conversiones de tipo datos

No creo que sea ese el problema. La funcion isdigit funciona para caracteres. isdigit devuelve true si el caracter es un digito. si se le pasa un entero verifica igualmente con el codigo ascii. Los numeros en el codigo ascii estan entre 40 y 50 (mas o menos), asi que es complicado que entre justo.
Para lo que usas el isdigit el atoi hace ya su trabajo.
  #4 (permalink)  
Antiguo 01/11/2011, 11:22
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: Conversiones de tipo datos

pero yo digo es por la manera que esta usando el atoi
  #5 (permalink)  
Antiguo 01/11/2011, 16:21
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 8 meses
Puntos: 228
Respuesta: Conversiones de tipo datos

Si funciona con eso el atoi.... porque decis que no funciona?? Tienen los mismos tipos.
  #6 (permalink)  
Antiguo 03/11/2011, 06:46
 
Fecha de Ingreso: octubre-2009
Mensajes: 21
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Conversiones de tipo datos

gracias porl ayuda he intentado de las 2 maneras y no funciona, no puedo usar char ya que me piden que use string. :C

Etiquetas: conversiones, funcion, programa, string, tipo, cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:06.