Pascal/Turbo Pascal - Leer num. por el final en un fich de enteros

   
Vista:

Leer num. por el final en un fich de enteros

Publicado por pascal (1 intervención) el 02/02/2008 17:51:29
Hola, hace tiempo que no trabajo con ficheros y tengo una gran duda en ficheros de enteros, es decir, 'file of integer'. bueno son varias dudas:

1- Cuando abro el fichero de forma 'natural', no veo nada, me aparecen signos extraños. Eso es normal? en cambio me acabo de dar cuenta de que si hago una lectura desde un programa si me lee bien los datos del fichero, por lo que, mi pregunta acaba de quedar contestada.

2- La pregunta realmente importante. Quiero leer cada numero, para observar si es capicua o no, pero aqui me surgen varias dudas:

- Como recorro tan solo un numero? Como leo cada uno? Y como empiezo a leer un numero desde el final para comparar si es capicua???

¿Me entendéis?
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:Leer num. por el final en un fich de enteros

Publicado por M@rceloL (25 intervenciones) el 02/02/2008 21:05:34
A ver, a ver.

No sé si te estoy entendiendo bien, pero...

[1] Lo que ves son caracteres ASCII. Los Integer (como todos los tipos de datos menos los string) se almacenan en memoria y en disco de una manera "no legible" por el homano. Es decir, si uno guarda el número 320, no va a guardar en disco "320", sino que va a guardar el número en su representación interna que, como viste, usa todo el espacio de representación de 8 bits por byte y así uno termina viendo algo que no se parece a un número.

Por ejemplo, hacé este experimento:

En un "file of word" guardá dos números: 513 y 41299.

Si lo abrís con el notepad te vas a encontrar con dos símbolos cuadrados y la palabra "Sí. Los primeros dos pertenecen al número 513 y los dos segundos a 41299

Si lo ves desde la línea de comandos (Inicio->Ejecutar->"cmd" y después escribís "type c:miarchivo" [Enter]) vas a ver dos caritas sonrientes (una negra y la otra blanca) y la palabra "Sí".

Testimonio de que los números no se guardan como uno los ve.

[2] Recorrer un archivo leyendo uno por uno hasta el final del archivo:

var archo:file of integer;
        dato:integer;

begin
    Assign(archo,'MiArchivo.dat');
    Reset(Archo);
    while not eof(Archo) do
        begin
        read(Archo,dato);
        MeFijoSiEsCapicua(dato);
        end;
    close(Archo);
end;

Espero te sirva de algo.

Saludongos.

Algo bueno para leer en http://mx.geocities.com/antrahxg/pascal/pmf/archivos.html.
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