Naloga/Programiranje/Datoteka/Graf na datoteki/Rešitev (Java)

Iz MaFiRaWiki

  1.  
  2. import java.io.*;
  3.  
  4. public class GrafNaDatoteki {
  5.  
  6. public static void main(String[] args) throws IOException {
  7. prepisiPrvo(args[0], args[1]);
  8. prepisiDrugo(args[1], args[2]);
  9. }
  10. //prepiše iz seznama povezav v seznam sosedov
  11. public static void prepisiPrvo(String prva, String druga) throws IOException{
  12. BufferedReader dat1 = new BufferedReader(new FileReader(prva));
  13. PrintWriter dat2 = new PrintWriter(new FileWriter(druga));
  14. int stevec = 1;
  15. while (dat1.ready()) {
  16. String vrstica = dat1.readLine();
  17. String[] tab = vrstica.split(" ");
  18. for(int i = 0; i < tab.length; ++i){
  19. int n = Integer.parseInt(tab[i].substring(0, tab[i].length()-1));
  20. if(n >= stevec){
  21. dat2.println("(" + stevec + ", " + n + ");");
  22. }
  23. }
  24. stevec++;
  25. }
  26. dat1.close();
  27. dat2.close();
  28. }
  29. //prepiše iz seznama sosedov v seznam povezav
  30. public static void prepisiDrugo(String vhodna, String izhodna) throws IOException{
  31. BufferedReader dat1 = new BufferedReader(new FileReader(vhodna));
  32. BufferedReader dat2 = new BufferedReader(new FileReader(vhodna));
  33. PrintWriter dat3 = new PrintWriter(new FileWriter(izhodna));
  34. int max = 0; // pove koliko elementov bo imela tabela povezav
  35. while (dat1.ready()) {
  36. String vrstica = dat1.readLine();
  37. if(vrstica == "") dat1.readLine();
  38. else{
  39. String[] tab = vrstica.split(" ");
  40. int n = Integer.parseInt(tab[0].substring(1, tab[0].length()-1));
  41. int m = Integer.parseInt(tab[1].substring(0, tab[1].length()-2));
  42. if(n >= max) max = n+1;
  43. if(m >= max) max = m+1;
  44. }
  45. }
  46. dat1.close();
  47. String[] tabela = new String[max];
  48. for(int i = 0; i < max; ++i){
  49. tabela[i] = "";
  50. }
  51. while (dat2.ready()) {
  52. String vrstica = dat2.readLine();
  53. if(vrstica == "") dat2.readLine();
  54. else{
  55. String[] tab = vrstica.split(" ");
  56. int n = Integer.parseInt(tab[0].substring(1, tab[0].length()-1));
  57. int m = Integer.parseInt(tab[1].substring(0, tab[1].length()-2));
  58. tabela[n] = tabela[n] + m + "; ";
  59. tabela[m] = tabela[m] + n + "; ";
  60. }
  61. }
  62. for(int i = 0; i < max; ++i){
  63. if(tabela[i] != ""){
  64. dat3.println(i + ": " + tabela[i]);
  65. }
  66. }
  67. dat2.close();
  68. dat3.close();
  69. }
  70. }
Osebna orodja