Pascal/Turbo Pascal - Acceder a un vector que esta dentro de una lista

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 121 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

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)}



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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Acceder a un vector que esta dentro de una lista

Publicado por ramon (2158 intervenciones) el 13/06/2021 13:57:31
Esto seria la entrada de datos y la salida de :
Disculpen la hora comunidad.Me esta volviendo loco, Como puedo acceder al vector CodSO que esta dentro de una lista?


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
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;
 
var
    L: ListaVtas;
    v: contador;
    MMax: string;
 
      L^.datos.sisoper[n] := 1..6 {entrada o sea string}
      mmax := L^.datos.sisoper[n] {1..6 Salida o sea string}
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