Exercice produit scalaire JAVA avec les tableaux
Rédigé par GC Team, Publié le 17 Août 2010, Mise à jour le Lundi, 31 Août 2020 17:55![](/images/thumb/124/default.png)
Ecrivez un programme qui calcule le produit scalaire de deux vecteurs
Tableaux
Écrivez un programme Scalaire.java qui calcule le produit scalaire de deux vecteurs, implémentés au moyen de tableaux unidimensionnels. Votre programme devra utiliser (entre autre) les éléments suivants :
-
Déclarations dans la méthode main():
- une variable nMax représentant la taille maximale des vecteurs (inutile de lui donner une valeur trop élevée... 10 suffit amplement)
- deux variables v1 et v2, de type tableau de réels de taille nMax.
-
Méthode :
- demander à l'utilisateur d'entrer n, la taille effective des vecteurs.
- vérifier que n est compris entre 1 et nMax et demander à l'utilisateur d'entrer à nouveau une valeur tant que ce n'est pas le cas
- demander à l'utilisateur les composantes (v10... v1n-1 , v20 ... v2n-1) des vecteurs v1 et v2.
- calculer le produit scalaire de v1 et v2.
- afficher le résultat.
Rappel :
Le produit scalaire de a par b est: a·b = a1*b1 + a2*b2 + ... + an*bn
Exemple: a = (5, 3, -1) b = (2, 1, 2) a·b = 11
Les tableaux, ici à une dimension, sont typiquement parcourus au moyen de boucles for. Ces boucles sont utilisées pour remplir les vecteurs (par lecture de doubles) et pour effectuer le calcul du produit scalaire. La principale chose à remarquer ici est qu'avec les moyens à disposition au moment de la série, on ne sait pas réutiliser des portions de code lorsqu'elles sont requises à plusieurs endroits du programme (exemple: la lecture des vecteurs). Ceci implique que le code concerné est tout simplement dupliqué. Nous verrons à partir du cours prochain comment améliorer cet état de choses.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import java.util.Scanner; class Scalaire { private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { int nMax = 10; int n; // On exige l'introduction d'un entier entre 0 et 10 do { System.out.print("Quelle taille pour vos vecteurs [entre 1 et " + nMax + "] ? "); n = scanner.nextInt(); } while (n < 1 || n > nMax); // Déclaration-construction des deux vecteurs double [] v1 = new double [n]; double [] v2 = new double [n]; System.out.println("Saisie du premier vecteur :"); for (int i = 0; i < n; i++) { System.out.print(" v1[" + i + "] = "); v1[i] = scanner.nextDouble(); } System.out.println("Saisie du second vecteur :"); for (int i = 0; i < n; i++) { System.out.print(" v2[" + i + "] = "); v2[i] = scanner.nextDouble(); } // Calcul du produit scalaire double somme = 0.0; for (int i = 0; i < v1.length; i++) { somme += v1[i] * v2[i]; } System.out.println("Le produit scalaire de v1 par v2 vaut " + somme); } } |