Dev - C++ - Ayuda con este ejercicio de archivo binario

 
Vista:
sin imagen de perfil
Val: 17
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con este ejercicio de archivo binario

Publicado por David (8 intervenciones) el 20/11/2018 16:32:05
Buenas a todos, el otro día pregunté para que me recomendaran un libro de c++, al samaritano que me respondió, al final, pude hacer todos los ejercicios, a duras penas, pero lo logré.
Ahora sí, les adjunto este cpp ya comentado, para que me digan el por qué me sucede esto, estoy trabajando con un archivo binario que estoy creando a su vez.
Aquí la consigna del ejercicio, por si necesitan ver todo el contexto:

Escriba un programa abra el archivo generado en el ejercicio anterior y solicite al
usuario que ingrese un entero, un flotante y una posición. El programa debe
sobrescribir el par en la posición ingresada por el usuario por el nuevo par. Luego
muestre la lista de datos en consola mostrando un par por línea.
PD: el ejercicio anterior pedía crear un archivo binario de 200 pares
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
Imágen de perfil de SuperIndio
Val: 52
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con este ejercicio de archivo binario

Publicado por SuperIndio (25 intervenciones) el 20/11/2018 22:30:15
A ver asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
struct Pares{
        int entero;
        float flotante;
};
ostream &operator<<(ostream &o, Pares &p){
        o<<p.entero<<" "<<p.flotante<<endl;
        return o;
}
int main(int argc, char *argv[]) {
        vector<Pares> A;
 
        Pares *y = new Pares[20];
 
        int i=0;
        int p=0;
        ifstream entrada;
        cout << "Arranco el programa" << endl;
        entrada.open("grupo.dat",ios::binary|ios::in|ios::ate);
        if (!entrada.is_open()) {
                cerr<<"ERROR";
                return -1;
        }
        p=entrada.tellg();
        cout<<p<<endl;
        entrada.seekg(0);
        while (entrada.good()) {
                entrada.read ((char*)y, sizeof (Pares) * 10);
                cout << y[i].entero << "  " << y[i].flotante << endl;
                i++ ;
        }
        entrada.close();
        return 0;
}

faltaria grabar yo lo haria asi:

1
2
3
Pares ff;
...
entrada.write ((char*)&ff, sizeof (Pares));
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
sin imagen de perfil
Val: 17
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con este ejercicio de archivo binario

Publicado por David (8 intervenciones) el 20/11/2018 23:06:09
Qué es lo que hace good()? osea, qué es lo que está validando en el while? Y por qué sizeof (Pares) * 10? Qué significa el multiplicarlo por 10?
Además, no entiendo por qué no me muestra el vector por consola.
De todos modos, gracias por comentar
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 SuperIndio
Val: 52
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con este ejercicio de archivo binario

Publicado por SuperIndio (25 intervenciones) el 21/11/2018 14:40:30
ahi va una imagen del funcioanmiento:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
C:\Mingw\UnixC>Un6e3
18  3.21175e-039
18  3.21175e-039
18  3.21175e-039
18  3.21175e-039
18  3.21175e-039
18  3.21175e-039
18  3.21175e-039
18  3.21175e-039
18  3.21175e-039
18  3.21175e-039
0  0
1965569584  0
0  0
4005108  0
4005104  0
1965569584  0
0  0
1965569584  0
0  0
1965569584  0
16122796  3.87252e-034
 
C:\Mingw\UnixC>
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 SuperIndio
Val: 52
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con este ejercicio de archivo binario

Publicado por SuperIndio (25 intervenciones) el 21/11/2018 14:35:49
Bueno, quisiera saber si lo probaste primero...
1) funciona, al menos muestra lo que quieres mostrar
2) good() es un metodo de c++ que sirve en este caso como valor true
3) sizeof() es una funcion de C y para su utilizacion le comento que existe un buscador llamado www.google.com
y miles de sitios dedicados a C y C++ en los cuales te explicarana com mas detalles su funcionamiento
4) Como lo hiciste es demasiado rebuscado, pero si estas aprendiendo es recomendable
que sea mas claro, facil para el que lea tu codigo e inteprete con la mayor rapidez.
Para ello tengo un AXIOMA: "EL BUEN PROGRAMADOR NO PONE COMENTARIOS, EL CODIGO ES OBVIO"
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
sin imagen de perfil
Val: 17
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con este ejercicio de archivo binario

Publicado por David (8 intervenciones) el 21/11/2018 15:21:30
Entonces mis profesores de programación son unos idiotas, según vos, a mi me enseñaron que siempre se debe documentar el código...
se lo que hace el sizeof...lo que no sé es por qué estás multiplicando por 10 al tamaño de Pares, lo cual lo deje bien en claro al preguntar, un nivel de lectura bajo tenes.
Además, no dije que tu programa no mostrara el vector, me refería al mio, yo quería saber el por qué no muestra mi código, al vector por pantalla.
Además que pretencioso, hablando de esa forma, por qué estás acá? Si sos un genio en la programación que seguramente ha producido grandes códigos, tu necesidad de alimentar tu ego no te deja salir de acá? Mis preguntas fueron concisas, no quería un código, quería saber el por qué el mio no funcionaba, además de que estaba especificado dónde tenía mis dudas.
Gente como usted, que por tener más conocimiento, se piensa que puede tratar mal a todos, me da pena, verdaderamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de SuperIndio
Val: 52
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con este ejercicio de archivo binario

Publicado por SuperIndio (25 intervenciones) el 21/11/2018 15:37:35
tenes que ir al Psicologo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar