Advertisement
Xetos

2009b 2-4

Mar 21st, 2016
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.01 KB | None | 0 0
  1. /*
  2.  * 2.   Írj egy osztályt vektorok megvalósítására!
  3.  *  A vektor komponenseit, amelyek egész számok lehetnek,
  4.  *   a konstruktor kapja meg tömb paraméterként.
  5.  *  
  6.  *   Írj egy metódust, amely a vektort megszorozza a paraméterében kapott vektorral
  7.  *    (skaláris szorzat) és egy egész számmal tér vissza ha a vektorok
  8.  *    összeszorozhatóak (azonos számú komponensük van), egyébként ’null’-lal!
  9.  *     Segítségként, két vektor skaláris szorzata:
  10.  *
  11.  .
  12. Írj egy másik metódust is, mely az aktuális objektumban tárolt vektor hosszát
  13. (ami egy valós szám) adja vissza. Segítségként, a vektor hossza önmagával vett
  14. skaláris szorzatának négyzetgyöke:
  15.  
  16. (Segítség: a Math osztály static double sqrt(double a) függvénye a megadott szám
  17. négyzetgyökével tér vissza.)  (15 pont)
  18.  
  19.  
  20. 3.   Bővítsd ki az előző feladat osztályát úgy, hogy az String formára alakítható legyen!
  21.  A String forma [a1, a2, a3,…,an] alakú legyen, ahol ai-k a vektor komponensei!
  22.  (A String összefűzés (’+’ művelet) String típusú változók esetén is használható,
  23.   nem csak String literálok esetén.) (3 pont)
  24.  
  25.  
  26.  */
  27. package matematika;
  28.  
  29. //import java.util.Arrays;
  30.  
  31. public class Vektor {
  32.     private int[] komponens;
  33.    
  34.     public Vektor(int[] komponens){
  35.         this.komponens = new int[komponens.length];
  36.         // tömbe lemeinek átmásolása, hogy a vektor ne függjön egy osztályon kívül létrehozott tömbtől
  37.         for(int i=0;i<komponens.length;i++){
  38.             this.komponens[i]=komponens[i];
  39.         }
  40.     }
  41.     public int komponensekSzama(){
  42.         return komponens.length;
  43.     }
  44.    
  45.     public int getKomponens(int pos){
  46.         return komponens[pos];
  47.     }
  48.    
  49.     public Integer skalarisSzorzat(Vektor jobb){
  50.         if(komponens.length != jobb.komponensekSzama()){ //azonos méretűek-e?
  51.             return null;
  52.         }else{ // skaláris szorzat
  53.             int sum =0;
  54.             for(int i=0;i<komponens.length;i++){
  55.                 sum+=komponens[i]*jobb.getKomponens(i);
  56.             }
  57.             return sum;
  58.         }
  59.     }
  60.    
  61.     public double hossz(){
  62.         // vektor önmagával vett skaláris szorzata
  63.         return Math.sqrt(skalarisSzorzat(this));
  64.     }
  65.     public String toString() {
  66.         /*StringBuffer sb = new StringBuffer();
  67.         sb.append("[");
  68.         for(int i=0;i<komponens.length-1;i++){
  69.             sb.append(komponens[i]+",");
  70.         }
  71.         sb.append(komponens[komponens.length-1]+"]");
  72.         return sb.toString();*/
  73.         //vagy
  74.         //return Arrays.toString(komponens);
  75.        
  76.         //vagy, ha nem ismerjük a StringBuffer-t, akkor egy nem hatékony megoldás
  77.         String res = "";
  78.         res += "[";
  79.         for(int i=0;i<komponens.length-1;i++){
  80.             res+=komponens[i]+",";
  81.         }
  82.         res+=komponens[komponens.length-1]+"]";
  83.         return res;
  84.     }
  85.    
  86. }
  87.  
  88.  
  89.  
  90.  
  91. /*
  92. 4.  A 2-3. feladatokban megírt osztályt helyezd a „matematika” nevű csomagba,
  93.  és írj egy csomagon kívüli futtatható osztályt, amely a parancssoron sorban
  94. kap két vektort (első szám lesz a vektor komponenseinek száma,
  95. majd következnek a vektor komponensei). Írassuk ki a két vektort, majd az
  96. előző feladat megoldását felhasználva számítsuk ki a két vektor skaláris szorzatát,
  97. és a második vektor hosszát (lásd a példát)! (10 pont)
  98.  
  99.  
  100. */
  101.  
  102.  
  103. Vektor_Futtat
  104.  
  105. import matematika.Vektor;
  106.  
  107. public class VektorFuttat {
  108.  
  109.     public static void main(String[] args) {
  110.         if(args.length==0)
  111.             return;
  112.         int x = Integer.parseInt(args[0]); // első vektor mérete
  113.         int[] elso = new int[x];
  114.         for(int i=1;i<=x;i++)
  115.             elso[i-1]=Integer.parseInt(args[i]);
  116.        
  117.         int y = Integer.parseInt(args[x+1]); // második vektor mérete
  118.         int[] masodik = new int[y];
  119.         for(int i=x+2;i<=x+y+1;i++)
  120.             masodik[i-x-2]=Integer.parseInt(args[i]);
  121.        
  122.         // vektorok létrehozása
  123.         Vektor elsoVektor = new Vektor(elso);
  124.         Vektor masodikVektor = new Vektor(masodik);
  125.        
  126.         System.out.println("Elso vektor: "+elsoVektor);
  127.         System.out.println("Masodik vektor: "+masodikVektor);
  128.        
  129.         System.out.println("Skalaris szorzat: "+elsoVektor.skalarisSzorzat(masodikVektor));
  130.         System.out.println("Masodik vekor hossza: "+masodikVektor.hossz());
  131.  
  132.     }
  133.  
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement