kamus Opublikowano 1 Kwietnia 2006 Zgłoś Opublikowano 1 Kwietnia 2006 Program ten ma sprawdzac, czy dane 4 współrzedne tworzą prostokąt..Problem polega na tym, ze współrzędne muszą byc wpisane w odpowiedniej kolejności, bo inaczej poprostu nie działa.. wiem, ze aby tak nie musiało byc trzeba jakoś posortować elementy.. ale ja nie mam pojecia jak.. moglby mi ktoś pomóc? musze to zrobić na wtorek.. a siedze juz nad tym 3 dzień i naprawde wymiękam.. bede bardzo wdzięczny. import java.io.*; //import pakietówimport java.util.*;public class Prostokat { /** * * uzycie potoków znakowych(Unicode) * * Klasa BufferedReader dostarcza metodę readLine(), która zwraca odczytaną ze strumienia linię tekstu. * * InputStreamReader-zamiana bajtów na znaki * * */ private static BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); //deklaracja składników klasy int x1=0; int x2=0; int x3=0; int x4=0; int y1=0; int y2=0; int y3=0; int y4=0; int w=0; double a,b,c,d; int i; int[] x; int[] y; int[] xp; int[] yp; Prostokat()// konstruktor { ustaw(); } void ustaw () { System.out.println("Tworzenie nowego obiektu..."); x= new int[4]; y= new int[4]; xp= new int[4]; yp= new int[4]; for(i=0;i<4;i++) { try{ System.out.println("x"+(i+1)+"="); x[i] = Integer.parseInt(stdin.readLine()); //Metoda parseInt dokonuje konwersji łańcucha znakowego na liczbę całkowitą, o ile jest to możliwe. System.out.println("y"+(i+1)+"="); y[i] = Integer.parseInt(stdin.readLine()); }catch(Exception e){}; } //tutaj jest sortowanie, które nie dziala... int licznik,max,maxp; for(licznik=0;licznik<4;licznik++) { max=x[0]; maxp=1; for(i=1;i<4;i++) { if (x[i]<max){max =x[i];maxp=i;} if (x[i]==max) { if (y[i]<y[maxp]) {max=x[i];maxp=i;} }} xp[licznik]=x[maxp]; yp[licznik]=y[maxp]; for (i=maxp;i<licznik;i++){ x[i]=x[i+1]; y[i]=y[i+1];} } a = Math.sqrt((xp[0]-xp[1])*(xp[0]-xp[1])+(yp[0]-yp[1])*(yp[0]-yp[1])); b = Math.sqrt((xp[2]-xp[3])*(xp[2]-xp[3])+(yp[2]-yp[3])*(yp[2]-yp[3])); c = Math.sqrt((xp[0]-xp[2])*(xp[0]-xp[2])+(yp[0]-yp[2])*(yp[0]-yp[2])); d = Math.sqrt((xp[1]-xp[3])*(xp[1]-xp[3])+(yp[1]-yp[3])*(yp[1]-yp[3])); if(x[0]>20 || x[1]>20 || x[2]>20 || x[3]>20 || y[0]>20 || y[1]>20 || y[2]>20 || y[3]>20) {System.out.println("Wspolrzedne nie moga byc wieksze od 20!");w++;} else { if(xp[0]>=0 && xp[1]>=0 && xp[2]>=0 && xp[3]>=0 && yp[0]>=0 && yp[1]>=0 && yp[2]>=0 && yp[3]>=0) System.out.println("Figura znajduje sie w I cw ukladu wspolrzednych"); if(a!=b || c!=d) { System.out.println("Podana przez Ciebie figura nie jest prostokatem"); w++; } else System.out.println("Podana przec Ciebie figura jest prostokatem"); } } void obwod () { double ob; ob=a+b+c+d; System.out.println("Obwod wynosi: "+ob); }void powierzchnia () { double pow; pow=a*c; System.out.println("powierzchnia "+pow); } void dlugosc () { for(i=0;i<4;i++) {System.out.print(xp[i]); System.out.println(yp [i]);} if(a>c) System.out.println("Dlugosc dluzszego boku: "+a); else System.out.println("Dlugosc dluzszego boku: "+c); } void kwadrat () { if(a==b && b==c) System.out.println("Ta figura jest kwadratem"); else System.out.println("Ta figura nie jest kwadratem"); } static public void main(String args[]){ Prostokat obiekt=new Prostokat(); // if(obiekt.w==0){ System.out.println("Jaka funkcje chcesz wywolac?"); int wybor=0; System.out.println("1 - obwod"); System.out.println("2 - powierzchnia"); System.out.println("3 - dlugosc "); System.out.println("4 - kwadrat ( sprawdza, czy dany prostokat jest kwadratem)"); System.out.println("5 - wszytskie "); try{ wybor = Integer.parseInt(stdin.readLine()); } catch(Exception e){}; switch (wybor) { case 1: obiekt.obwod(); break; case 2: obiekt.powierzchnia(); break; case 3: obiekt.dlugosc(); break; case 4: obiekt.kwadrat(); break; case 5: { obiekt.obwod(); obiekt.powierzchnia(); obiekt.dlugosc(); obiekt.kwadrat(); break; } default: System.out.println("Nie ma takiej opcji!!!"); break; } } }} Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...