Strona 1 z 1

PROBLEMY Z PROGRAMEM - POMOC

Napisane: wtorek, 5 kwietnia 2011, 23:47
przez paniel
WITAM
Dopiero zaczynam pisanie w javie, za bardzo nie wiem od czego zacząć w napisaniu programu który muszę oddać za dwa dni do szkoły.
Jeśli ktoś mógłby pomoc byłbym wdzięczny. O to treść :


Zaimplementować klasę Vec, która reprezentuje wektor i umożliwia wykonanie operacji na wektorach.

Wymagane operacje to:

Code: Zaznacz cały

public void set(int n, double v); // ustawienie wartosci d w pozycji n
public double get(int n); // pobranie wartosci z pozycji n
public String toString(); // zamiana na wektora na napis
public Vec multiply(double d) // zwrocenie wektora pomonzonego przez d
public Vec add(Vec v) // zwrocenie sumy aktualnego wektora i v
public Vec subtract(Vec v) // zwrocenie roznicy
public Vec add(double d); // dodanie wartosci d do elementow wektora i zwrocenie wyniku
public Vec subtract(double d); // odjecie wartosci d
Przykład użycia:

Code: Zaznacz cały

Vec v1 = new Vec(2); // utworzenie wektora o rozmiarze 2
Vec v2 = new Vec(3); // utworzenie wektora o rozmiarze 3
v1.set(0, 3);
v1.set(1, 4);
System.out.println(v1.toString()); // powinno wypisac |3|4|
v2.set(1, 10);
v2.set(2, 11);
System.out.println(v2); // powinno wypisac |0|10|11
Vec v3 = v1.multiply(2);
System.out.println(3); // powinno wypisac |6|8|
Vec v4 = v3.add(v2);// dodaje |6|8| i |0|10|11|
System.out.println(v4); // wynik to |6|18|11|
Docelowa wersja klasy ma umożliwiać rozrastanie wektora:

Code: Zaznacz cały

Vec v1 = new vec(2); // utworzenie wektora o rozmiarze 2
v1.set(0,3); v1.set(1,5); // wektor ma teraz postać |3|5| i rozmiar 2
v1.set(4,10); // wektor został powiekszony aby zmiescic 5-ta pozycje
- ma teraz postac: |3|5|0|0|10| i rozmiar 5, nowe pozycje przyjmują wartość 0.
Z góry dziękuję za wszelką pomoc.

Re: PROBLEMY Z PROGRAMEM - POMOC

Napisane: środa, 6 kwietnia 2011, 09:24
przez Morfidon
Witam, temat podpada pod punkt regulaminu:
"Nie pisz wątków typu: "Zróbcie mi to, tamto etc.". Staraj się pokazać, że włożyłeś chociaż trochę wysiłku w swój problem, w innym wypadku może on pozostać bez odpowiedzi... lub zostanie usunięty"

proszę o swój własny wkład.

Re: PROBLEMY Z PROGRAMEM - POMOC

Napisane: środa, 6 kwietnia 2011, 10:17
przez paniel
Otóż mam cos takiego :

Code: Zaznacz cały

package javaapplication1;

class Vec{
     double[] v;
     Vec(int n)
     {
    v= new double[n];
     }
    public void set(int n, double d)
        {
            if( n<0 || n>=v.length) return;
            v[n]=d;
        }
    //INNA METODA :

        Vec multiply(double d)
            {
                Vec r = new Vec (v.length);
                for (int i=0;i<v.length;i++)
                    r.v[i]=v[i]*d;
                return r;
            }
        // metoda string:
          public  String toString()
          {
                String r="|";
                for(double d:v){
                    r+=d;
                    r+='|';
                }
        return r;
        }

         public Vec add(Vec v)  // zwrocenie sumy aktualnego wektora i v
         {
           
         }


    
 }

public class Main {

   
    public static void main(String[] args) {
        Vec v1 = new Vec(2);
        Vec v2 = new Vec(4);


        v1.set(0,33);
        v1.set(1,44);
        v2.set(0,7);

//        System.out.println(v2.get(0));
        String s1 = v1.toString();
//        Vec v3 = v2.multiply(2);
        System.out.println(v1.toString());
        System.out.println(v2);
        Vec v3 = v1.add(v2);
        System.out.println(v3.toString());
    }

}
Jak teraz dodac wektory ?(public Vec add(Vec v) ) jestem początkujący wiec bądzcie wyrozumiali

Re: PROBLEMY Z PROGRAMEM - POMOC

Napisane: środa, 6 kwietnia 2011, 12:58
przez Morfidon
czy to ma byc cos w tym stylu ?:

Code: Zaznacz cały

 public Vec add(Vec v)  // zwrocenie sumy aktualnego wektora i v
         {
           Vec v3 = new Vec(v1,v2);
           v3.v=v1.v+v2.v;
           return v3;
         }
nie

Code: Zaznacz cały

public Vec add(Vec v)  // zwrocenie sumy aktualnego wektora i v
         {
               Vec tmp = new Vec ((v.length > this.v.length) ? v.length : this.v.length));
                for (int i=0;i<tmp.length;i++)
                    tmp.set(i, v[i] + this.v[i]);
               return tmp;
         }
Ten kod jest niepełny może się zdarzyć tak, że v lub this.v wskazuje na null, ponieważ tablice mogą być różnych rozmiarów.
Musisz napisać coś co będzie rozszerzało i zmniejszało tablicę, wtedy gdy potrzeba, najprościej jest zastosować ArrayList z Video Kursu Java Aspekty Zaawansowane, możesz także potraktować elementy spoza zakresu tablicy sztucznie jako 0, jak to zrobisz, pozostawiam już Tobie ;)