progJ.pdf 2013-07-06: ソース追加 |
ファイルの分割 |
progJ-e.pdf にprogJ.pdf の[#20]-[#27]に対応する部分の演習を追加しました.
//#28%1
//Main.java
package myproj;
public class Main {
public static //-
void main (String[ ] args){
Complex z = new Complex(2, -3);
z.mult(new Complex(1, 1));
System.out.println(z.abs( ));
}
}
class Complex{
double r, i;
Complex(double x, double y) //-
{r = x; i = y;}
void add(Complex z) //-
{r += z.r; i += z.i;}
void mult(Complex z){
double tmp = r * z.r - i * z.i;
i = r * z.i + i * z.r; r = tmp;
}
//------------------------------------
void sub(Complex z) //-
{r -= z.r; i -= z.i;}
void div(Complex z){
double a2 = z.r * z.r + z.i * z.i;
r = (r * z.r + i * z.i)/a2;
i = (i * z.r - r * z.i)/a2;
}
//------------------------------------
double abs( ){
return Math.sqrt(r * r + i * i);
}
}
--------------------------------------------------------------------------------
//#28%2
//Complex.java
package myproj;
class Complex{
double r, i;
Complex(double x, double y) //-
{r = x; i = y;}
void add(Complex z) //-
{r += z.r; i += z.i;}
void mult(Complex z){
double tmp = r * z.r - i * z.i;
i = r * z.i + i * z.r; r = tmp;
}
double abs( ){
return Math.sqrt(r * r + i * i);
}
//----------------
void load(Complex z) //-
{r = z.r; i = z.i;}
double re( ){return r;}
double im( ){return i;}
void conj( ){i = -i;}
double abs2( ){return r * r + i * i;}
//----------------
void recip( ){
double a2 = this.abs2();
r = r/a2; i = -i/a2;
}
void mult(double x){r *= x; i *= x;}
Complex( ){r = i = 0;}
Complex(double x){r = x; i = 0;}
//----------------
}
//Main.java
package myproj;
public class Main {
public static void main (String[ ] args){
Complex z = new Complex(2, -3);
z.mult(new Complex(1, 1));
z.conj( );
System.out.println(
z.re( ) +", "+ z.im( ) +", "+ z.abs2( )
);
//------------------------
z = new Complex(3, 4);
z.recip(); z.mult(25);
System.out.println(z.re( ) +", "+ z.im( ));
//------------------------
}
}
--------------------------------------------------------------------------------
//#28%4
//List.java
package myproj;
class List{
Cell top; int sz; //size
List( ){top = new Cell(""); sz = 0;}
void insert(String s, int k){
//if(k<1 || k>sz+1){return;}
Cell c1 = top, c2 = new Cell(s);
while(k > 1){c1 = c1.n; k--;}
if(c1.n != null){c2.n = c1.n;}
c1.n = c2; sz++;
}
void delete(int k){
//if(k<1 || k>sz){return;}
Cell c1 = top;
while(k > 1){c1 = c1.n; k--;}
c1.n = c1.n.n; sz--;
}
/*
String show(int k){
if(k<1 || k>sz){return "?";}
Cell c1 = top.n; int i = k;
while(k > 1){c1 = c1.n; k--;}
System.out.println(i + ": " + c1.d);
return c1.d;
}
*/
void show( ){
Cell c1 = top;
while(c1.n != null){
c1 = c1.n; if(c1 == null) break;
System.out.print(c1.d + " ");
}
System.out.println( );
}
}
//Main.java
package myproj;
public class Main{
public static void main(String[] args) {
List x = new List( );
x.ins("a", x.sz + 1);
x.ins("b", x.sz + 1);
x.ins("c", x.sz + 1); x.show( );
x.ins("m", 1); x.ins("n", 3);
x.show( ); x.del(1); x.del(3);
x.del(x.sz); x.show( );
}
}