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

No puedo hacerlo en C++

Estas en el tema de No puedo hacerlo en C++ en el foro de C/C++ en Foros del Web. Hola amig@s: Hace un par de días solicitaba la ayuda sobre un problemita que no le encuentro por donde: El problema es que tengo que ...
  #1 (permalink)  
Antiguo 05/04/2007, 09:32
 
Fecha de Ingreso: julio-2005
Ubicación: Guatemala
Mensajes: 165
Antigüedad: 19 años, 3 meses
Puntos: 0
No puedo hacerlo en C++

Hola amig@s:

Hace un par de días solicitaba la ayuda sobre un problemita que no le encuentro por donde:

El problema es que tengo que leer un fichero (entrada.txt) con un contenido similar a este:
Código PHP:
palabra1
palabra2
palabra3
palabra4 
Y como resultado me tendría que devolver otro archivo (salida.txt) con el siguiente resultado:
Código PHP:
1arbalap
2arbalap
3arbalap
4arbalap 
En pocas palabras el programa tiene que voltear el contenido del archivo de entrada y el resultado ponerlo en un archivo distinto. Se que suena poco complicado, pero igual he tratado de una y otra forma.

Bueno y por si fuera poco, este profesor que no explica nada, también nos ha dejado otra tarea.... si alguien se anima ayudarme, el segundo programa es:

Se pedira un archivo binario donde existen n cantidad de números reales, y ese contenido se tiene que almacenar en un arreglo para su posterior visualización.

Bueno gracias a tod@s, saludos.
__________________
Guatemala - Guatemala
  #2 (permalink)  
Antiguo 05/04/2007, 22:18
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Re: No puedo hacerlo en C++

Bueno, tu primer problema ya te ayudamos en el otro post.

En cuanto a tu segundo problema....no le veo mucho problema.
Creeme, se lo que es tener maestros que no explican nada, pero aveces con un poco que tu le rasques al asunto encuentras bastante asi que investiga como se usa el fscanf, fgets, fgetc.

Con esas funciones ya tienes todo.

Saludos
  #3 (permalink)  
Antiguo 05/04/2007, 22:30
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años
Puntos: 7
Re: No puedo hacerlo en C++

hola bilkarm3,

recuerdo que cuando pusiste tu problema (hace 1 o 2 semanas), dijiste que ibas a buscar un tutorial sobre como leer archivos en C++, y ahorita dijiste que ya has tratado de varias formas, puedo preguntar.... ¿que y como es lo que has tratado? Por que no pones un poco de tu codigo para ver si te podemos ayudar a corregirlo

saludos,
  #4 (permalink)  
Antiguo 06/04/2007, 09:44
 
Fecha de Ingreso: julio-2005
Ubicación: Guatemala
Mensajes: 165
Antigüedad: 19 años, 3 meses
Puntos: 0
Re: No puedo hacerlo en C++

Bueno, este es el código que ya llevo, hasta ahora he podido abrir el archivo, mostrar lo que esta dentro de él, pero... como manipulo la información, especificamente, como volteo el contenido. (el archivo a voltear es: entrada.txt)

Código PHP:
#include <iostream.h>;
#include <conio.h>;
#include <stdio.h>;


void frase()
{
   
char palabras;
   
int i;
   
FILE *fichero;
   
fichero fopen("entrada.txt""r");
   
clrscr();
   while(!
feof(fichero))
   {
       
fputc(fgetc(fichero), stdout);
   }
   
fclose(fichero);
   
getchar();
   return;
}

