Pascal/Turbo Pascal - Ejercicio de archivos - Pascal

 
Vista:

Ejercicio de archivos - Pascal

Publicado por Carlos (12 intervenciones) el 19/01/2013 17:50:15
Hola! necesito su ayuda... no se resolver este ejercicio de archivos :S no se como resolverlo..

Pues el ejercicio es asi:

Realice un programa en pascal que pida datos al usuario, los guarde en un archivo binario y luego otro programa que lea el archivo binario y lo pase a un archivo de texto.
Esos datos, se deben almacenar en un array, o registro de 10 espacios, osea un registro de 10 posiciones.

Eso es todo, el problema es que... los datos a pedir son, el nombre, la cedula, y 3 notas, todo eso lo tengo que almacenar en un archivo binario, y luego crear otro programa, aparte, que tome ese archivo binario y lo transforme o lo pase a un archivo de texto, y luego que me muestre o me saque la media de las notas, es algo complicado o confuso, a lo mejor es facil, pero... no que va, no me da la cabeza

Porfavor ayuda, es solamente ese ejercicio.
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

Ejercicio de archivos - Pascal

Publicado por ramon (2158 intervenciones) el 20/01/2013 17:07:39
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
{A ver si esto ayuda}
 
  program archivos;
  uses
     crt;
  type
    regdatos = record
          nombre : string[80];
          cedula : longint;
           notas : array[1..3] of real;
         end;
 
   var
     f : file of regdatos;
   dato : array[1..10] of regdatos;
    tex : text;
  medias : array[1..10] of real;
  nom : array[1..10] of string[80];
 
   procedure entradatos;
   var
      h, cont : integer;
      tec : char;
   begin
       cont := 1;
    repeat
       clrscr;
       write('  Entre Nombre : ');
       readln(dato[cont].nombre);
       write('  Entre Cedula : ');
       readln(dato[cont].cedula);
       write('  Entre notas 1 : ');
       readln(dato[cont].notas[1]);
       write('  Entre notas 2 : ');
       readln(dato[cont].notas[2]);
       write('  Entre notas 3 : ');
       readln(dato[cont].notas[3]);
       writeln;
       writeln('  Dese entrar mas datos [S/N] ');
       repeat
           tec := upcase(readkey);
       until tec in ['S','N'];
       if tec = 'N' then
       tec := #27
     else
       cont := cont + 1;
    until (cont > 10) or (tec = #27);
    assign(f,'Temporal.dat');
   {$I-} reset(f); {$I+}
  if ioresult <> 0 then
  begin
      rewrite(f);
      h := 0;
      repeat
        seek(f,h);
        write(f,dato[h + 1]);
        h := h + 1;
      until h > cont;
      close(f);
  end
 else
     begin
        writeln('  El archivo existe desea Anularlo por este [S/N] ');
        repeat
          tec := upcase(readkey);
        until tec in['S','N'];
      if tec in['N'] then
      begin
      end
    else
        begin
           rewrite(f);
           h := 0;
         repeat
             seek(f,h);
             write(f,dato[h + 1]);
             h := h + 1;
         until h > cont;
         close(f);
        end;
     end;
   end;
 
 
   procedure pasaloatexto;
   var
     i, g : longint;
   begin
      assign(f,'Temporal.dat');
   {$I-} reset(f); {$I+}
     if ioresult <> 0 then
     begin
        writeln('  El Archivo No Existe Pulse [Enter] ');
        readln;
        exit;
     end
   else
      begin
         assign(tex,'temporal.txt');
         rewrite(tex);
        for i := 0 to filesize(f) - 2 do
        begin
            seek(f,i);
            read(f,dato[i + 1]);
            writeln(tex,dato[i + 1].nombre);
            writeln(tex,dato[i + 1].cedula);
            writeln(tex,dato[i + 1].notas[1]:3:2);
            writeln(tex,dato[i + 1].notas[2]:3:2);
            writeln(tex,dato[i + 1].notas[3]:3:2);
         end;
         close(f);
         close(tex);
         writeln('Archivo De Binario A Texto');
      end;
   end;
 
   procedure sacamedia;
   var
     p, i : integer;
     nomb : string[80];
     cod : longint;
     n1, n2, n3 : real;
   begin
      assign(tex,'temporal.txt');
   {$I-} reset(tex); {$I+}
   if ioresult <> 0 then
   begin
       writeln('  Error El Archivo No Existe Pulse [Enter]');
       readln;
       exit;
   end
 else
    begin
        p := 1;
        while not eof(tex) do
        begin
           read(tex,nomb);
           read(tex,cod);
           read(tex,n1);
           read(tex,n2);
           read(tex,n3);
           readln(tex);
           nom[p] := nomb;
           medias[p] := (n1 + n2 + n3) / 3;
           writeln(nom[p],'   La Media Es    =  ',medias[p]:3:2);
           p := p + 1;
           if p > 10 then
           p := 10;
        end;
        close(tex);
      end;
   end;
 
   procedure menu;
   var
     te : char;
   begin
     repeat
         clrscr;
         writeln('****** Menu General ******');
         writeln;
         writeln('  1 = Entrada De Datos');
         writeln('  2 = Archivo Binario A Texto');
         writeln('  3 = Presenta Las Medias');
         writeln('  4 = Salir');
         writeln;
         writeln('<<<<< Elija Opcion >>>>>');
        repeat
         te := readkey;
        until te in[#49,#50,#51,#52];
    case te of
  #49 : begin clrscr; entradatos; end;
  #50 : begin clrscr; pasaloatexto; writeln(' Pulse [Enter]'); readln; end;
  #51 : begin clrscr; sacamedia; readln; end;
    end;
   until te = #52;
   end;
 
 
  begin
      menu;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar

Ejercicio de archivos - Pascal

Publicado por Carlos (12 intervenciones) el 20/01/2013 19:16:15
Muchas gracias ramon! un maestro del pascal jeje ;) , lo acabo de correr y funciona perfectamente, dejame ver si tengo algunas dudas en el codigo fuente y te aviso. Por cierto, me gustaria que me enviaras un e-mail a ver si puedo contactarte para algo mas de ayuda en otros ejercicios, gracias de antemano.
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

Ejercicio de archivos - Pascal

Publicado por Carlos (12 intervenciones) el 20/01/2013 19:26:42
Vale, hay varias cosas que no entiendo, debe ser porque lo hiciste muy... profesional.. yo apenas soy estudiante.. por ejemplo esto no lo entiendo readln(dato[cont].notas[3]); como funciona eso? dato que es un arreglo.. le pones entre corchetes cont ? acaso va aumentando? y porque.. en notas.. le colocas la posicion del vector?
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

Ejercicio de archivos - Pascal

Publicado por ramon (2158 intervenciones) el 20/01/2013 21:21:19
Primero cualquier información que desees la puedes pedir en esta seras atendido con mucho gusto.
Referente a readln(dato[cont].notas[x]) corresponde exactamente al contador de los 10 registros que
tu indicas por cada entrada se incrementa en 1.
Si te fijas en el registro apreciaras que notas es un array de 1 a 3 los datos que tu pides y cada uno
debe tener el valor de la nota que le concedan.
Espero esta aclaración te sirva.
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

Ejercicio de archivos - Pascal

Publicado por Carlos (12 intervenciones) el 21/01/2013 01:08:30
Ok vale, gracias, si ya entendi despues que me puse a analizar mas a fondo el problema.
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

Ejercicio de archivos - Pascal

Publicado por Douglad (14 intervenciones) el 14/09/2015 18:42:19
Muy bueno de verdad amigo eres un master
Como hago para hacer un fichero con un numero limitado de estudiantes meterlos en un arreglo , donde tenga consulta general consulta de alumnos aprobados y reprobados
Modificar datos personales de antemano muchas gracias
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

Ejercicio de archivos - Pascal

Publicado por amilcar irias (2 intervenciones) el 04/12/2016 00:03:58
hola Maestro Ramon necesito su ayuda

Un programa que lea el contenido del fichero "listadonombreedad.txt" (que puede estar desordenado) y lo vuelque, ordenado alfabéticamente, al fichero "listadonombreedadmodificado".
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