Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * 2. Írj egy osztályt vektorok megvalósítására!
- * A vektor komponenseit, amelyek egész számok lehetnek,
- * a konstruktor kapja meg tömb paraméterként.
- *
- * Írj egy metódust, amely a vektort megszorozza a paraméterében kapott vektorral
- * (skaláris szorzat) és egy egész számmal tér vissza ha a vektorok
- * összeszorozhatóak (azonos számú komponensük van), egyébként ’null’-lal!
- * Segítségként, két vektor skaláris szorzata:
- *
- .
- Írj egy másik metódust is, mely az aktuális objektumban tárolt vektor hosszát
- (ami egy valós szám) adja vissza. Segítségként, a vektor hossza önmagával vett
- skaláris szorzatának négyzetgyöke:
- (Segítség: a Math osztály static double sqrt(double a) függvénye a megadott szám
- négyzetgyökével tér vissza.) (15 pont)
- 3. Bővítsd ki az előző feladat osztályát úgy, hogy az String formára alakítható legyen!
- A String forma [a1, a2, a3,…,an] alakú legyen, ahol ai-k a vektor komponensei!
- (A String összefűzés (’+’ művelet) String típusú változók esetén is használható,
- nem csak String literálok esetén.) (3 pont)
- */
- package matematika;
- //import java.util.Arrays;
- public class Vektor {
- private int[] komponens;
- public Vektor(int[] komponens){
- this.komponens = new int[komponens.length];
- // tömbe lemeinek átmásolása, hogy a vektor ne függjön egy osztályon kívül létrehozott tömbtől
- for(int i=0;i<komponens.length;i++){
- this.komponens[i]=komponens[i];
- }
- }
- public int komponensekSzama(){
- return komponens.length;
- }
- public int getKomponens(int pos){
- return komponens[pos];
- }
- public Integer skalarisSzorzat(Vektor jobb){
- if(komponens.length != jobb.komponensekSzama()){ //azonos méretűek-e?
- return null;
- }else{ // skaláris szorzat
- int sum =0;
- for(int i=0;i<komponens.length;i++){
- sum+=komponens[i]*jobb.getKomponens(i);
- }
- return sum;
- }
- }
- public double hossz(){
- // vektor önmagával vett skaláris szorzata
- return Math.sqrt(skalarisSzorzat(this));
- }
- public String toString() {
- /*StringBuffer sb = new StringBuffer();
- sb.append("[");
- for(int i=0;i<komponens.length-1;i++){
- sb.append(komponens[i]+",");
- }
- sb.append(komponens[komponens.length-1]+"]");
- return sb.toString();*/
- //vagy
- //return Arrays.toString(komponens);
- //vagy, ha nem ismerjük a StringBuffer-t, akkor egy nem hatékony megoldás
- String res = "";
- res += "[";
- for(int i=0;i<komponens.length-1;i++){
- res+=komponens[i]+",";
- }
- res+=komponens[komponens.length-1]+"]";
- return res;
- }
- }
- /*
- 4. A 2-3. feladatokban megírt osztályt helyezd a „matematika” nevű csomagba,
- és írj egy csomagon kívüli futtatható osztályt, amely a parancssoron sorban
- kap két vektort (első szám lesz a vektor komponenseinek száma,
- majd következnek a vektor komponensei). Írassuk ki a két vektort, majd az
- előző feladat megoldását felhasználva számítsuk ki a két vektor skaláris szorzatát,
- és a második vektor hosszát (lásd a példát)! (10 pont)
- */
- Vektor_Futtat
- import matematika.Vektor;
- public class VektorFuttat {
- public static void main(String[] args) {
- if(args.length==0)
- return;
- int x = Integer.parseInt(args[0]); // első vektor mérete
- int[] elso = new int[x];
- for(int i=1;i<=x;i++)
- elso[i-1]=Integer.parseInt(args[i]);
- int y = Integer.parseInt(args[x+1]); // második vektor mérete
- int[] masodik = new int[y];
- for(int i=x+2;i<=x+y+1;i++)
- masodik[i-x-2]=Integer.parseInt(args[i]);
- // vektorok létrehozása
- Vektor elsoVektor = new Vektor(elso);
- Vektor masodikVektor = new Vektor(masodik);
- System.out.println("Elso vektor: "+elsoVektor);
- System.out.println("Masodik vektor: "+masodikVektor);
- System.out.println("Skalaris szorzat: "+elsoVektor.skalarisSzorzat(masodikVektor));
- System.out.println("Masodik vekor hossza: "+masodikVektor.hossz());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement