Beruflich Dokumente
Kultur Dokumente
0 -2 -7 0 0 -2 -7 0 0 -2 -7 0
9 2 -6 2 9 2 -6 2 9 2 -6 2
-4 1 -4 1 -4 1 -4 1 -4 1 -4 1
-1 8 0 -2 -1 8 0 -2 -1 8 0 -2
Suma = -4 Suma=13 Suma=-8
1
b) int MayorSuma(int A[][max], int n){
int I,j,s,mayor=Suma(A,0,0);
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
s = Suma(A, i, j);
if(s > mayor)
mayor = s;
}
return mayor;
}
2. Una lista lineal simple L contiene la información de alimento para canes de distintas marcas
que mantiene en stock una gran tienda de mascotas. Esta tienda acostumbra a registrar los
distintos atributos de estas marcas, esto es: Nombre de la marca, peso en kg. por paquete,
tipo de alimento (Junior (1), Mediana edad (2), Adulto (3)), Calidad (Premiun (1), Medium
(2), Clasic (3)) y Valoración (opinión de los expertos calificada de 1 (baja valoración) a 7
(máxima valoración). Se pide realice los siguientes operadores recursivos.
El tipo del nodo de la lista es:
10 puntos a) AgregarMarca( L ): Que agrega una marca (un nuevo nodo) a la lista L con datos leídos
por teclado.
10 puntos b) Junior( L ): Que retorna el número de marcas de L que sus alimentos pertenecen a la
categoría Junior.
10 puntos c) PesoClasic( L ): Que retorna las suma de los pesos de las marcas con calidad Clasic
contenido en la lista L.
2
a) void AgregarMarca(Lista &L)
{
if(L == NULL){
L = new(nodo);
cin >> L->marca; //y leer los demás restantes campos
L->link = NULL;
}
else{
AgregarMarca(L->link);
}
}
b) int Junior(Lista &L)
{
If(L == NULL){
return 0;
}
else{
if(L->tipo == 1)
return 1 + Junior(L->link);
else
return 0 + Junior(L->link);
}
}
3
3. Se desea llevar el registro de los caracteres que se utilizan a diario en twitter; para ello se
registra en una Lista Circular Doble (LCD), el carácter (tipo) y la cantidad de veces que se ha
registrado dicho carácter. La declarativa de la LCD es:
typedef struct Nodo2{
char tipo;
int cantidad;
struct Nodo2 *Sig;
struct Nodo2 *Ant;
};
typedef Nodo2 *Lista2;
a) void Disminuir(Lista2 C)
{ Lista2 p;
if(C ¡= NULL){
p = C->Sig;
C->cantidad--;
while(p ¡= C){
p->cantidad--;
P = p->Sig;
}
}
}
4
b) void Depurar(Lista2 &C)
{ Lista2 p;
if(C ¡= NULL){
if(C->cantidad == 0){
q = C;
C = C->Sig;
q->Ant->Sig = C;
C->Ant = q->Ant;
delete q;
}
else{
p = C->Sig;
while(p ¡= C){
if(p->cantidad == 0){
q = p->Sig;
p->Ant->Sig = p->Sig;
p->Sig->Ant = p->Ant;
delete p;
p = q;
}
else
p = p->Sig;
}
}
}
}