//FUNCION PRINCIPAL
void main()
{
    
int opcion=0;
   while (
opcion != 3)
   {
      
clrscr();
      
cout<<"1. Ingresar Frase"<<endl;
       
cout<<"2. Crear Archivo Binario"<<endl;
      
cout<<"3. Salir"<<endl;
       
cin>>opcion;
       
//OPCION 1, VOLTEAR EL CONTENIDO DE UN ARCHIVO
       
if (opcion==1frase();
   }

Hey, gracias a todos, aunque parece simple, me estan sacando de buenos aprietos.

Con el problema del archivo binario:

El archivo binario debe contener cualquier cantidad de números reales(double), y se debe almacenar en un venctor para su posterior visualización... ¿recomendaciones por donde empezar?

Gracias, saludos.
__________________
Guatemala - Guatemala
  #5 (permalink)  
Antiguo 06/04/2007, 10:31
 
Fecha de Ingreso: julio-2005
Ubicación: Guatemala
Mensajes: 165
Antigüedad: 19 años, 3 meses
Puntos: 0
Re: No puedo hacerlo en C++

Bueno accidentalmente ya casi esta, EL PROBLEMA AHORA ES ESCRIBIR EN EL ARCHIVO.... ¿ayuda por favor?!!!!

Este es el nuevo código que accidentalmente me esta funcionando:
Código PHP:
#include <iostream.h>;
#include <conio.h>;
#include <stdio.h>;


void frase()
{
   
char *palabra;
   
int i,j;
   
FILE *fichero;
   
fichero fopen("entrada.txt""r");
   
clrscr();
   
i=0;
   while(!
feof(fichero))
   {
      
fgets(palabra,100,fichero);
      
i=strlen(palabra);
      for (
j=i;j>=0;j--)
      {
          
cout<<palabra[j];
      }
   }
   
fclose(fichero);
   
//cout<<i;
   
getchar();
   return;
}

//FUNCION PRINCIPAL
void main()
{
    
int opcion=0;
   while (
opcion != 3)
   {
      
clrscr();
      
cout<<"1. Ingresar Frase"<<endl;
       
cout<<"2. Crear Archivo Binario"<<endl;
      
cout<<"3. Salir"<<endl;
       
cin>>opcion;
       
//OPCION 1, VOLTEAR EL CONTENIDO DE UN ARCHIVO
       
if (opcion==1frase();
   }

__________________
Guatemala - Guatemala
  #6 (permalink)  
Antiguo 06/04/2007, 20:24
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Re: No puedo hacerlo en C++

Pues facil, en vez de escribirlo en pantalla, escribelo en tu archivo de salida:

Para esot tienes que crear uno:

Cita:
FILE *out;
out=fopen("salida.txt", wb);
...
...
Y en esta linea:

Cita:
cout<<palabra[j];
Usas:

Cita:
fputc(palabra[j], out);
Y con eso asunto arreglado.

Saludos
  #7 (permalink)  
Antiguo 08/04/2007, 09:15
Kal
 
Fecha de Ingreso: marzo-2007
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: No puedo hacerlo en C++

Hola!

Si estamos aprendiendo C++, pues usemos todo lo que éste nos puede dar :)
Código PHP:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <algorithm>
#include <cstdlib>

using std::cout;
using std::cin;
using std::endl;
using std::fstream;
using std::stringstream;
using std::ios;
using std::string;
using std::reverse;

bool frase() {
    
// Creamos instancia de archivo de entrada
    
fstream fin("entrada.txt"ios::in);
    
// Verificamos que el archivo existe
    
if (!fin) return false;
    
// Esta variable alojará el contenido del archivo
    
stringstream ss;
    
// La variable del inverso
    
string str;
    
// Pasamos el contenido del archivo a la variable
    
ss << fin.rdbuf();
    
// Pasamos el contenido al formato string
    
str ss.str();
    
// Cerramos el archivo
    
fin.close();
    
// El invierte el contenido de la varible
    
reverse(str.begin(), str.end());
    
// Creamos instancia de archivo de salida (para que se actualice)
    
fstream fout("entrada.txt"ios::out);
    
// Copiamos el contenido invertido
    
fout << str;
    
// Limpiamos el contenido de las variables
    
str "";
    
ss.clear();
    
// Cerramo el archivo
    
fout.close();
    return 
true;
}

int main(void) {
    
int op 0;
    for (;;) {
        
system("cls");
        
cout<< "1. Ingresar Frase" <<endl;
        
cout<< "2. Crear Archivo Binario" <<endl;
        
cout<< "3. Salir" << endl;
        
cin >> op;
        if (
op == 3) break;
        if (!
frase()) {
            
cout << "No se pudo abrir el fichero" << endl;
        }
        else {
            
cout << "Fin del programa" << endl;
        }
    }
    return 
0;

  #8 (permalink)  
Antiguo 08/04/2007, 11:58
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Re: No puedo hacerlo en C++

Cita:
Iniciado por Kal Ver Mensaje
Hola!

Si estamos aprendiendo C++, pues usemos todo lo que éste nos puede dar :)
Código PHP:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <algorithm>
#include <cstdlib>

using std::cout;
using std::cin;
using std::endl;
using std::fstream;
using std::stringstream;
using std::ios;
using std::string;
using std::reverse;

bool frase() {
    
// Creamos instancia de archivo de entrada
    
fstream fin("entrada.txt"ios::in);
    
// Verificamos que el archivo existe
    
if (!fin) return false;
    
// Esta variable alojará el contenido del archivo
    
stringstream ss;
    
// La variable del inverso
    
string str;
    
// Pasamos el contenido del archivo a la variable
    
ss << fin.rdbuf();
    
// Pasamos el contenido al formato string
    
str ss.str();
    
// Cerramos el archivo
    
fin.close();
    
// El invierte el contenido de la varible
    
reverse(str.begin(), str.end());
    
// Creamos instancia de archivo de salida (para que se actualice)
    
fstream fout("entrada.txt"ios::out);
    
// Copiamos el contenido invertido
    
fout << str;
    
// Limpiamos el contenido de las variables
    
str "";
    
ss.clear();
    
// Cerramo el archivo
    
fout.close();
    return 
true;
}

int main(void) {
    
int op 0;
    for (;;) {
        
system("cls");
        
cout<< "1. Ingresar Frase" <<endl;
        
cout<< "2. Crear Archivo Binario" <<endl;
        
cout<< "3. Salir" << endl;
        
cin >> op;
        if (
op == 3) break;
        if (!
frase()) {
            
cout << "No se pudo abrir el fichero" << endl;
        }
        else {
            
cout << "Fin del programa" << endl;
        }
    }
    return 
0;

Que bueno que tengas esas ganas y tiempo de ayudar a la gente, pero creeme, dando el codigo asi de lleno no aydua a nadie. Te recomiendo que mejor ayudes a las personas a encontrar el camino por ellas mismas, diciendoles masomenos por donde, mas no dandoles todo el codigo.

Saludos
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 14:01.