Figure geometriche
This commit is contained in:
parent
54b7468ce2
commit
e03e128d70
29
src/FigureGeometriche/Cerchio.java
Normal file
29
src/FigureGeometriche/Cerchio.java
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import java.io.PrintStream;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class Cerchio implements FiguraGeometrica{
|
||||||
|
|
||||||
|
public Cerchio(double raggio){
|
||||||
|
this.raggio=raggio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Cerchio read(Scanner sc) throws Exception{
|
||||||
|
if(!sc.hasNextDouble()) return null;
|
||||||
|
|
||||||
|
return new Cerchio(sc.nextDouble());
|
||||||
|
}
|
||||||
|
|
||||||
|
public double calcolaPerimetro(){
|
||||||
|
return raggio*3.14*2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double calcolaArea(){
|
||||||
|
return raggio*raggio*3.14;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void print(PrintStream ps){
|
||||||
|
ps.println("Cerchio di raggio: "+raggio);
|
||||||
|
}
|
||||||
|
|
||||||
|
private double raggio;
|
||||||
|
}
|
7
src/FigureGeometriche/FiguraGeometrica.java
Normal file
7
src/FigureGeometriche/FiguraGeometrica.java
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
|
public interface FiguraGeometrica{
|
||||||
|
double calcolaPerimetro();
|
||||||
|
double calcolaArea();
|
||||||
|
void print(PrintStream ps);
|
||||||
|
}
|
41
src/FigureGeometriche/FiguraRegolare.java
Normal file
41
src/FigureGeometriche/FiguraRegolare.java
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import java.io.PrintStream;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class FiguraRegolare implements FiguraGeometrica{
|
||||||
|
|
||||||
|
public FiguraRegolare(double lato, int nlati, double numeroFisso){
|
||||||
|
this.lato=lato;
|
||||||
|
this.nlati=nlati;
|
||||||
|
apotema=numeroFisso*lato;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FiguraRegolare read(Scanner sc) throws Exception{
|
||||||
|
double lato, numeroFisso;
|
||||||
|
int nlati;
|
||||||
|
|
||||||
|
if(!sc.hasNextDouble()) return null;
|
||||||
|
lato=sc.nextDouble();
|
||||||
|
if(!sc.hasNextDouble()) return null;
|
||||||
|
numeroFisso=sc.nextDouble();
|
||||||
|
if(!sc.hasNextInt()) return null;
|
||||||
|
nlati=sc.nextInt();
|
||||||
|
|
||||||
|
return new FiguraRegolare(lato, nlati, numeroFisso);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double calcolaPerimetro(){
|
||||||
|
return lato*nlati;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double calcolaArea(){
|
||||||
|
return (calcolaPerimetro()*apotema)/2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void print(PrintStream ps){
|
||||||
|
ps.println("Figura regolare di "+nlati+" lunghi "+lato);
|
||||||
|
}
|
||||||
|
|
||||||
|
private double lato;
|
||||||
|
private double apotema;
|
||||||
|
private int nlati;
|
||||||
|
}
|
43
src/FigureGeometriche/Manager.java
Normal file
43
src/FigureGeometriche/Manager.java
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
import java.io.PrintStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class Manager{
|
||||||
|
public Manager(Scanner sc) throws Exception{
|
||||||
|
figure = new ArrayList<FiguraGeometrica>();
|
||||||
|
FiguraGeometrica fg;
|
||||||
|
String tipo=sc.next();
|
||||||
|
|
||||||
|
do{
|
||||||
|
if(!sc.hasNext())
|
||||||
|
fg=null;
|
||||||
|
else{
|
||||||
|
tipo=sc.next();
|
||||||
|
if(tipo.equals("Regolare"))
|
||||||
|
fg=FiguraRegolare.read(sc);
|
||||||
|
else if(tipo.equals("Rettangolo"))
|
||||||
|
fg=Rettangolo.read(sc);
|
||||||
|
else
|
||||||
|
fg=Cerchio.read(sc);
|
||||||
|
figure.add(fg);
|
||||||
|
}
|
||||||
|
}while(fg!=null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getAreaMax() {
|
||||||
|
FiguraGeometrica max = figure.get(0);
|
||||||
|
|
||||||
|
for (int i = 1; i < figure.size(); i++)
|
||||||
|
if (max.calcolaArea() < figure.get(i).calcolaArea())
|
||||||
|
max = figure.get(i);
|
||||||
|
|
||||||
|
return max.calcolaArea();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void print(PrintStream ps){
|
||||||
|
for(FiguraGeometrica fg: figure)
|
||||||
|
fg.print(ps);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArrayList<FiguraGeometrica> figure;
|
||||||
|
}
|
36
src/FigureGeometriche/Rettangolo.java
Normal file
36
src/FigureGeometriche/Rettangolo.java
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
import java.io.PrintStream;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class Rettangolo implements FiguraGeometrica{
|
||||||
|
|
||||||
|
public Rettangolo(double base, double altezza){
|
||||||
|
this.base=base;
|
||||||
|
this.altezza=altezza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Rettangolo read(Scanner sc) throws Exception{
|
||||||
|
double base, altezza;
|
||||||
|
|
||||||
|
if(!sc.hasNextDouble()) return null;
|
||||||
|
base=sc.nextDouble();
|
||||||
|
if(!sc.hasNextDouble()) return null;
|
||||||
|
altezza=sc.nextDouble();
|
||||||
|
|
||||||
|
return new Rettangolo(base, altezza);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double calcolaPerimetro(){
|
||||||
|
return (base+altezza)*2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double calcolaArea(){
|
||||||
|
return base*altezza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void print(PrintStream ps){
|
||||||
|
ps.println("Rettangolo "+base+"x"+altezza);
|
||||||
|
}
|
||||||
|
|
||||||
|
private double base;
|
||||||
|
private double altezza;
|
||||||
|
}
|
12
src/FigureGeometriche/Test.java
Normal file
12
src/FigureGeometriche/Test.java
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import java.io.File;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class Test {
|
||||||
|
public static void main(String [] args) throws Exception{
|
||||||
|
Scanner sc = new Scanner(new File("figure"));
|
||||||
|
Manager manager = new Manager(sc);
|
||||||
|
|
||||||
|
//manager.getAreaMax();
|
||||||
|
manager.print(System.out);
|
||||||
|
}
|
||||||
|
}
|
6
src/FigureGeometriche/figure
Normal file
6
src/FigureGeometriche/figure
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Cerchio 2
|
||||||
|
Regolare 2 0.5 4
|
||||||
|
Regolare 2 1.03 7
|
||||||
|
Rettangolo 3 5
|
||||||
|
Cerchio 3
|
||||||
|
Regolare 2 2.35 15
|
Loading…
Reference in New Issue
Block a user