# CS571 Assignment 5 solved

\$30.00

Original Work ?
Category:

## Description

5/5 - (1 vote)

1. [10 points] Write a Prolog predicate max(L,Res) that computes the maximum number in an integer list L and
stores the result in Res. Assume that L contains at least 1 element.
E.g. |?-max([1,3,5,4,2], Res).
Res = 5 //5 is the maximum number in the list

2. [15 points] Define a Prolog predicate deleteNList(N,L,Res) that delete every Nth argument of a list : and store
the results in Res.
E.g. | ?- deleteNList(3, [2,3,4,5,6,7,8], Res).
Res = [2,3,5,6,8].
no

3. [20 points] Write a Prolog predicate replace_first_k(K,L, Res) that replaces the first K occurrences of
1 in a list L with 8 and stores the result in Res.
e.g. | ?- replace_first_k(3, [2,1,3,1,4,1,5,1,6,1] , Res).
Res = [2,8,3,8,4,8,5,1,6,1].

4. [15 points] Write a Prolog program position(X, L, Res) that takes an integer X and an integer list L, returns a list
of positions of X in L. The result is stored in Res.
e.g. |?- position(1, [1,3,1,2,5,1], Res).
Res = [1,3,6].
No

5. [12 points] Given the following code in Java
public class A
{ public void p() { System.out.println(“A.p”);}
public void q() { System.out.println(“A.q”);}
public void r() { p(); q();}
}
class B extends A
{ public void p() { System.out.println(“B.p”);}
}
class C extends B
{ public void q() { System.out.println(“C.q”);}
public void r() { q(); p();}
}

A a = new B();
a.r();
a = new C();
a.r();
What does the above program print?

6. [12 points] Question 10.20 Given the following code in C++:
class A{
public:
virtual void p(){cout << “A.p”<< endl;}
void q(){cout << “A.q” << endl;}
virtual void r(){p(); q();}
};
class B: public A{
public:
void p(){cout << “B.p” << endl;}
};
class C: public B{
public:
void q(){cout << “C.q” << endl;}
void r(){q(); p();}
};

A a; C c; a = c; a.r();
A* ap = new B; ap -> r();
A* ap1 = new C; ap1 -> r();
What does the above program print?

7. [16 points] Question 10.48
Class A
{ public:
virtual void f();
virtual void g();
private: int a;
};
class B: public A
{ public:
void f();
void h();
private: int b;
}
Class C: public B
{ public: void g();
Private: int c;
}

Draw the VMT of each class and the layout of memory for a dynamically-allocated object of each class.

Instruction of Submission:
• Create a directory [userid]_5 (e.g. pyang_5), which contains
o Prolog program assignment5.P
o A .pdf file containing the name and email address of the group members, and solutions to Q5-Q7
• Tar the contents of this directory using the following command.
tar –cvf [directory_name].tar [directory_name]
E.g. tar -cvf pyang_5.tar pyang_5/
• Upload the tared file you created above to mycourses.