Laborator 5
Exercitiul 1
class NumarComplex {
protected double re,im;
public NumarComplex(double re, double im) {
this.re = re;
this.im = im;
}
public double modul() {
return Math.sqrt( re * re + im * im );
}
public String toString() {
return re + " + " + im + " * i";
}
}
class NumarReal extends NumarComplex {
public NumarReal(double re) {
super(re,0);
}
public boolean maiMare(NumarReal a) {
return re > a.re;
}
}
public class Main {
public static void test(NumarComplex x) {
if (x instanceof NumarReal)
System.out.println("NumarReal");
else
System.out.println("NumarComplex");
}
public static void main(String[] args) {
NumarComplex a = new NumarComplex(1,1);
System.out.println("Numarul este: " + a);
System.out.println("Modulul sau este: " + a.modul());
NumarReal c = new NumarReal(5);
NumarReal d = new NumarReal(-6);
System.out.println("Primul numar este: " + c);
System.out.println("Modulul sau este: " + c.modul());
System.out.println("Al doilea numar este: " + d);
System.out.println("Modulul sau este: " + d.modul());
System.out.println("E primul numar mai mare ca al doilea? - " + c.maiMare(d));
NumarReal b = new NumarReal(5);
test(a); //Se va tipari NumarComplex
test(b); //Se va tipari NumarReal
}
}
Exercitiul 2
class Punct{
private float x,y;
public Punct(float x, float y){
this.x=x;
this.y=y;
}
}
class PunctColorat extends Punct{
private float c;
public PunctColorat(float x,float y,float c){
super(x,y);
this.c=c;
}
/*Trebuie sa avem constructor, altfel s-ar apela constructorului supeclasei fara argurmente*/
}
Exercitul 3
import java.io.*;
class NumarComplex {
protected double re, im;
public NumarComplex(double re, double im) {
this.re = re;
this.im = im;
}
public double modul() {
return Math.sqrt(re * re + im * im);
}
public NumarComplex adunare(NumarComplex a) {
return new NumarComplex(re + a.re, im + a.im);
}
public NumarComplex inmultire(NumarComplex b) {
return new NumarComplex(this.re * b.re - this.im * b.im, this.re * b.im + this.im * b.re);
}
public String toString() {
return re + "+" + im + "*i";
}
}
class NumarReal extends NumarComplex {
public NumarReal(double re) {
super(re, 0);
}
}
public class Main {
public static void citire_matrice(NumarComplex[][] a,int n, int m)
{
InputStreamReader inputKeyboard = new InputStreamReader(System.in);
BufferedReader buffKeyboard = new BufferedReader(inputKeyboard);
int control=-1;
double re,im;
System.out.println("Introduceti elementele matricii: ");
try {
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) {
System.out.print("Elementul [" + i + "][" + j + "] este complex?(Da=1;Nu=0):");
control = Integer.parseInt(buffKeyboard.readLine());
if (control == 1) {
System.out.print("Partea reala :[" + i + "][" + j + "]=");
re = Double.parseDouble(buffKeyboard.readLine());
System.out.print("Partea imaginara :[" + i + "][" + j + "]=");
im = Double.parseDouble(buffKeyboard.readLine());
a[i][j] = new NumarComplex(re, im);
} else {
System.out.print("a[" + i + "][" + j + "]=");
re = Double.parseDouble(buffKeyboard.readLine());
a[i][j] = new NumarReal(re);
}
}
}
catch (IOException e) {
System.out.println("Variabilele trebuie sa fie de tip int/double");
}
}
public static void inmultire_matrice(NumarComplex[][] a, NumarComplex[][] b){
int nr_linii_a=a.length;
int nr_linii_b=a[0].length;
int nr_coloane_b=b[0].length;
NumarComplex[][] c = new NumarComplex[nr_linii_a][nr_coloane_b];
for (int i = 0; i <nr_linii_a; i++)
for (int j = 0; j < nr_coloane_b; j++) {
c[i][j] = new NumarReal(0.0);
for (int k = 0; k < nr_linii_b; k++)
c[i][j] = c[i][j].adunare(a[i][k].inmultire(b[k][j]));
}
for (int i = 0; i <nr_linii_a; i++) {
for (int j = 0; j < nr_coloane_b; j++) {
System.out.print(c[i][j]+"\t");
}
System.out.println("");
}
}
public static void main(String[] args) {
NumarComplex nr1 = new NumarComplex(1,1);
NumarComplex nr2 = new NumarComplex(1,2);
System.out.print(nr1.inmultire(nr2)+"\n");
InputStreamReader inputKeyboard = new InputStreamReader(System.in);
BufferedReader buffKeyboard = new BufferedReader(inputKeyboard);
try {
System.out.print("N=");
int n = Integer.parseInt(buffKeyboard.readLine());
System.out.print("M=");
int m = Integer.parseInt(buffKeyboard.readLine());
System.out.print("P=");
int p = Integer.parseInt(buffKeyboard.readLine());
NumarComplex[][] a = new NumarComplex[n][m];
NumarComplex[][] b = new NumarComplex[m][p];
citire_matrice(a,n,m);
citire_matrice(b,m,p);
inmultire_matrice(a,b);
} catch (IOException e) {
System.out.println("Variabilele trebuie sa fie de tip int/double");
}
}
}
Exercitiul 4
class avion{
protected String PlaneID;
protected int totalEnginePower;
public avion(String PlaneID, int totalEnginePower){
this.PlaneID=PlaneID;
this.totalEnginePower=totalEnginePower;
}
public String getPlaneID(){
return this.PlaneID;
}
public int getTotalEnginePower(){
return this.totalEnginePower;
}
public void takeOff(){
System.out.println(getPlaneID()+"-Initiating takeoff procedure - Starting engines - "+
"Accelerating down the runway-Taking off- Retracting gear- " +
"Takeoff complete");
}
public void fly(){
System.out.println(getPlaneID()+" Flying");
}
public void land(){
System.out.println(getPlaneID()+"-Initiating landing procedure-Enabling airbrakes-"+
"Lowering gear-Contacting runway-Decelerating-Stopping engines-"+
"Landing complete");
}
}
class avionCalatori extends avion{
protected int maxPassengers;
public avionCalatori(String PlaneID, int totalEnginePower,int maxPassengers){
super(PlaneID,totalEnginePower);
this.maxPassengers=maxPassengers;
}
public int getMaxPassengers(){
return maxPassengers;
}
}
class Concorde extends avionCalatori{
public Concorde(String PlaneID,int totalEnginePower,int maxPassengers){
super(PlaneID,totalEnginePower,maxPassengers);
}
public void goSuperSonic(){
System.out.println(getPlaneID()+"-Supersonic mode activated");
}
public void goSubSonic(){
System.out.println(getPlaneID()+"-Supersonic mode deactivated");
}
}
class avionLupta extends avion{
public avionLupta(String PlaneID,int totalEnginePower){
super(PlaneID,totalEnginePower);
}
public void launchMissile(){
System.out.println(getPlaneID()+"-Initiating missile launch procedure Acquiring target"+
"-Launching missile-Breaking away-Missile launch complete");
}
}
class Mig extends avionLupta {
public Mig(String PlaneID,int totalEnginePower){
super(PlaneID,totalEnginePower);
}
public void highSpeedGeometry(){
System.out.println(getPlaneID()+"-High speed geometry selected");
}
public void normalGeometry(){
System.out.println(getPlaneID()+"-Normal geometry selected");
}
}
class TomCat extends avionLupta{
public TomCat(String PlaneID,int totalEnginePower){
super(PlaneID,totalEnginePower);
}
public void refuel(){
System.out.println(getPlaneID()+"-Initiating refueling procedure-Locating refueller-"+
"Catching up-Refueling-Refueling complete");
}
}
public class TurnComanda {
public static void main(String argv[]) {
avion c1 = new Concorde("Con979", 15000, 300);
avion m1 = new Mig("MI707", 25000);
avion t1 = new TomCat("TC101", 26000);
((Concorde) c1).takeOff();
((Concorde) c1).fly();
((Concorde) c1).goSuperSonic();
((Concorde) c1).goSubSonic();
((Concorde) c1).land();
((Mig) m1).highSpeedGeometry();
((Mig) m1).launchMissile();
((TomCat) t1).refuel();
}
}