D11: Corrigés des exercices d`algorithmique

publicité
D11: Corrigés des exercices d'algorithmique ( Sujet dans D10_Algo1_Suj.rtf )
1) Algorithme produitScalaire( nelem,t1,t2,
Variables locales:
n1 , n2 : réels, carrés des normes de v1 et v2
s
: réel, produit scalaire de v1 et v2
ier : entier, indicateur d'erreur (norme "nulle")
scal )
Calcule le produit scalaire de deux vecteurs
Interface d'entrée:
nelem
: entier, taille des deux vecteurs
t1 , t2 : tableaux de réels, contenant les valeurs des
composantes des vecteurs
Nb : On suppose disponible la fonction racineCarrée d'un
réel.
Début
produitScalaire (taille,v1,v1,
n1)
Si ( n1 <= eps ) alors
| ier <-- 1
Sinon
| produitScalaire (taille,v2,v2,
n2)
| Si ( n2 <= eps ) alors
| | ier <-- 1
| Sinon
| | produitScalaire (taille,v1,v2,
s)
| | valcos <-- s / racineCarrée( n1 ) /
racineCarrée( n2 )
| | ier <-- 0
| Fin Si
Fin Si
Retourner la valeur de ier
Fin de l'Algorithme
Interface de sortie:
scal : réel, produit scalaire des deux vecteurs
Variables locales:
i : entier, compteur de boucles
Début
scal <-- 0.0
Pour i variant de 0 à (nelem-1) répéter
| scal <-- scal + t1[ i ] * t2[ i ]
Fin pour
Fin de l'algorithme
2) Fonction entière
cosinusVecteurs (taille,v1,v2,eps,
valcos)
Calcule le cosinus de l'angle de deux vecteurs.
3) Programme de test
Interface d'entrée:
taille : entier, nombre de composantes des vecteurs
v1 , v2 : tableaux de réels, contenant les valeurs des
composantes des vecteurs
eps
: réel, précision du zéro (valeur en dessous
de laquelle on pourra considérer le carre de la
norme d'un vecteur comme nulle).
Ecrire un programme principal permettant de vérifier le bon
fonctionnement des algorithmes précédents.
Variables locales
nt
: constante entière valant 2
v1 , v2 : tableaux de nt réels
n1 , n2 : réels, carrés des normes des vecteurs v1 et
v2
cos1
: réel, cosinus de l'angle de ces deux
vecteurs
Début
v1[ 0 ] = 1.0
v1[ 1 ] = 0.0
v2[ 0 ] = 1.0
v2[ 1 ] = 1.0
Interface de sortie:
valcos : réel, cosinus de l'angle de v1 et v2. Cette
valeur n'est définie que lorsque la fonction
retourne une valeur nulle.
Valeur de retour : un entier, valant
0 si le calcul a été fait, et
1 sinon (une des normes a un carre
inférieur ou égal à eps).
841060333
A. Bolopion
28/05/2017 11:26:00
I.E.G.
1
produitScalaire (nt,v1,v1,
n1)
produitScalaire (nt,v2,v2,
n2)
Ecrire(à l'écran) "Norme de v1 : ", racineCarrée(
Ecrire(à l'écran) "Norme de v2 : ", racineCarrée(
Si ( cosinusVecteurs (nt,v1,v2,1.0e-3, cos1) = 0
alors
| Ecrire(à l'écran) "Cosinus de leur angle : " ,
Sinon
|
Ecrire (à l'écran) "Cosinus pas défini"
Fin Si
Variables locales
nt
: constante entière valant 4
v1 , v2 : tableaux de nt réels
n1 , n2 : réels, carrés des normes des vecteurs v1 et v2
cos1
: réel, cosinus de l'angle de ces deux vecteurs
Début
lireVecteur (nt,
v1)
lireVecteur (nt,
v2)
produitScalaire (nt,v1,v1,
n1)
produitScalaire (nt,v2,v2,
n2)
Ecrire(à l'écran) "Norme de v1 : ", racineCarrée( n1 )
Ecrire(à l'écran) "Norme de v2 : ", racineCarrée( n2 )
Si ( cosinusVecteurs (nt,v1,v2,1.0e-3, cos1) = 0 )
alors
| Ecrire(à l'écran) "Cosinus de leur angle : " , cos1
Sinon
|
Ecrire (à l'écran) "Cosinus pas défini"
Fin Si
Fin de l'Algorithme
n1 )
n2 )
)
cos1
v1[ 0 ] = 0.0
Si ( cosinusVecteurs (nt,v1,v2,1.0e-3, cos1) = 0 )
alors
| Ecrire(à l'écran) "Cosinus de leur angle : " , cos1
Sinon
|
Ecrire (à l'écran) "Cosinus pas défini"
Fin Si
Fin de l'Algorithme
4) Utilisation d’un algorithme fourni:
5) Algorithme transposer (taille,
En utilisant l’algorithme lireVecteur spécifié ci-dessous, écrire
un programme principal qui calcule et affiche à l’écran le cosinus
de deux vecteurs de taille au plus égale à 4 éléments.
Algorithme lireVecteur (n,
Interface d'entrée:
taille : (entier) taille de la matrice carrée
a)
Interface d'entrée-sortie:
a : tableau de réels
en entrée: contient les éléments de la matrice donnée
en sortie: contient les éléments de la matrice transposée
Interface d'entrée:
n : ( entier ) nombre de valeurs à lire
Variables locales
i , j : entiers, indices de boucles.
aux
: réel auxiliaire, utilisé pour l'échange des
termes de la matrice.
Début
Pour i variant de 0 à ( taille - 1 ) répéter
| Pour j variant de 0 à ( i-1 ) répéter
| | aux <-- a[ i , j ]
| | a[ i , j ] <-- a[ j , i ]
| | a[ j , i ] <-- aux
| Fin Pour
Fin Pour
Fin de l'algorithme
Interface de sortie:
a : tableau de réels, contenant les valeurs lues
i : entier, compteur de boucles
Début
Ecrire (à l'écran) "Entree du tableau"
Pour i variant de 0 à (n-1) répéter
| Ecrire (à l'écran) "Composante N0. " , (i+1)
| Lire (au clavier) a[ i ]
Fin Pour
Fin de l'Algorithme
Programme principal
841060333
A. Bolopion
28/05/2017 11:26:00
I.E.G.
)
Calcule la transposée de la matrice carrée a .
Lecture au clavier de nombres réels, et rangement dans le tableau
a
Variables locales:
a
2
Téléchargement