[WikiDyd] [TitleIndex] [WordIndex

Programowanie obiektowe: Java i C++

Materiały do zajęć w sem. zimowym 2009

Oceny - wersja 1: oceny1.zip


Oceny - wersja 0: oceny.zip, dane: lista.txt


Kalkulator onp - wersja 4: onpkalk(4).zip


Kalkulator onp - wersja 3: onpkalk(3).zip


Kalkulator onp - wersja 2: onpkalk (2).zip


Kalkulator onp - wersja 1: onpkalk.zip

   1 package liczbyrzymskie;
   2 
   3 import onpcalc.KalkulatorONP;
   4 
   5 /**
   6  *
   7  * @author jstar
   8  */
   9 public class Main {
  10 
  11     /**
  12      * @param args the command line arguments
  13      */
  14     public static void main(String[] args) {
  15         KalkulatorONP k = new KalkulatorONP();
  16         for (String s : args) {
  17             System.out.println( "wy=\"" + k + "\"");
  18             System.out.println( "dodaje \"" + s + "\"");
  19             k.append(s);
  20         }
  21         System.out.println( "Wyr: \"" + k + "\"");
  22     }
  23 }

   1 /*
   2  * To change this template, choose Tools | Templates
   3  * and open the template in the editor.
   4  */
   5 
   6 package onpcalc;
   7 
   8 /**
   9  *
  10  * @author jstar
  11  */
  12 public class KalkulatorONP {
  13     private StringBuffer wyr;
  14 
  15     public KalkulatorONP( String s ) {
  16         wyr = new StringBuffer(s);
  17     }
  18 
  19     public KalkulatorONP() {
  20         wyr= new StringBuffer();
  21     }
  22 
  23     public void append( String s ) {
  24         wyr.append( " " + s);
  25     }
  26 
  27     public int eval() {
  28         return 0;
  29     }
  30 
  31     @Override
  32     public String toString() {
  33         return wyr.toString();
  34     }
  35 
  36 }

   1 /*
   2  * To change this template, choose Tools | Templates
   3  * and open the template in the editor.
   4  */
   5 package liczbyrzymskie;
   6 
   7 /**
   8  *
   9  * @author jstar
  10  */
  11 public class LiczbaRzymska extends Object {
  12 
  13     private int wartosc;
  14 
  15     public LiczbaRzymska(int v) {
  16         wartosc = v;
  17     }
  18 
  19     public LiczbaRzymska() {
  20         wartosc = 0;
  21     }
  22 
  23     public LiczbaRzymska(String v) {
  24         int lt = 0;
  25         int ls = 0;
  26         int ld = 0;
  27         int lj = 0;
  28         for (int i = 0; i < v.length(); i++) {
  29             switch (v.charAt(i)) {
  30                 case 'M':
  31                     if (ld > 0 || lj > 0 || ls > 1) {
  32                         throw new NumberFormatException("Zla liczba rzymska \"" + v + "\"");
  33                     } else if (ls == 1) {
  34                         ls = 9;
  35                     } else {
  36                         if (lt < 9) {
  37                             lt++;
  38                         } else {
  39                             throw new NumberFormatException("Zla liczba rzymska \"" + v + "\"");
  40                         }
  41                     }
  42                     break;
  43                 case 'D':
  44                     if (ld > 0 || lj > 0 || ls > 1) {
  45                         throw new NumberFormatException("Zla liczba rzymska \"" + v + "\"");
  46                     } else if (ls == 1) {
  47                         ls = 4;
  48                     } else {
  49                         ls = 5;
  50                     }
  51                     break;
  52                 case 'C':
  53                     if (lj > 0 || ld > 1) {
  54                         throw new NumberFormatException("Zla liczba rzymska \"" + v + "\"");
  55                     } else if (ld == 1) {
  56                         ld = 9;
  57                     } else {
  58                         if (ls < 9) {
  59                             ls++;
  60                         } else {
  61                             throw new NumberFormatException("Zla liczba rzymska \"" + v + "\"");
  62                         }
  63                     }
  64                     break;
  65                 case 'L':
  66                     if (lj > 0 || ld > 1) {
  67                         throw new NumberFormatException("Zla liczba rzymska \"" + v + "\"");
  68                     } else if (ld == 1) {
  69                         ld = 4;
  70                     } else {
  71                         ld = 5;
  72                     }
  73                     break;
  74                 case 'X':
  75                     if (lj > 1) {
  76                         throw new NumberFormatException("Zla liczba rzymska \"" + v + "\"");
  77                     } else if (lj == 1) {
  78                         lj = 9;
  79                     } else {
  80                         if (ld < 9) {
  81                             ld++;
  82                         } else {
  83                             throw new NumberFormatException("Zla liczba rzymska \"" + v + "\"");
  84                         }
  85                     }
  86                     break;
  87                 case 'V':
  88                     if (lj > 1) {
  89                         throw new NumberFormatException("Zla liczba rzymska \"" + v + "\"");
  90                     } else if (lj == 1) {
  91                         lj = 4;
  92                     } else {
  93                         lj = 5;
  94                     }
  95                     break;
  96                 case 'I':
  97                     if (lj < 9) {
  98                         lj++;
  99                     } else {
 100                         throw new NumberFormatException("Zla liczba rzymska \"" + v + "\"");
 101                     }
 102                     break;
 103                 default:
 104                     throw new NumberFormatException("Zla liczba rzymska +\"" + v + "\"");
 105             }
 106         }
 107         wartosc = 1000 * lt + 100 * ls + 10 * ld + lj;
 108     }
 109 
 110     public void add(LiczbaRzymska o) {
 111         wartosc += o.wartosc;
 112     }
 113 
 114     public void add(int o) {
 115         wartosc += o;
 116     }
 117 
 118     private void addDigit(StringBuffer b, int no, char d, char d5, char d10) {
 119         if (no == 4) {
 120             b.append(d);
 121             b.append(d5);
 122         } else if (no == 9) {
 123             b.append(d);
 124             b.append(d10);
 125         } else {
 126             if (no / 5 > 0) {
 127                 b.append(d5);
 128             }
 129 
 130             for (int i = 0; i <
 131                     no % 5; i++) {
 132                 b.append(d);
 133             }
 134 
 135         }
 136     }
 137 
 138     @Override
 139     public boolean equals(Object o) {
 140         if (o != null && o instanceof LiczbaRzymska && ((LiczbaRzymska) o).wartosc == this.wartosc) {
 141             return true;
 142         } else {
 143             return false;
 144         }
 145     }
 146 
 147     @Override
 148     public int hashCode() {
 149         return wartosc;
 150     }
 151 
 152     @Override
 153     public String toString() {
 154         int lt = wartosc / 1000;
 155         int ls = (wartosc % 1000) / 100;
 156         int ld = (wartosc % 100) / 10;
 157         int lj = wartosc % 10;
 158         StringBuffer b = new StringBuffer();
 159         addDigit(b, lt, 'M', 'B', '@');
 160         addDigit(b, ls, 'C', 'D', 'M');
 161         addDigit(b, ld, 'X', 'L', 'C');
 162         addDigit(b, lj, 'I', 'V', 'X');
 163         return b.toString() + " (" + wartosc + ")";
 164     }
 165 }

   1 package liczbyrzymskie;
   2 
   3 /**
   4  *
   5  * @author jstar
   6  */
   7 public class Main {
   8 
   9     /**
  10      * @param args the command line arguments
  11      */
  12     public static void main(String[] args) {
  13         LiczbaRzymska l1 = new LiczbaRzymska( 5 );
  14         LiczbaRzymska l2 = new LiczbaRzymska( 128 );
  15         LiczbaRzymska l3 = new LiczbaRzymska( 1969 );
  16         Object o = new LiczbaRzymska(123);
  17         LiczbaRzymska l4 = new LiczbaRzymska( "XLII" );
  18         l2.add( l1 );
  19         l2.add( -70 );
  20         System.out.println( "Przyklad liczby rzymskiej: " + l1.toString() );
  21         System.out.println( "Inny przyklad liczby rzymskiej: " + l2.toString() );
  22         System.out.println( "Jeszcze inny przyklad liczby rzymskiej: " + l3.toString() );
  23         System.out.println( "Jeszcze inny przyklad liczby rzymskiej: " + o );
  24         System.out.println( "Jeszcze inny przyklad liczby rzymskiej: " + l4 );
  25     }
  26 
  27 }

   1 /*
   2  * To change this template, choose Tools | Templates
   3  * and open the template in the editor.
   4  */
   5 package liczbyrzymskie;
   6 
   7 /**
   8  *
   9  * @author jstar
  10  */
  11 public class LiczbaRzymska extends Object {
  12 
  13     private int wartosc;
  14 
  15     public LiczbaRzymska(int v) {
  16         wartosc = v;
  17     }
  18 
  19     public LiczbaRzymska() {
  20         wartosc = 0;
  21     }
  22 
  23     public LiczbaRzymska( String v ) {
  24         wartosc= 0;
  25         for( int i = 0; i < v.length(); i++ )
  26             switch( v.charAt(i) ) {
  27                 case 'M': wartosc += 1000;
  28                 break;
  29                 case 'D': wartosc += 500;
  30                 break;
  31                 case 'C': wartosc += 100;
  32                 break;
  33                 case 'L': wartosc += 50;
  34                 break;
  35                 case 'X': wartosc += 10;
  36                 break;
  37                 case 'V': wartosc += 5;
  38                 break;
  39                 case 'I': wartosc += 1;
  40                 break;
  41                 default: return;
  42                 //break;
  43             }
  44     }
  45 
  46     public void add(LiczbaRzymska o) {
  47         wartosc += o.wartosc;
  48     }
  49 
  50     public void add(int o) {
  51         wartosc += o;
  52     }
  53 
  54     private void addDigit(StringBuffer b, int no, char d, char d5, char d10) {
  55         if (no == 4) {
  56             b.append(d);
  57             b.append(d5);
  58         } else if (no == 9) {
  59             b.append(d);
  60             b.append(d10);
  61         } else {
  62             if (no / 5 > 0) {
  63                 b.append(d5);
  64             }
  65             for (int i = 0; i < no % 5; i++) {
  66                 b.append(d);
  67             }
  68         }
  69     }
  70 
  71     @Override
  72     public boolean equals( Object o ) {
  73         if( o != null && o instanceof LiczbaRzymska && ((LiczbaRzymska)o).wartosc == this.wartosc )
  74             return true;
  75         else
  76             return false;
  77     }
  78 
  79     @Override
  80     public int hashCode() {
  81         return wartosc;
  82     }
  83 
  84     @Override
  85     public String toString( ) {
  86         int lt = wartosc / 1000;
  87         int ls = (wartosc % 1000) / 100;
  88         int ld = (wartosc % 100) / 10;
  89         int lj = wartosc % 10;
  90         StringBuffer b = new StringBuffer();
  91         addDigit(b, lt, 'M', 'B', '@');
  92         addDigit(b, ls, 'C', 'D', 'M');
  93         addDigit(b, ld, 'X', 'L', 'C');
  94         addDigit(b, lj, 'I', 'V', 'X');
  95         return b.toString() + " (" + wartosc + ")";
  96     }
  97 }

2015-09-23 06:47