Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Iloczyn wektorowy za pomocą tablic



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Java
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Początkujący VBA



Dołączył: 13 Cze 2013
Posty: 49
Skąd: Warszawa

PostWysłany: Nie Gru 13, 2015 5:24 pm  OP    Temat postu: Iloczyn wektorowy za pomocą tablic Odpowiedz z cytatem Pisownia

Witam,

Jestem początkującym jeżeli chodzi o Java.

Od trenera dostałem zadanie domowe, w którym mam obliczyć iloczyn wektorowy za pomocą tabel.

Napisałem coś takiego ale nie jestem pewien czy jest dobrze?

Dzięki za pomoc :)


Kod:
/*Pobierz od usera dwie tablice elementów typu int.
Rozmiary tablicy są losowane z przedziału <10,20>.
Elementy tablicy są losowane z przedziału <30,50>.
Następnie sprawdź, czy rozmiary tak otrzymanych tablic są takie same ?

        Jeżeli tak to:
        a) dodaj do siebie dwie tablice, np.
        1 2 3 4
        6 5 4 3
        wynik
        7 7 7 7
        b) oblicz iloczyn wektorowy tablic.*/

import java.util.Random;
import java.util.Scanner;

public class Main {

    private static void wypelnij (int tab1[], int tab2[]){
        Random r2 = new Random();
        for(int i=0;i<tab1.length;i++)
        {
            tab1[i] = r2.nextInt(20)+10;
            tab2[i] = r2.nextInt(20)+10;
        }
    }


    private static void pokaz(int tab1[], int tab2[]){
        for(int i=0;i<tab1.length;i++){

            if(i==tab1.length-1){
                System.out.print(tab1[i] + "\n");
            }else {
                System.out.print(tab1[i] + "\t");
            }
        }
        for(int i=0;i<tab2.length;i++){

            if(i==tab2.length-1){
                System.out.print(tab2[i] + "\n");
            }else{
                System.out.print(tab2[i] + "\t");
            }
        }
    }

    private static void sumuj(int tab1[],int tab2[]){
        for(int i=0;i<tab1.length;i++){
            System.out.print(tab1[i]+tab2[i] + "\t");
        }
    }

    private static int iloczynWektorowy(int tab1[], int tab2[]){
        int x =0;
        for(int i=0;i<tab1.length-1;i++){
            x += (tab1[i]*tab2[i+1])-(tab1[i+1]*tab2[i]);
        }
        return x;
    }

    public static void main(String[] args) {
    // write your code here

        int[] tab1; //tablica nr1
        int[] tab2; //tablica nr2
        int x; //rozmiar drugiej tablicy
        Random r = new Random();
        Scanner pob = new Scanner(System.in);

        do{ //ma sie krecic doputy rozmiary nie beda takie same
            tab1 = new int [r.nextInt(10)+10];
            System.out.println("Rzomiar pierwszej tablicy równa się " + tab1.length);
                System.out.println("Podaj rozmiar tablicy");
                x = pob.nextInt();
                tab2 = new int[x];

                    if(tab1.length != tab2.length) //sprawdza czy wielkość tablic jest rozna lub taka sama?
                    {
                    System.out.println("Rozmiary tablic nie są takie same -- wpisz jeszcze raz!");
                    }

        } while (tab1.length!=tab2.length);

        wypelnij(tab1,tab2);

        pokaz(tab1,tab2);

        sumuj(tab1,tab2);

       System.out.println("\n"+ "Iloczyn wektorowy = "+iloczynWektorowy(tab1,tab2));
    }
}

Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
marcin_an
Site Admin


Dołączył: 26 Maj 2005
Posty: 18767

PostWysłany: Nie Gru 13, 2015 6:49 pm      Temat postu: Odpowiedz z cytatem Pisownia

Zadanie jest sformułowane dziwnie. Masz pobrać dane od użytkownika, ale dane te mają być losowane. To wreszcie czego autor zadania oczekuje?

