Pascal/Turbo Pascal - ejecicio corte de control

 
Vista:
sin imagen de perfil

ejecicio corte de control

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

1. A partir de un archivo con los siguientes datos:
CODIGO DE LOCALIDAD | TOTAL VENTA DE YERBA
Código de Localidad:
1. Apóstoles 2. Obera 3. Jardín América 4. San Pedro 5. San Vicente 6. El Soberbio
Se pide:
1) Generar un vector de 6 elementos donde cada elemento contiene el total de ventas
2) Detectar la localidad con mayor venta.
3) Calcular el promedio de ventas de la provincia de Misiones.(seria el promedio total)

se supone que el archivo existe y puede venir con uno,varios o ningun registro;

la codificacion la hize si alguno puede ver el codigo y decirme que corregir
link:
http://pastebin.com/2abVT6tT


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

ejecicio corte de control

Publicado por ramon (2158 intervenciones) el 14/10/2012 21:29:44
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
{Ay tienes corregido  para probar creo un archivo como veras}
 
 program Yerba;
 uses
    crt;
 const
        localidad : array[1..6] of string[15] = (
        'Apostoles','Obera','Jardin America','San Pedro',
        'San Vicente','El Soberbio');
 
	maxLoc = 6;
 type
    RLocalidad = record
		codLoc : 1..6; {codigo de localidad}
		totVenta : real; {total de venta}
	      end;
   vector = array[1..MaxLoc] of real; {tipo de vector para cargar el total
                                         de ventas de cada localidad}
 ALocalidades = file of RLocalidad; {tipo de archivo de registro de localidad}
var
   archivo : ALocalidades;
   fin : boolean;
   registro : Rlocalidad;
   ventas : vector;
   promVentas : real;
   desde, codLocAnt : integer;
   nombre : string[15];
 
 
  procedure creaarchivo;
  var
     n : integer;
  begin
     registro.codLoc := 1;
     registro.totVenta := 200;
     assign(archivo,'VENTAS.dat');
     rewrite(archivo);
     for n := 0 to 5 do
     begin
     registro.codLoc := n + 1;
     registro.totVenta := 200 / (n + 1);
     seek(archivo,n);
     write(archivo,registro);
    end;
    close(archivo);
  end;
 
  function leer(var arch : ALocalidades; var reg : RLocalidad) : boolean;
  begin
     if eof(arch) then
      leer := true
  else
    begin
       leer:= false;
       read(arch,reg);
    end;
 end;
 
  procedure inicializar(var v:vector);
  var
    i : integer;
   begin
      for i := 1 to maxLoc do
      v[i] := 0;
   end;
 
  procedure proceso(var reg : RLocalidad; var v : vector; var pos : integer);
  begin
    v[pos] := reg.totVenta;
    pos := pos + 1;
  end;
 
   function locMayorV(v : vector):string;
        {detecta la localidad con mayor venta}
   var
	mayor : real;
        pos, i : byte;
     begin
	mayor := 0;
        pos := 0;
	for i := 1 to maxLoc do
	begin
	  if v[i] > mayor then
	  begin
	    mayor := v[i];
	    pos := i;
	  end;
	end;
        locmayorv := localidad[pos];
         end;
 
    function promedioV(v : vector) : real;
   {devuelve el promedio de ventas total}
    var
      i : integer;
      tot : real;
    begin
	tot := 0;
	for i := 1 to maxLoc do
	tot := tot + v[i];
	promedioV := tot / 6;
    end;
 
   BEGIN
      clrscr;
     creaarchivo;
     assign(archivo,'VENTAS.dat');
    {$I-} reset(archivo); {$I+}
    if ioresult <> 0 then
    begin
        writeln;
        writeln('  <<< ¨ Error ? Archivo [Ventas.dat] No Encontrado >>>');
        writeln;
        writeln('  ******* Pulse [Enter] *******');
        readln;
        halt(1);
    end
  else
     begin
     inicializar(ventas);
     fin := leer(archivo,registro);
     while not fin do
     begin
        codLocAnt := registro.codLoc;
	while (not fin) and (codLocAnt = registro.codLoc) do
	begin
	   proceso(registro,ventas,desde);
	   fin := leer(archivo,registro);
	end;
     end;
	nombre := locMayorV(ventas);
	promVentas := promedioV(ventas);
        writeln;
	writeln('   Localidad con mayor ventas         : ',nombre);
	writeln('   Promedio de ventas de la provincia : ',promVentas:0:2);
	close(archivo);
        writeln;
	writeln('   Presione una tecla para salir');
	readkey;
      end;
   END.
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
sin imagen de perfil

ejecicio corte de control

Publicado por Horacio (53 intervenciones) el 15/10/2012 00:57:10
Gracias otra vez Ramon.despues me di cuenta de usar un array paralelo como hiziste y el archivo lo habia creado con otro program,muchas 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