Pascal/Turbo Pascal - como podria ser un programa en pascal que maneje archivos de texto y ...

 
Vista:
sin imagen de perfil

como podria ser un programa en pascal que maneje archivos de texto y ...

Publicado por marios (58 intervenciones) el 04/04/2014 14:59:27
hola ramon. queria preguntarte como podria ser un programa en pascal que maneje archivos de texto y de solucion al siguiente planteamiento.

imagina que tengo un archivo de texto llamado:

empresas.txt ---> cuyos registros contienen: codigo de la empresa , referencia televisores , disponibles actualmente
ahora bien , si por cada empresa tengo tengo un archivo porejemplo llamado subempresas.txt,con los registros --> codigo de la empresa( de los especificados en empresas.txt), referencias en orden ascendente de tv a pedir por diche subempresa , y su respectiva cantidad a pedir. deseo imprimir a traves de un nuevo archivo llamado porejemplo informesubempresa.txt, cuyos registros son: referencia de tv a pedir(ordenados ascendentemente, igual que los que estan en subempresas.txt) , la cantidad a pedir(dada por los valores de subempresas.txt y el criterio de despacho:
1 --> si la subempresa dispone de la cantidad slicitada
2-->si al sumar la cantidad de tv del resto de subempresas se puede cubrir el pedido solicitado por la subempresa en cuestion.
3-->si no se puede cubrir el pedido
4-->si la ref de tv no existe.

ademas debe crearse un nuevo archivo que refleje las cantidades que quedaron en el inventario luego de evaluar los pedidos de la subempresa.

nota: el archivo subempresas.txt, puede contener mas de una subempresa( con los registros ya señalados ).

gracias Ramon por tu genial ayuda.
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

como podria ser un programa en pascal que maneje archivos de texto y ...

Publicado por ramon (2158 intervenciones) el 07/04/2014 00:55:52
Perdona pones archivos de texto pero me hablas de registros el tratamiento de uno o otro es diferente aclárame el tema
para poder ayudarte.
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

como podria ser un programa en pascal que maneje archivos de texto y ...

Publicado por marios (58 intervenciones) el 07/04/2014 12:14:51
hola ramon, de ante mano mil gracias.
Ramon es estrictamente con archivos de texto quiza te nombro lo de registros tratando de indicarte el contenido de los archivos pues sabes que los archivos en si son un conjunto de registros, o lineas de informacion , pero el ejercicio es para resolverse con archivos de texto lo de reguistros es solo por darte a conocer la informacion de los archivos. espero tu respuesta y seguir aprendiendo 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
sin imagen de perfil

como podria ser un programa en pascal que maneje archivos de texto y ...

Publicado por marios (58 intervenciones) el 10/04/2014 17:34:23
hola ramon , no se si pasaste por alto este link, quiza sin darte cuenta y queria recrdartelo, y mil gracias por toda la ayuda que puedas prestarme.
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

como podria ser un programa en pascal que maneje archivos de texto y ...

Publicado por marios (58 intervenciones) el 16/04/2014 12:21:28
hola ramon, de ante mano mil gracias.
Ramon es estrictamente con archivos de texto quiza te nombro lo de registros tratando de indicarte el contenido de los archivos pues sabes que los archivos en si son un conjunto de registros, o lineas de informacion , pero el ejercicio es para resolverse con archivos de texto lo de reguistros es solo por darte a conocer la informacion de los archivos. espero tu respuesta y seguir aprendiendo 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
sin imagen de perfil

como podria ser un programa en pascal que maneje archivos de texto y ...

Publicado por marios (58 intervenciones) el 18/04/2014 13:29:40
Hola ramon, tu ayuda por favor es que este tipo de ejercicio es clave para mi
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

como podria ser un programa en pascal que maneje archivos de texto y ...

Publicado por ramon (2158 intervenciones) el 18/04/2014 13:55:50
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
183
184
185
186
187
188
189
190
191
192
{Mira esto pero ten en cuenta que para cargar los datos se necesita saber la estructura de ellos como podras
apreciar en este ejemplo espero te sirva como ayuda suerte }
 
program archivos;
  uses
     crt;
 
  type
    tPersona = Record
      DNI: Longint;
      Apellido: String[20];
      Nombres: String[20];
      FechaNac: string[12];
      valido : boolean;
    end;
 
    arch_personas = file of tPersona;
 
      lista = ^nodo;
      nodo = record
        elemen : Longint;
        dir_sig : lista;
      end;
 
    ctrl_personas = record
      persona : tPersona;
      a_persona : arch_personas;
      E_libre : lista;
      ok : boolean;
    end;
    string50 = string[50];
 
  const
     archivotexto : array[1..3] of string50 = (
     '2345678 Gomez Aandres 13/4/14 true #10#13',
     '7345678 Perez Juan 29/6/78 true #10#13',
     '2355970 Lausin Antonio 19/12/90 true #10#13');
 
   var
     f : arch_personas;
     datos : tpersona;
     tex : text;
     i : integer;
     dnis : longint;
 
 
  procedure iniciaregistro(var rr : tpersona);
  begin
      fillchar(rr,sizeof(tpersona),' ');
  end;
 
  procedure borra_archivo;
  begin
      assign(tex,'Temporal.txt');
   {$I-} reset(tex); {$I+}
   if ioresult = 0 then
   begin
       close(tex);
       erase(tex);
   end;
  end;
 
  procedure  cargadatos(var dd : string50);
  begin
     assign(tex,'Temporal.txt');
   {$I-} reset(tex); {$I+}
   if ioresult <> 0 then
   begin
     rewrite(tex);
     writeln(tex,dd);
     close(tex);
   end
 else
    begin
       append(tex);
       writeln(tex,dd);
       close(tex);
    end;
  end;
 
  function esdni(var bo : string50;id : longint;var dn : longint) : boolean;
  var
    tf : string[16];
    erro, e, y : integer;
    dd : longint;
  begin
      esdni := false;
      y := 1;
      for e := 1 to length(bo) do
      if bo[e] <> ' ' then
      begin
         tf[y] := bo[e];
         tf[0] := chr(y);
         y := y + 1;
      end
    else
       break;
       val(tf,dd,erro);
       if erro <> 0 then
       begin
          delete(tf,erro,1);
          val(tf,dd,erro);
        end;
        if dd = id then
        begin
        esdni := true;
        dn := dd;
        bo := copy(bo,y + 1,length(bo));
        end;
     end;
 
  procedure asignavaloresalregistro(var reg : tpersona;cual : longint);
  var
    error, j, r, cont : integer;
    datotext : string50;
    ts : string[16];
    ap : string[20];
  begin
     assign(tex,'Temporal.txt');
   {$I-} reset(tex); {$I+}
   if ioresult <> 0 then
   begin
      writeln('  Error De Archivo No Encontrado Pulse Una Tecla ');
      readkey;
   end
 else
     begin
        cont := 1;
        j := 1;
        while not eof(tex) do
        begin
           readln(tex,datotext);
           if esdni(datotext,cual,dnis) = true then
           begin
             delete(datotext,(length(datotext)) - 6,7);
             datos.dni := dnis;
            repeat
             datos.apellido[j] := datotext[cont];
             datos.apellido[0] := chr(j);
             j := j + 1;
             cont := cont + 1;
             until datotext[cont] = ' ';
             delete(datotext,1,cont);
             j := 1;
             cont := 1;
             repeat
                datos.nombres[j] := datotext[cont];
                datos.nombres[0] := chr(j);
             j := j + 1;
             cont := cont + 1;
             until datotext[cont] = ' ';
             delete(datotext,1,cont);
             j := 1;
             cont := 1;
             repeat
                datos.FechaNac[j] := datotext[cont];
                datos.FechaNac[0] := chr(j);
             j := j + 1;
             cont := cont + 1;
             until datotext[cont] = ' ';
             delete(datotext,1,cont);
             if datotext = 'true' then
             datos.valido := true
           else
             datos.valido := false;
 
             writeln('  Num. DNI         = ',datos.dni);
             writeln('  Apellido         = ',datos.apellido);
             writeln('  Nombre           = ',datos.nombres);
             writeln('  Fecha Nacimiento = ',datos.FechaNac);
             writeln('  Datos Validos    = ',datos.valido);
             writeln;
             writeln('  Pulse Una Tecla ');
           end;
        end;
          close(tex);
     end;
   end;
 
 
 
 
  begin
     clrscr;
     {borra_archivo;      esto solo si deseas borrar el archivo creado }
     iniciaregistro(datos);
     for i := 1 to 3 do
     cargadatos(archivotexto[i]);
     asignavaloresalregistro(datos,2355970);
 
     readkey;
  end.
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

como podria ser un programa en pascal que maneje archivos de texto y ...

Publicado por marios (58 intervenciones) el 19/04/2014 16:32:16
hola ramon disculpame, tienes razon no especifique la estructura de los datos, no puedo utilizar listas enlazadas, solo el tema y manejo de archivos de texto, podrias modificarlo por favor con dicho tema, mil 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

como podria ser un programa en pascal que maneje archivos de texto y ...

Publicado por ramon (2158 intervenciones) el 19/04/2014 20:00:42
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
183
184
185
186
187
{Mira esto seria el archivo de texto
 
const
     archivotexto : array[1..3] of string50 = (
     '2345678 Gomez Aandres 13/4/14 true #10#13',
     '7345678 Perez Juan 29/6/78 true #10#13',
     '2355970 Lausin Antonio 19/12/90 true #10#13');
lo puedes anular y cargar lo tuyo pero ten en cuenta la estructura que emplea lo demás es solo texto}
 
program archivos;
  uses
     crt;
 
  type
    tPersona = Record
      DNI: Longint;
      Apellido: String[20];
      Nombres: String[20];
      FechaNac: string[12];
      valido : boolean;
    end;
 
    arch_personas = file of tPersona;
 
 
    string50 = string[50];
 
  const
     archivotexto : array[1..3] of string50 = (
     '2345678 Gomez Aandres 13/4/14 true #10#13',
     '7345678 Perez Juan 29/6/78 true #10#13',
     '2355970 Lausin Antonio 19/12/90 true #10#13');
 
   var
     f : arch_personas;
     datos : tpersona;
     tex : text;
     i : integer;
     dnis : longint;
 
 
  procedure iniciaregistro(var rr : tpersona);
  begin
      fillchar(rr,sizeof(tpersona),' ');
  end;
 
  procedure borra_archivo;
  begin
      assign(tex,'Temporal.txt');
   {$I-} reset(tex); {$I+}
   if ioresult = 0 then
   begin
       close(tex);
       erase(tex);
   end;
  end;
 
  procedure  cargadatos(var dd : string50);
  begin
     assign(tex,'Temporal.txt');
   {$I-} reset(tex); {$I+}
   if ioresult <> 0 then
   begin
     rewrite(tex);
     writeln(tex,dd);
     close(tex);
   end
 else
    begin
       append(tex);
       writeln(tex,dd);
       close(tex);
    end;
  end;
 
  function esdni(var bo : string50;id : longint;var dn : longint) : boolean;
  var
    tf : string[16];
    erro, e, y : integer;
    dd : longint;
  begin
      esdni := false;
      y := 1;
      for e := 1 to length(bo) do
      if bo[e] <> ' ' then
      begin
         tf[y] := bo[e];
         tf[0] := chr(y);
         y := y + 1;
      end
    else
       break;
       val(tf,dd,erro);
       if erro <> 0 then
       begin
          delete(tf,erro,1);
          val(tf,dd,erro);
        end;
        if dd = id then
        begin
        esdni := true;
        dn := dd;
        bo := copy(bo,y + 1,length(bo));
        end;
     end;
 
  procedure asignavaloresalregistro(var reg : tpersona;cual : longint);
  var
    error, j, r, cont : integer;
    datotext : string50;
    ts : string[16];
    ap : string[20];
  begin
     assign(tex,'Temporal.txt');
   {$I-} reset(tex); {$I+}
   if ioresult <> 0 then
   begin
      writeln('  Error De Archivo No Encontrado Pulse Una Tecla ');
      readkey;
   end
 else
     begin
        cont := 1;
        j := 1;
        while not eof(tex) do
        begin
           readln(tex,datotext);
           if esdni(datotext,cual,dnis) = true then
           begin
             delete(datotext,(length(datotext)) - 6,7);
             datos.dni := dnis;
            repeat
             datos.apellido[j] := datotext[cont];
             datos.apellido[0] := chr(j);
             j := j + 1;
             cont := cont + 1;
             until datotext[cont] = ' ';
             delete(datotext,1,cont);
             j := 1;
             cont := 1;
             repeat
                datos.nombres[j] := datotext[cont];
                datos.nombres[0] := chr(j);
             j := j + 1;
             cont := cont + 1;
             until datotext[cont] = ' ';
             delete(datotext,1,cont);
             j := 1;
             cont := 1;
             repeat
                datos.FechaNac[j] := datotext[cont];
                datos.FechaNac[0] := chr(j);
             j := j + 1;
             cont := cont + 1;
             until datotext[cont] = ' ';
             delete(datotext,1,cont);
             if datotext = 'true' then
             datos.valido := true
           else
             datos.valido := false;
 
             writeln('  Num. DNI         = ',datos.dni);
             writeln('  Apellido         = ',datos.apellido);
             writeln('  Nombre           = ',datos.nombres);
             writeln('  Fecha Nacimiento = ',datos.FechaNac);
             writeln('  Datos Validos    = ',datos.valido);
             writeln;
             writeln('  Pulse Una Tecla ');
           end;
        end;
          close(tex);
     end;
   end;
 
 
 
 
  begin
     clrscr;
     {borra_archivo;      esto solo si deseas borrar el archivo creado }
     iniciaregistro(datos);
     for i := 1 to 3 do
     cargadatos(archivotexto[i]);
     asignavaloresalregistro(datos,2355970);
 
     readkey;
  end.
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