Просто представяне на вектори в Java

В категория Програмиране 0 кометара

Сега ще ви покажа едно малко решение на една задача, който имах за домашна работа по предмета Увод в програмирането. Трябва да се напише клас, който съдържа два вектора и методи за действия над тях. Векторите се представят като, последователности от числа, които записваме в масив. Класа има конструктор, който инициализира двата вектора и ги записва в предназначените за това полета. За целите на примера декларираме класа в main функцията му и там боравим с съответните методи.

/*
 *  Това е клас, който съдържа методи за дефиниране на вектори,
 *  събиране на вектори, скаларно произведение на вектори, 
 *  умножение на вектор с число и извеждане на вектор
 *  
 *  @version    1.0 19 Dec 2010
 *  @author     Николай Стоицев
 */
public class Vector {
 
	// първи вектор с който ще се извършват операциите
	public static int[] vector1;
 
	// втори вектор с който ще се извършват операциите
	public static int[] vector2;
 
	/*
	 * Конструктур на класа
	 * 
	 * @param vec1 първият вектор с който ще работи
	 * 
	 * @param vec2 вторият вектор с който ще работи
	 */
	public Vector(int[] vec1, int[] vec2) {
		vector1 = vec1;
		vector2 = vec2;
	}
 
	public static void main(String[] args) {
		vector1 = fill(); // инициализираме първия вектор
		vector2 = fill(); // инициализираме втория вектор
		Vector vect = new Vector(vector1, vector2); // декларираме класа Vector
		System.out.println("Сумата на двата вектора е:");
		print(vect.sum());
		System.out.println("Произведението на двата вектора е:");
		print(vect.product());
		System.out.print("Въведете скалар: ");
		java.util.Scanner in = new java.util.Scanner(System.in);
		int scalar = in.nextInt();
		System.out.println("Произведението на вектора 1 със скалар е:");
		doublePrint(vect.multiplyByNumber(vector1, scalar));
		System.out.println("Произведението на вектора 2 със скалар е:");
		doublePrint(vect.multiplyByNumber(vector2, scalar));
	}
 
	/*
	 * Сума на векторите като сбор на компонентите на декартовите им координати
	 * 
	 * @return resultVector вектора резултат от операцията
	 */
	public int[] sum() {
		int size = Math.max(vector1.length, vector2.length);
		int min = Math.min(vector1.length, vector2.length);
		int[] resultVector = new int[size];
		for (int i = 0; i < min; i++) {
			resultVector[i] = vector1[i] + vector2[i];
		}
		if (vector1.length > vector2.length) {
			for (int i = size - min; i < size; i++) {
				resultVector[i] = vector1[i];
			}
		} else if (vector1.length < vector2.length) {
			for (int i = size - min; i < size; i++) {
				resultVector[i] = vector2[i];
			}
		}
		return resultVector;
	}
 
	/*
	 * Произведението на векторите като произведение на компонентите на
	 * декартовите им координати
	 * 
	 * @return resultVector вектора резултат от операцията
	 */
	public int[] product() {
		int size = Math.max(vector1.length, vector2.length);
		int min = Math.min(vector1.length, vector2.length);
		int[] resultVector = new int[size];
		for (int i = 0; i < min; i++) {
			resultVector[i] = vector1[i] * vector2[i];
		}
		if (vector1.length > vector2.length) {
			for (int i = size - min; i < size; i++) {
				resultVector[i] = vector1[i];
			}
		} else if (vector1.length < vector2.length) {
			for (int i = size - min; i < size; i++) {
				resultVector[i] = vector2[i];
			}
		}
		return resultVector;
	}
 
	/*
	 * Произведение на вектор със скалар
	 * 
	 * @param vector вектора с който ще работим
	 * 
	 * @param scalar скалара с който ще умножаваме
	 * 
	 * @return resultVector вектора резултат от операцията
	 */
	public double[] multiplyByNumber(int[] vector, double scalar) {
		int size = vector.length;
		double[] resultVector = new double[size];
		for (int i = 0; i < size; i++) {
			resultVector[i] = vector[i] * scalar;
		}
		return resultVector;
	}
 
	/*
	 * Запълва елементите на масива с цели цисла, прочетени от клавиатурата
	 * 
	 * @return newArray готовият масив
	 */
	public static int[] fill() {
		java.util.Scanner in = new java.util.Scanner(System.in);
		System.out.print("Брой на елементите на масива: ");
		int n = in.nextInt();
		int[] newArray = new int[n];
		for (int i = 0; i < n; i++) {
			System.out.print((i + 1) + " елемент на масива: ");
			newArray[i] = in.nextInt();
		}
		return newArray;
	}
 
	/*
	 * Отпечатва елементите на масива
	 * 
	 * @param arr масива, който ще бъде отпечатен
	 */
	public static void print(int[] arr) {
		int n = arr.length;
		for (int i = 0; i < n; i++) {
			System.out.println("a[" + i + "] = " + arr[i]);
		}
	}
 
	/*
	 * Отпечатва елементите на масив с реални стойности
	 * 
	 * @param arr масива, който ще бъде отпечатен
	 */
	public static void doublePrint(double[] arr) {
		int n = arr.length;
		for (int i = 0; i < n; i++) {
			System.out.println("a[" + i + "] = " + arr[i]);
		}
	}
 
}
Публикувано от koleto   @   21 декември 2010 0 коментара
Тагове : ,

Споделете тази публикация

RSS Digg Twitter StumbleUpon Delicious Technorati

0 Кометара

Няма коментари. Бъдете първият който ще изкаже мнението си!
Коментирайте

Име

Email

Website

Предишна публикация
«
Следваща публикация
»
CrossBlock designed by DeltaManual.Com  |  In conjunction with Web Hosting   |   Web Hosting   |   Reverse phone