Pierwsze: tabele masz np. w bazie danych. Tutaj są tablice. Na tabelach raczej nie masz tego robić.

  1. Wszystkie metody oprócz main w twoim kodzie są wyciachanymi z main blokami kodu i nie mają podstaw do samodzielnego bytu. Mogłyby mieć, gdybyś chciał w ten sposób uprościć kod main, ale wtedy wypadałoby lepiej przemyśleć, co owe metody mają robić.
  2. wypelnij duplikuje kod. Powtarza to samo dla dwóch różnych tablic, zamiast przyjmować jedną tablicę i ją wypełniać.
  3. wypelnij tworzy niepotrzebnie nową instancję Random. Masz już jedną w main - możesz ją wykorzystać.
  4. Linie 23-24: wg zadania elementy mają być z przedziału [30; 50]. Są z przedziału [10; 30). Zwróć przy tym uwagę, że nie tylko położenie zakresu się nie zgadza, ale i kwestia braku włączenia do wyniku górnej liczby z zakresu: efekt nieprawidłowego użycia nextInt.
  5. pokaz po raz kolejny duplikuje bez sensu kod w sposób podobny do wypelnij.
  6. Linie 30-37: tę pętlę można o wiele ładniej rozwiązać bez potrzeby robienia w środku dodatkowego warunku sprawdzającego, czy jesteś w ostatnim elemencie tablicy. Jest tylko jeden taki element: na końcu może być tylko ten element, który jest na końcu. W środku elementu z końca na pewno nie będzie.
  7. Linia: println zamiast niepotrzebnej konkatenacji.
  8. Metoda sumuj nie robi tego, na co wskazuje jej nazwa. Metoda sumuj wyświetla sumę, a nie sumuje. Albo zmień nazwę, albo zrób z tego metodę, która faktycznie produkuje sumę tablic.
  9. Linia 72: rozmiar tablicy miał być z zakresu [10; 20], a jest z zakresu [10; 20).
  10. iloczynWektorowy nie oblicza iloczny wektorowego.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Początkujący VBA



Dołączył: 13 Cze 2013
Posty: 49
Skąd: Warszawa

PostWysłany: Pią Sty 01, 2016 6:01 pm  OP    Temat postu: Iloczyn wektorowy za pomocą tablic Odpowiedz z cytatem Pisownia

Cześć marcin_an

Poprawiłem trochę kod, mam nadzieję że jest teraz lepiej.

Kod:
import java.util.Random;
import java.util.Scanner;

public class Main {

    private static void wypelnijTablice1 (int tablica[]){

        for(int i=0;i<tablica.length;i++)
        {
            tablica[i] = 20+r.nextInt(31);
        }
    }

    private static void pokaz(int tablica[]){
        for(int i=0;i<tablica.length;i++){

            if(i==tablica.length-1){
                System.out.print(tablica[i] + "\n");
            }else {
                System.out.print(tablica[i] + "\t");
            }
        }
    }

    private static void suma(int tab1[],int tab2[]){
        for(int i=0;i<tab1.length;i++){
            System.out.print(tab1[i]+tab2[i] + "\t");
        }
    }

    private static int iloczynWektorowy(int tab1[], int tab2[]){
        int x =0;
        for(int i=0;i==tab1.length;i++){
            x += Math.sqrt(tab1[i]+tab2[i]);
        }
        return x;
    }
    static Random r = new Random();
    public static void main(String[] args) {
    // write your code here

        int[] tab1; //tablica nr1
        int[] tab2; //tablica nr2
        int x; //rozmiar drugiej tablicy

        Scanner pob = new Scanner(System.in);
        tab1 = new int [10+r.nextInt(11)];
        System.out.println("Rzomiar pierwszej tablicy równa się " + tab1.length);
        do{ //ma sie krecic doputy rozmiary nie beda takie same
                System.out.println("Podaj rozmiar tablicy");
                x = pob.nextInt();
        } while (x!=tab1.length);
        tab2 = new int[x];
        wypelnijTablice1(tab1);
        wypelnijTablice1(tab2);
        pokaz(tab1);
        pokaz(tab2);

        //pokaz(tab1,tab2);

        suma(tab1,tab2);

       System.out.println("\n"+ "Iloczyn wektorowy = "+iloczynWektorowy(tab1,tab2));
    }
}


Niestety nadal nie wiem jak obliczyć za pomocą kodu iloczyn wektorowy?

Pozdrawiam,
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
hurgadion



Dołączył: 06 Kwi 2011
Posty: 731
Skąd: Web :)

PostWysłany: Sob Sty 02, 2016 10:25 am      Temat postu: Odpowiedz z cytatem Pisownia

Witam,

wystarczy spytać angielskiej koleżanki Wiki, References 1, pozdrawiam :)

_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Java Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.02968 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |