Difference between revisions of "SET08112"

From Progzoo
Jump to: navigation, search
(Problem 1 - Sort a List)
 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
==SET08112 ArrayList Interface Tutorial==
+
==SET08112 - Algorithms and Data Structure==
In this tutorial you will use the ArrayList and the HashMap or TreeMap to solve some common problems.
+
*[[ArrayList Tutorial]]
You will use methods such as:
+
*[[Recursion Tutorial]]
* java.util.Collections.sort
+
*[[Finite State Machines Tutorial]] and [[Finite State Machine|FSM from lecture]]
* add
+
*[[Assessment 2011 Tornado]]
* get
+
*[[Recursive Descent Parsers]]
 
+
*[[Tree Tutorial]]
==Problem 1 - Sort a List==
+
<question className="SortStudents" title="Using Sort" copyfile="students.txt">
+
The file  from http://www.dcs.napier.ac.uk/~cs66/SET08112/tut2/students.txt  contains a list of students:
+
ADAMS, ROBERT
+
HASTIE, MARTIN
+
OTHIENO, JUDITH
+
ANDERSON, ROSS
+
...
+
Create a programme SortStudents.java that reads in this file and outputs the students in Alphabetical order.
+
*You can use an ArrayList to hold the students.
+
*ArrayList&lt;String> names = new ArrayList&lt;String>();
+
*You can use [http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#sort%28java.util.List%29 java.util.Collections.sort] to sort the ArrayList
+
<hint>
+
Add this line after you have filled the ArrayList but before you print it.
+
java.util.Collections.sort(names);
+
</hint>
+
<prog>
+
import java.util.ArrayList;
+
import java.io.BufferedReader;
+
import java.io.FileReader;
+
+
public class SortStudents{
+
  public static void main(String[]argv) throws Exception{
+
    ArrayList&lt;String> names = new ArrayList&lt;String>();
+
    String line;
+
    BufferedReader fh
+
      = new BufferedReader(new FileReader("students.txt"));
+
    while (null!=(line=fh.readLine()))
+
      names.add(line);
+
    for (String s:names)
+
      System.out.println(s);
+
  }
+
}
+
</prog>
+
<answer>
+
import java.util.ArrayList;
+
import java.io.BufferedReader;
+
import java.io.FileReader;
+
+
public class SortStudents{
+
  public static void main(String[]argv) throws Exception{
+
    ArrayList&lt;String> names = new ArrayList&lt;String>();
+
    String line;
+
BufferedReader fh
+
= new BufferedReader(new FileReader("students.txt"));
+
    while (null!=(line=fh.readLine()))
+
      names.add(line);
+
    java.util.Collections.sort(names);
+
    for (String s:names)
+
      System.out.println(s);
+
  }
+
}
+
</answer>
+
</question>
+
 
+
==Problem 2 - List Routes==
+
<question className="SortStudents" title="Using Sort" copyfile="students.txt">
+
The file year1.txt contains a list of all students in year one. Each line contains the name of the student and the name of the route (programme) they follow separated by a tab.
+
AITKEN, HANNAH BENG (HONS) COMPUTING F/T
+
COCHRANE, LEE  BENG (HONS) COMPUTING F/T
+
CURSTON, REBECCA BSC (HONS) DIGITAL MEDIA F/T
+
...
+
Write a program to read in this file and output a list of routes with no duplicates.
+
You can use a program very similar to the one above – but this time:
+
*Use line.split("\t") to get the route
+
*Use contains to only add the route if it is not already in the ArrayList
+
*You do not need to sort before output
+
 
+
<prog>
+
import java.util.ArrayList;
+
import java.io.BufferedReader;
+
import java.io.FileReader;
+
+
public class SortStudents{
+
  public static void main(String[]argv) throws Exception{
+
    ArrayList&lt;String> names = new ArrayList&lt;String>();
+
    String line;
+
    BufferedReader fh
+
      = new BufferedReader(new FileReader("students.txt"));
+
    while (null!=(line=fh.readLine())){
+
      String [] st = line.split("\t");
+
      names.add(st[1]);
+
    }
+
    for (String s:names)
+
      System.out.println(s);
+
  }
+
}
+
</prog>
+
<answer>
+
import java.util.ArrayList;
+
import java.io.BufferedReader;
+
import java.io.FileReader;
+
+
public class SortStudents{
+
  public static void main(String[]argv) throws Exception{
+
    ArrayList&lt;String> names = new ArrayList&lt;String>();
+
    String line;
+
    BufferedReader fh
+
      = new BufferedReader(new FileReader("students.txt"));
+
    while (null!=(line=fh.readLine())){
+
      String [] st = line.split("\t");
+
      if (!names.contains(st[1]))
+
        names.add(st[1]);
+
    }
+
    for (String s:names)
+
      System.out.println(s);
+
  }
+
}
+
</answer>
+
</question>
+

Latest revision as of 09:37, 2 March 2012

SET08112 - Algorithms and Data Structure