Laborator 5

Lab 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();

}

}