Acceder a un vector que esta dentro de una lista
Publicado por Damian (1 intervención) el 13/06/2021 04:44:53
Disculpen la hora comunidad.Me esta volviendo loco, Como puedo acceder al vector CodSO que esta dentro de una lista?
{Una empresa vende equipos creo que eran Pc´s, y dispone de la info
de las ventas realizadas: codigo de cliente, código del modelo(se encuentra entre 1 y 150)
,marca y código del sistema operativo instalado(que se encuentra entre 1 y 6). La info
se encuentra ordenada por marca.
Informar:
1.marca con mas ventas
2.cant de modelos que se vendieron mas de 100 veces y que ademas tenian instalado
un sistema operativo Linux (cod 3 = Ubuntu o 4 = Red Hat)}
{Una empresa vende equipos creo que eran Pc´s, y dispone de la info
de las ventas realizadas: codigo de cliente, código del modelo(se encuentra entre 1 y 150)
,marca y código del sistema operativo instalado(que se encuentra entre 1 y 6). La info
se encuentra ordenada por marca.
Informar:
1.marca con mas ventas
2.cant de modelos que se vendieron mas de 100 veces y que ademas tenian instalado
un sistema operativo Linux (cod 3 = Ubuntu o 4 = Red Hat)}
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
Program PrimeraFechaParcial;
type
contador = array[1..150] of integer;
CodMod = array[1..150] of integer;
CodSO = array[1..6] of string;
venta = record
Cmodelo: CodMod;
marca: string;
Ccliente:integer;
SisOper: CodSO;
end;
ListaVtas = ^nodo;
nodo = record
dato: venta;
sig: ListaVtas;
end;
procedure InicializaVector (var v:contador);
var
i:integer;
begin
for i:=1 to 150 do
v[i]:=0;
end;
procedure VectorContador (var v:contador; aux:ListaVtas);//Este lo resolví fuera del parcial
var
i:integer;
so:string;
begin
i:=aux^.dato.CModelo;
so:='nn';
//Aca intento poner si (el sistema operativo es el 3 o es el 4) entonces
//Lo sumo al vector contador
if ((aux^.dato.SisOper[3]) or (so = aux^.dato.SisOper[4])) then
v[i]:=v[i]+1;
end;
procedure Masvendida (L:ListaVtas; var MarcaMax:string; var v:contador);
var
aux: ListaVtas;
cont, max:integer;
m:string;
begin
aux:=L;
max:=0;
while aux <> nil do
begin
cont:=0;
m:=aux^.dato.marca;
while ((aux<>nil) and (m=aux^.dato.marca)) do
begin
cont:=cont+1;
VectorContador(v,aux);
aux:=aux^.sig;
end;
if cont > max then
begin
max:=cont;
MarcaMax:=m;
end;
end;
end;
function ResuelveInciso2 (v: contador):integer;
var
i,cant:integer;
begin
cant:=0;
for i:=1 to 150 do
begin
if v[i] >= 100 then
cant:=cant+1;
end;
ResuelveInciso2:=cant;
end;
var
L: ListaVtas;
v: contador;
MMax: string;
Begin
L:=nil; //en el parcial me olvidé de inicializar la lista
InicializaVector(v);
MMax:='NN';
CargarLista (L); {SE DISPONE}
Masvendida(L, MMax,v);
writeln('La marca mas vendida fue ', MMax); // Hasta acá llegué
Writeln('La cantidad de modelos con mas de 100 ventas y SO Linux es: ',ResuelveInciso2(v));
End.
Valora esta pregunta


0