Dev - C++ - ayuda con programa sencillo.en c++

 
Vista:
Imágen de perfil de hector

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;
}
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

RE:ayuda con programa sencillo.en c++

Publicado por Inma (4 intervenciones) el 10/08/2006 10:39:18
Hola
Puede ser que me haya equivocado pero mira a ver si lo que te escrito te sirve de algo... Suerte

#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++;}/*REVISA ESTO :donde esta la comparacion ¿Cuando sale del While? El ; despues de los corchetes solo va el las clases*/

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++; // ¿Aqui que se supone que quieres que haga?
}
return *cad;
}

Word::Word() /*esta funcion no sirve de nucho declara un valor predeterminado mira a ver si esta manera te gusta mas */
{ }
Word::Word(char *c=NULL )/* de esta manera si tu no pones nada en la variable coje como valor predefinido el NULL */
{
int i=0;
if (c != NULL){
char *cd=c;
while(*c++) {i++;
}
}

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 respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de hector

RE:ayuda con programa sencillo.en c++

Publicado por hector (3 intervenciones) el 10/08/2006 18:46:43
muchas gracias y 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