
ayuda con programa sencillo.en c++
Publicado por hector (3 intervenciones) el 06/08/2006 21:35:06
hola a todos , el caso es que tengo que hacer un programa en c++, que lea n caracteres de un archivo, y que conforme los vaya leyendo los añada a un array de palabras(Word que defini previamente).el programa compila y ejecuta , empieza a leer las palabras del archivo , pero el problema viene cuando va a almacenar lo que acabe de leer en el archivo.ya que guarda en todas las posicines del array de palabras el ultimo caracter que leyo:
Word lista[1000]; osea que en todas las posiciones del array guarda el ultimo valor que leyo.
aca pongo el codigo para que lo vean mejor. y gracias de antemano ............ ayudenme porfavor.
#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>
class Word
{
public:
char *cad;
public:
Word();
Word(char *c);
inline setWord(char *d);
inline char *getWord();
char getWord(int pos);
};
Word::Word(char *c){
int i=0;
char *cd=c;
while(*c++) {i++;};
this->cad=new char[i];
cad=cd;
}
inline Word::setWord(char *d){/*delete d;*/char *dd=d;this->cad=dd;};
inline char *Word::getWord(){return cad;};
char Word::getWord(int pos)
{
for(int i=0;i<pos;i++)
{
*cad++;
}
return *cad;
}
Word::Word()
{
}
main(){
Word lista[250000];
cout <<prueba[0].cad<<endl;
cout <<prueba[1].cad<<endl;
Word temp;
int cont=0;
char *palabra=new char[30];
char *p2=new char[30];
char arch[20]="palabras.es";
ifstream lector(arch,ios::in);
if(lector.fail())
{
cout << "Error al cargar el archivo";
}
if(lista==NULL){
cout <<"no hay espacio";
}
for(int i=0;i<10;i++){
lector.getline(palabra,20,'\n');
lista[i].setWord(palabra);
cout <<lista[i].getWord()<<endl;
cont++;
}
cout << "salio del bucle"<<endl;
//aca es donde itera en el arreglo e imprime el ultimo caracter que leyo.
for(int x=0;x<10;x++){
cout <<lista[x].getWord()<<endl;
}
cout << "salio del bucle"<<endl;
return 0;
}
Word lista[1000]; osea que en todas las posiciones del array guarda el ultimo valor que leyo.
aca pongo el codigo para que lo vean mejor. y gracias de antemano ............ ayudenme porfavor.
#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>
class Word
{
public:
char *cad;
public:
Word();
Word(char *c);
inline setWord(char *d);
inline char *getWord();
char getWord(int pos);
};
Word::Word(char *c){
int i=0;
char *cd=c;
while(*c++) {i++;};
this->cad=new char[i];
cad=cd;
}
inline Word::setWord(char *d){/*delete d;*/char *dd=d;this->cad=dd;};
inline char *Word::getWord(){return cad;};
char Word::getWord(int pos)
{
for(int i=0;i<pos;i++)
{
*cad++;
}
return *cad;
}
Word::Word()
{
}
main(){
Word lista[250000];
cout <<prueba[0].cad<<endl;
cout <<prueba[1].cad<<endl;
Word temp;
int cont=0;
char *palabra=new char[30];
char *p2=new char[30];
char arch[20]="palabras.es";
ifstream lector(arch,ios::in);
if(lector.fail())
{
cout << "Error al cargar el archivo";
}
if(lista==NULL){
cout <<"no hay espacio";
}
for(int i=0;i<10;i++){
lector.getline(palabra,20,'\n');
lista[i].setWord(palabra);
cout <<lista[i].getWord()<<endl;
cont++;
}
cout << "salio del bucle"<<endl;
//aca es donde itera en el arreglo e imprime el ultimo caracter que leyo.
for(int x=0;x<10;x++){
cout <<lista[x].getWord()<<endl;
}
cout << "salio del bucle"<<endl;
return 0;
}
Valora esta pregunta


0