You are on page 1of 3

ID1018 Programmering I Tentamen: lösning av Fadil Galjic 20 aug 2019

Tentamen: lösning
Uppgifter: lösningar
Uppgift 1 (3 poäng + 3 poäng)
a) (3 poäng)

u
0 2 4 6

b) (3 poäng)

v[0]
v 0 1 2 3

v[1]
3 4 5 6

Uppgift 2 (3 poäng + 3 poäng + 3 poäng)


a) (3 poäng)
public static double lineLength (Point[] points)
{
double length = 0;
for (int pos = 0; pos < points.length - 1; pos++)
length += points[pos].distance (points[pos + 1]);

return length;
}

b) (3 poäng)
public static Point[] selectPoints (Point[] points, double distance)
{
int countPoints = 0;
for (Point p : points)
if (p.distance (Point.ORIGIN) > distance)
countPoints++;

Point[] selectedPoints = new Point[countPoints];


int pos = 0;
for (Point p : points)
if (p.distance (Point.ORIGIN) > distance)
selectedPoints[pos++] = p;

1
ID1018 Programmering I Tentamen: lösning av Fadil Galjic 20 aug 2019

return selectedPoints;
}

c) (3 poäng)
Point[] points = { new Point (0, 0),
new Point (0, 2),
new Point (2, 2),
new Point (4, 0) };

double length = lineLength (points);


Point[] selectedPoints = selectPoints (points, 1.5);

Uppgift 3 (3 poäng + 3 poäng + 3 poäng)


a) (3 poäng)

word first p e a c e
next next next next next

b) (3 poäng)
public void append (char c)
{
if (first == null)
first = new Node (c);
else
{
Node node = first;
while (node.next != null)
node = node.next;
node.next = new Node (c);
}
}

c) (3 poäng)
public char[] toArray ()
{
int charCount = 0;
Node node = first;
while (node != null)
{
charCount++;
node = node.next;
}

char[] a = new char[charCount];


node = first;
int pos = 0;
while (node != null)
{

2
ID1018 Programmering I Tentamen: lösning av Fadil Galjic 20 aug 2019

a[pos++] = node.c;
node = node.next;
}

return a;
}

Uppgift 4 (3 poäng + 3 poäng + 3 poäng)


a) (3 poäng)
public void enlarge (double k)
{
if (!(k > 0))
throw new java.lang.IllegalArgumentException ("not " + k + " > 0");

r = r * Math.sqrt (k);
}

b) (3 poäng)
public static <T extends Enlargeable> void enlargeObjects (T[] objects, double k)
{
for (int pos = 0; pos < objects.length; pos++)
objects[pos].enlarge (k);
}

c) (3 poäng)
public static void enlargeObjects (Enlargeable[] objects, double k)
{
for (int pos = 0; pos < objects.length; pos++)
objects[pos].enlarge (k);

Uppgift 5 (4 poäng + 5 poäng)


a) (4 poäng)

Element i sekvensen kopieras till en tillfällig plats. Denna plats består av n minnesceller. Därför är algoritmens
minneskomplexitet:

m(n) = n
m(n) ϵ Θ(n)

c) (5 poäng)
public static void reverseSequenceEfficiently (int[] sequence)
{
int element = 0;
for (int i = 0; i < sequence.length / 2; i++)
{
element = sequence[i];
sequence[i] = sequence[sequence.length - 1 - i];
sequence[sequence.length - 1 - i] = element;
}
}

You might also like