Pascal/Turbo Pascal - archivo secuencial y corte de control pascal

   
Vista:

archivo secuencial y corte de control pascal

Publicado por Horacio (53 intervenciones) el 14/10/2012 06:45:19
Hola gente;quisiera si alguno me puede dar una mano con este ejercicio:

En un archivo secuencial ordenado por carrera se tienen los datos de los ingresantes a la Facultad de
Ciencias Exactas Química y Naturales
Se tiene un registro por cada alumno con el siguiente formato:
CARRERA |NOMBRE Y APELLIDO | FECHA DE NACIMIENTO | LOCALIDAD | DNI
Se pide:
1) Generar un vector de 10 elementos (cada elemento corresponderá a una carrera), donde en cada
posición del mismo se encuentre la cantidad de alumnos de dicha carrera.
2) Detectar la carrera con mayor cantidad de alumnos e imprimir con la leyenda correspondiente
3) Imprimir el vector.

la codificacion la hize si alguno puede ver el codigo y decirme que corregir
link:

http://pastebin.com/359egWLn


desde ya gracias.saludos
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

archivo secuencial y corte de control pascal

Publicado por ramon (2072 intervenciones) el 14/10/2012 22:25:23
Disculpa para poder comprobarlo se necesitan las unidades que colocas en el.
Si no mal lo tengo exceptuando que lo realice con mis métodos.
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

archivo secuencial y corte de control pascal

Publicado por Horacio (53 intervenciones) el 15/10/2012 01:17:30
el archivo lo cree con este programa ;

http://pastebin.com/m27r62Sy

los datos de carrera puse los mismos q defini en el array de string,los demas cualquier verdura.

o sino fijate si podes verlo como vos quieras,lo que quiero saber es si esta bien planteado y resuelto el ejercicio dimas.gracias.saludos
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

archivo secuencial y corte de control pascal

Publicado por ramon (2072 intervenciones) el 15/10/2012 19:00:01
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
{A qui tienes tu programa algo corregido funcionando}
 
program ingresantes;
 
{APPTYPE CONSOLE}
 
uses
    crt;
 
const
    cantCarreras = 10;
    NOM_ARCHIVO = 'INGRESANTES.dat';
    arrCarr : array[1..10] of string[25] = (
   'Analista de Sistemas','Licenciatura en Sistemas','Farmaceutica',
   'Profesorado en Matematica','Profesorado en Fisica','Profesorado en Biologia',
   'Profesorado en Quimica','Ingenieria en Alimentos','Ingenieria Quimica',
   'Licenciatura en Genetica');
 
type
        RFecha = record
                dia : string[2];
                mes : string[2];
                anio : string[4];
        end;
 
        RIngresante = record
                carrera : string[25];
                nombre : string[20];
                apell : string[20];
                fecNac : RFecha;
                loc : string[30];
                dni : string[12];
        end;
        FAlumnos =  file of RIngresante;
        TarrInteger = array[1..CantCarreras] of integer;
        TarrString = array[1..CantCarreras] of string;
 
 var
     arch : FAlumnos;
     registro : RIngresante;
     fin : boolean;  arr:TarrInteger;
     CarreraAnt : string;
     arrCarreras : TarrString;
 
 
procedure InicializarArray(var arr:TarrInteger);
var i : integer;
begin
    for i := 1 to 10 do
    begin
        arr[i] := 0;
    end;
end;
 
  function leer(var arch:FAlumnos;var reg:RIngresante):boolean;
  begin
        if eof(arch) then
        begin
           leer := true;
        end
     else
        begin
           read(arch,reg);
           leer := false;
        end;
  end;
 
  procedure imprimirVec(arr:TarrInteger);
  var
    i : integer;
  begin
    for i := 1 to CantCarreras do begin
        if (arr[i] <> 0) then
        begin
           writeln('   ',arrCarr[i],' ,','se inscribieron ',arr[i]);
        end;
     end;
  end;
 
  function MayCantAlum(arr:TarrInteger):integer;
  var
    mayor : integer;
    pos : integer;
    i : integer;
  begin
        mayor := 1;
        pos := 1;
        for i := 1 to CantCarreras do
        begin
           if (arr[i] > mayor) then
           begin
              mayor := arr[i];
              pos := i;
           end;
        end;
       MayCantAlum := pos;
     end;
 
   procedure ImprimirMayCantAlum(arr:TarrInteger);
   var
   pos1 : integer;
  begin
     pos1 := 0;
     pos1 := MayCantAlum(arr);
     writeln('   La carrera de ',arrCarr[pos1],
     ' es la que mayor cantidad de');
     writeln('   alumnos inscriptos tiene ',pos1);
end;
 
procedure procesarIngresante(reg:RIngresante;var arr:TarrInteger);
var
   i : integer;
   carre : string[25];
begin
        i := 1;
    while (i <= CantCarreras) and (reg.carrera <> arrCarr[i]) do
    begin
      i := i + 1;
    end;
    arr[i] := arr[i] + 1;
end;
 
   function leerXteclado(var datos : RIngresante) : boolean;
   var
     carrera:string[30];
     nombre : string[20];
     apell : string[20];
     fecNac : string[10];
     dni : string[12];
     reg : RIngresante;
     loc : string[30];
     n : integer;
   begin
      clrscr;
      writeln(' Elija El Numero De La Carrera ');
      for n := 1 to 10 do
      writeln('  ',n,' : ',arrCarr[n]);
      writeln('  ',11,' : Final');
      writeln;
      n := 1;
      write('Carrera : ');readln(n);
      carrera := copy(arrCarr[n],1,length(arrCarr[n]));
      write('Nombre : ');readln(nombre);
      write('Apellido : ');readln(apell);
      write('Fecha de nacimiento : ');readln(fecNac);
      write('Localidad : ');readln(loc);
      write('DNI : ');readln(dni);
      datos.carrera := carrera;
      datos.nombre := nombre;
      datos.apell := apell;
      datos.fecNac.dia := copy(fecnac,2,2);
      datos.fecNac.mes := copy(fecnac,5,2);
      datos.fecNac.anio := copy(fecnac,8,4);
      datos.loc := loc;
      datos.dni := dni;
      leerXteclado := true;
   end;
 
  BEGIN
      clrscr;
      leerXteclado(registro);
      assign(arch,NOM_ARCHIVO);
      {$I-} reset(arch); {$I+}
      if ioresult <> 0 then
      begin
        writeln('No existe el archivo');
        readln;
         halt(1);
      end;
        InicializarArray(arr);
        fin := leer(arch,registro);
      while (not fin) do begin
        CarreraAnt := registro.Carrera;
         while (not fin) and (registro.Carrera = CarreraAnt) do
         begin
         procesarIngresante(registro,arr);
         fin := leer(arch,registro);
         end;
      end;
      ImprimirMayCantAlum(arr);
      writeln;
      imprimirVec(arr);
      close(arch);
      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