idzik icon

Matura/Zbior-zadań/Zadanie-80/rozwiązanie.java

idzik | PRO | 01/01/16 01:43:43 PM UTC | 0 ⭐ | 355 👁️ | Never ⏰ | []
Java |

3.29 KB

|

None

|

0 👍

/

0 👎

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
 
public class Zadanie {
    
    public static boolean czyProstokatny(int a,int b, int c){ //nie używać pierwiastków w sprawdzaniu warunków
        if ((a*a+b*b==c*c) || (a*a+c*c==b*b) || (c*c+b*b==a*a)) 
         return true;   
        else
         return false;
    }
    
    public static boolean czyTrojkat(int a, int b, int c){
        if ((a+b>c) && (a+c>b) && (c+b>a))  
             return true;   
            else
             return false;
    }
    
    public static int obliczObwod(int a, int b, int c){ //tutaj juz zakładamy, ze a,b,c tworzą trójkąt!
        return (a+b+c);
    }
    
    public static void main(String[] args) throws IOException {
        File plik=new File("dane_trojkaty.txt");
        PrintWriter zapis=new PrintWriter("wynik_trojkąty.txt");
        Scanner odczyt=new Scanner(plik);
        ArrayList lista=new ArrayList<String>();
        while (odczyt.hasNextLine()){
            lista.add(odczyt.nextLine());  //wczytanie liczb do arraylisty, po wczytaniu elementy tablicy stają się obiektami klasy Object
        }
        //*** odpowiedz do pierwszego punktu
        zapis.println("Odpowiedzi do punktu 1");
        System.out.println("Odpowiedzi do punktu 1");
        for (int i=0;i<lista.size()-2;i++)
        {
            
            if (czyProstokatny(Integer.parseInt(String.valueOf(lista.get(i))),Integer.parseInt(String.valueOf(lista.get(i+1))),Integer.parseInt(String.valueOf(lista.get(i+2)))))
            {
                System.out.println(lista.get(i)+","+lista.get(i+1)+","+lista.get(i+2));
                zapis.println(lista.get(i)+","+lista.get(i+1)+","+lista.get(i+2));
            }
            
        }
        
        //*** koniec odpowiedzi do pierwszego punktu
        //#####################################
        //*** odpowiedz do drugiego punktu
        int maxObwod=0; //maksymalny obwód
        int obwod=0; //roboczy obwód
        int licznik=0; //licznik nieprzystjących
        
        for (int i=0;i<lista.size()-2;i++)
            for (int j=i+1;j<lista.size()-1;j++)
                for (int k=j+1;k<lista.size();k++)
                {
                    if (czyTrojkat(Integer.parseInt(String.valueOf(lista.get(i))),Integer.parseInt(String.valueOf(lista.get(j))),Integer.parseInt(String.valueOf(lista.get(k))))){
                        obwod=Integer.parseInt(String.valueOf(lista.get(i)))+Integer.parseInt(String.valueOf(lista.get(j)))+Integer.parseInt(String.valueOf(lista.get(k)));
                        licznik++; //powiększamy licznik trójkątów nie przystajacych, należy pamiętać, że żadna liczba nie powtórzy się w pliku
                    }
                        
                        if (obwod>maxObwod)
                            {
                            maxObwod=obwod;
                            //System.out.println("Znaleziono większy obwod dla nastepującego trójkąta");
                            //System.out.println(lista.get(i)+","+lista.get(j)+","+lista.get(k));
                            }
                }
        System.out.println("Odpowiedzi do punktu 2.");
        System.out.println("Największy obwód to "+maxObwod);
        zapis.println("Odpowiedzi do punktu 2");
        zapis.println("Największy obwód to "+maxObwod);
        //*** koniec odpowiedzi do drugiego punktu
        //#####################################
        //*** odpowiedz do trzeciego punktu
        System.out.println("Odpowiedzi do punktu 3");
        System.out.println("Nie przystających jest "+licznik);
        zapis.println("Odpowiedzi do punktu 3");
        zapis.println("Nie przystających jest "+licznik);
        //*** koniec odpowiedzi do trzeciego punktu
        
        zapis.close();
    }
 
}

Comments