A ver,vamos con el primero.La estructura de datos es lo primero que tenés que sacar es.Te dan:
Registro de Articulos
{
nroart longint
precio word (no se cual es el precio máximo pero supongo que más de $65 000 no te cuesta)
stock word (idem anterior,de 65000 no pasa no?
)
nroprov longint (asumiendo que sea mas o menos del mismo tamaño que el numero de articulo)
}
Registro de ventas
{
nrocli integer
fecventa longint
nroart longint
cant integer (asumiendo que no compra más de 32000 porque no le da la plata)
}
Ahora fiajte que el campo que tenés en comun entre ambos es nroart o sea,número de artículo y es con el que vas a vintular ambos arrays.
1)Para los clientes que como mínimo compraron en 3 meses, el siguiente listado:
IMPORTE DE VENTAS POR CLIENTE POR MES
NUMERO DE MES
CLIENTE
Estoy un poco oxidado con los AMB's de algoritmos pero yo haria lo siguiente.
-Primero llamas a un procedimiento que te ordene el segundo array por número de cliente.(Tene en mente que lo que tenés son vectore de esos registros y NO los registros sueltos).
-Despues usas el procedimiento loco 1 que tiene la forma procedure clientes ( arrventas:tventas, arrarticulos:tarticulos).
Y vas comparando.
Mientras el cliente siga siendo el mismo incrementas un número (ponele que a la variable la llamamos d).Si d>=3 imprimis el listado de este cliente.Es decir volves atras en el vector hasta donde arranca ESE cliente (la posición la guardaste en una variable).Y ahí haces:
Mientras no se acabe el vector
{
Mientras el cliente sea el mismo
{
Mientras el mes sea el mismo:
{
-recorres el array del cliente desde donde empieza a estar ese cliente
-buscas el numero de articulo
-multiplicas el precio que te figura en el vector artículos por la cantidad de venta (que te figura en el vector ventas) y ese resultado lo acumulas en una variable ventasmes o similar.
}
imprimis el importe del cliente.
imprimis en pantalla la fecha (o el numero de més solo que lo sacas con un cálculo).
}
}
Te puse las llaves porque ya ni me acuerdo como codear en pascal pero son análogas al begin y end.
2)Aca tenés que recorre el vector de artículos nomás.
Vendría a ser así.
Mientras no se acabe el vector de artículos
{
imprimir ("Listado de artículos con existencia insuficiente");
si (arrart[i].stock <=0)
{imprimir (arrart[i].norart);
imprimir (arrart[i].proovedor);
}
incrementar(i);
}
3) No me quedo claro cómo sacas los artículos erroneos ni que número de artículo se considera erroneo,si podés aclarar esto,mejor.Igual tenés que recorrer el array de artículos con la misma estructura que lo anterior pero reemplazando la comparación del if por una que te diga cuando el artículo tiene un número erroneo.
4)Esto se deriva del primer ejercicio simplemente guardas en otra variable el máximo importe llamémosla maxventas y la inicializas con 0 o un número negativo. y mientras estas en el paso 1 cuando terminas con un cliente comparas el importe contra esta variable y si el importe es mayor o igual que la variable guardas el número de cliente en una variable,digamos maxcli.Y así podés imprimir ambas,aunque creo que solo te piden la segunda.
Por ultimo disculpa si no esta claro del todo pero estoy un toque dormido y bastante oxidado con el tema de ABM's (además de que los odio
) pero buen.Despues sigo con los otros ejercicios.
Otra cosa:nota que arrart y arrventas son array de artículos y array de ventas respectivamente.
Saludos!