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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Archivo de texto a un vector
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Archivo de texto a un vector  (Leído 2,210 veces)
Charcan

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Archivo de texto a un vector
« en: 16 Julio 2016, 23:06 pm »

estoy intentando correr mi codigo solo para ir probando lo que tengo, la cosa esta en que se cierra al ejecutar, intente mostrar por pantalla lo que se captura en el vector pero no concuerda con el archivo de prueba..

Me podrian ayudar ? muichas gracias !


Source....................................................................................

Código:
#include "leer.h"
#include <iostream>


using namespace std;

void main()
{
Leer L;
char contenido[1000];
*contenido=L.cargar();

cout<<L.numeros(contenido);




system("pause");

}


Leer.cpp.......................................................................
Código:
#include "leer.h"
#include <iostream>
#include <fstream>


using namespace std;

   char Leer :: cargar()//cargando el archivo
{

cout << "Arrastre a la pantalla el archivo a analizar" << endl;
cin >> archivo;
system("cls");
ifstream fin(archivo);

if (!fin.fail())
{
int i =0;
while(!fin.eof())
{

fin>>contenido[i];
i++;
}
}
else
{
cout<<"Error al abrir archivo"<<endl;
system ("pause");


}
return *contenido;
   }

   int Leer :: numeros(char contenido[1000])//determinamos si son numeros
   {
for (int i=0;i<1000;i++)
{
if (isdigit(contenido[i]))
{
cnum++;
}
}
return(cnum);
   }

   int Leer :: palabras(char contenido[1000])//determinando si son palabras
   {
for (int i=0;i<sizeof(contenido);i++)
{
if (isspace(contenido[i]))
{
cpalabra++;
}
}
return(cpalabra);
   }

   int Leer :: letras(char contenido[1000])//determinamos si es letra
   {
for (int i=0;i<sizeof(contenido);i++)
{
if (islower(contenido[i])||isupper(contenido[i]))
{
calpha++;
}
}
return(calpha);
   }

   int Leer :: cespecial(char contenido [1000])//caracteres especiales, puntos comas etc
   {
for (int i=0;i<sizeof(contenido);i++)
{
if (!isalpha(contenido[i]))
{
cother++;


if (contenido[i] == ',')
{
ccoma++;

}

if (contenido[i] == '.')
{
cpunto++;
}

if (contenido[i] == ':')
{
cdospuntos++;
}

if (contenido[i] == ';')
{
cpuntoycoma++;
}


}

}
  return(cother,ccoma,cpunto,cdospuntos,cpuntoycoma);
   }
  
   void Leer :: mostrar()//mostramos en pantalla todos los datos requeridos (esta asi de manera temporal)
   {
 
  cout << "numero de comas es :" << ccoma << endl;
  cout << "numero de punto es :" << cpunto << endl;
  cout << "numero de los dos puntos  :" << cdospuntos << endl;
  cout << "numero de punto y coma es :" << cpuntoycoma << endl;
  cout << "numero de caracteres con espacios en blacos es :" << cpalabra+cnum + cother + calpha-1 << endl;
  cout << "la ubicacion del archivo es :" << archivo << endl;

system("pause");
   }
Leer.h.......................................................................................
Código:
#ifndef _LEER_H __LEER_H
#define _LEER_H
#include <iostream>
#include <fstream>
#include <cctype>


using namespace std;


// Declaración de la clase
  typedef class Leer
{
 //Atributos
              private:
             
 int cpalabra;
 int cnum;
 int cother;
 int cchar;
 int ccoma;
 int cpunto;
 int cpuntoycoma;
 int cdospuntos;
 int calpha;
 char next;
 char archivo[1000];
 

 //Métodos
              public:
 
              char cargar();
  int numeros(char contenido[]);
  int palabras(char contenido[]);
  int cespecial(char contenido[]);
  int letras(char contenido[]);
  void mostrar();
  char contenido[1000];
}Tleer;
#endif /*__LEER_H */


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Archivo de texto a un vector
« Respuesta #1 en: 17 Julio 2016, 09:08 am »

usa el debugger de tu compilador a ver donde está fallando, si no sabes aun como usarlo seguro google y youtube te resuelven, es bastante fácil


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Archivo de texto a un vector
« Respuesta #2 en: 17 Julio 2016, 16:08 pm »

Sinceramente, se me escapan demasiados aspectos de la lógica de este programa, pero intentaré mostrar lo que me parece que te pasa:
  • Estás suponiendo que has llenado el arreglo Leer.contenido entero con el archivo. Entonces, cuando no se llena al completo, la memoria que no se llena tiene valores 'basura'. A lo que quiero llegar es que si no se leen 1000 caracteres del archivo, el arreglo no se llena al completo y por lo tanto a la hora de contar números es posible que te muestre más de los que hay. Para solucionar esto, tendrías que guardar cuántos elementos se han almacenado en el arreglo y después, en el for del método números, compruebas hasta ese límite.
  • En los demás métodos ni siquiera haces lo que en el método 'numeros'. Tendrías que aplicar lo mismo que te he dicho en la aclaración anterior.
  • Esto no sé si será un error, pero por si acaso, lo comentaré (porque es probable que sea un error). Lo que retorna el método 'cargar' es el primer carácter de la cadena. Lo que te aconsejo hacer es que el método no acepte ningún argumento y que tomes los datos del arreglo de la clase, teniendo en cuenta la cantidad de caracteres leídos:

Código
  1. int Leer::numeros() { //determinamos si son numeros
  2. for(int i=0; i < caracteres_leidos; i++) {
  3. if(isdigit(this->contenido[i])) // El this-> no es obligatorio
  4. cnum++;
  5. }
  6. return(cnum);
  7. }
    [/li]

Es posible que haya más errores que yo no haya visto, pero al menos aclaro algunas dudas
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Charcan

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Archivo de texto a un vector
« Respuesta #3 en: 17 Julio 2016, 19:48 pm »

Gracias intentare seguir sus consejos! les av¡so si me funciona!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
guardar la informacion de un archivo de texto (dat) en una tabla o vector T[n]
Java
luis Tovar 3 4,911 Último mensaje 30 Noviembre 2010, 19:40 pm
por joelmanx
Alguien save como crear archivo php igual que el archivo de texto
Windows
BrokerJoker 6 6,682 Último mensaje 17 Mayo 2012, 02:47 am
por #!drvy
Buscar texto dentro de archivo de texto por GUI
GNU/Linux
spysecurityca 1 2,222 Último mensaje 30 Diciembre 2014, 03:01 am
por MinusFour
archivo secuencial de texto a archivo for random aleatorio
Programación Visual Basic
corlo 1 2,487 Último mensaje 14 Enero 2016, 22:35 pm
por XresH
Archivo en Vector
Java
Justlaw 0 1,367 Último mensaje 9 Junio 2019, 23:03 pm
por Justlaw
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines