[PDF] Correction TP de programmation no4





Previous PDF Next PDF



Correction TP de programmation no4

Écrire une procédure somme qui calcule la somme de deux nombres complexes. Écrire une procédure inverse qui retourne l'inverse d'un nombre complexe.



Conjugué dun nombre complexe - Un doc de Jérôme ONILLON

Propriété : le conjugué de l'inverse est égal à l'inverse du conjugué. Le conjugué d'un quotient est égal au quotient des conjugués. 1. 1 z z.



NOMBRES COMPLEXES – Chapitre 2/4

Le point (3 ; 2) a pour affixe le nombre complexe =3+2 . De même le vecteur AA? a pour Donc l'inverse a pour module 1 et appartient donc à .



Nombres complexes (partie 1) - Editions Ellipses

Ensemble C des nombres complexes. Partie réelle et partie imaginaire. Opérations. > Conjugaison. Propriétés algébriques. > Inverse d'un nombre complexe non 



Nombres complexes (partie 1)

Ensemble C des nombres complexes. Partie réelle et partie imaginaire. Opérations. > Conjugaison. Propriétés algébriques. > Inverse d'un nombre complexe non 



Nombres complexes. Représentation géométrique. Notation

Le module de l'inverse d'un nombre complexe non nul est l'inverse du module de ce nombre complexe. z ?C* ?1 z?= 1. ?z?. Démonstration :.



Exercices : nombre complexe - Calcul Corrigés en vidéo et le cours

Inverse d'un nombre complexe. Déterminer les inverses des nombres suivants. On donnera le résultat sous forme algébrique. a) 2 ? i b) i. 2 ? 3i c 



Les nombres complexes - Division des nombres complexes

La division d'un nombre complexe a + i b par un nombre complexe c + i d donne un nouveau nombre complexe x + i y : a + i b c + i d. = x + i y. • L'inverse 



Chapitre 2 - Les nombres complexes I : première approche et lien

Manipuler algébriquement des nombres complexes à partir de leur forme algébrique. Calculer le conjugué le module et l'inverse d'un nombre complexe.



NOMBRES COMPLEXES

I.2 L'ensemble des nombres complexes . II.5 Inverse d'un complexe . ... Deux nombres complexes sont égaux si et seulement si ils ont même partie réelle ...



[PDF] NOMBRES COMPLEXES

le module est l'inverse du module de z ; • l'argument est l'opposé de l'argument de z Ce résultat se traduit par la formule 1 ??cis ?( ) = 1 ?



[PDF] Inversion complexe et cocyclicité - Université de Rennes

Inversion complexe et cocyclicité Jean-Marie Lion Université de Rennes 1 Br`eve introduction aux nombres complexes L'addition et la multiplication dans 



[PDF] 1 Corps des nombres complexes

C'est le seul nombre complexe vérifiant pour tout z ? C : z(1 + 0i)=(1+0i)z = z Tout élement z ? C distinct de 0 admet un symétrique z/ appelé inverse 



[PDF] NOMBRES COMPLEXES - Nathalie Daval - Free

I 2 L'ensemble des nombres complexes II 5 Inverse d'un complexe Deux nombres complexes sont égaux si et seulement si ils ont même partie réelle 



[PDF] Nombres complexes - Exo7 - Cours de mathématiques

L'inverse de z noté 1 z est donc z = 1 z = a a2 + b2 + i ?b a2 + b2 = a ? i b a2 + b2 • La division : z z est le nombre complexe z × 1



[PDF] Fiche 6 : Nombres complexes - Studyrama

Inverse d'un nombre complexe Soit z x iy = + un complexe non nul avec x et y réels Pour déterminer partie réelle et partie imaginaire de



[PDF] NOMBRES COMPLEXES (Partie 2) - maths et tiques

I Module et argument d'un nombre complexe 1) Module Définition : Soit un nombre complexe z = a + ib On appelle module de z le nombre réel positif 



[PDF] Nombres complexes - Forme algébrique - Parfenoff org

Cette écriture est dite forme algébrique du nombre complexe c) Définition : inverse d'un nombre complexe Si le nombre complexe est non nul alors :



[PDF] Nombres complexes - Licence de mathématiques Lyon 1

en pratique un nombre complexe z poss`ede deux représentations : (viii) tout élément non nul admet un inverse : pour tout a de K différent de 0 



[PDF] Nombres complexes : forme algébrique

II 5 Inverse V Forme trigonométrique d'un nombre complexe troisiéme et du quatriéme degré et l'invention des nombres complexes

  • Quel est l'inverse d'un nombre complexe ?

    Opposé d'un nombre complexe
    L'opposé de z est le nombre (-z) tel que z + (-z) = 0.
  • Comment calculer l'opposé d'un nombre complexe ?

    L'opposé du nombre complexe a+bi est le nombre complexe ?a?bi. L'inverse du nombre complexe a+bi est le nombre complexe aa2+b2?ba2+b2i.
  • Comment déterminer l'argument de z ?

    On peut alors calculer l'argument de �� dans les différents quadrants comme suit :

    1Quadrant 1 : a r g ( �� ) = ��2Quadrant 2 : a r g ( �� ) = �� ? ��3Quadrant 3 : a r g ( �� ) = �� ? ��4Quadrant 4 : a r g ( �� ) = ? ��
  • À tout nombre complexe z = a + i b ? C est associé le point M du plan de coordonnées appelé image de et noté . A tout point M du plan de coordonnées est associé le complexe z M = a + i b appelé affixe du point M.
Correction TP de programmation no4

Correction TP de programmation n

o4Cours de programmation impérative-Licence MPI L1 S2 - Info 121-xExercice 1.Mise en place p ourPremier Langage

La semaine prochaine, vous aurez une interrogation sur Premier Langage. Vous devezimpérati-

vement vérifier par vous mêmeque vous pouvez y accéder. La mise en place des comptes demande

un délai, nousne pourrons pas vous donner l"accèsle jour même de l"interrogation.

Pour ceci, vous devez :

Aller sur https://ecampus.paris-saclay.fr/

V ousconnecter en cliquan tsur "com pteétablissemen t»puis "P aris-SudUn iversity».

Une fois connecté, v érifierque v ousêtes bien ins critau cours "*Programmation imp érative-

L1 STS : portail MPI ou double licence Info/Math ou double licence Math/Physique*» (dans ce cas il apparaît sur votre page d"accueil).

Si vous n"arrivez pas à vous connecter :

Cliquez sur : "A ctivezv otreaccès à eCampus via v otrecompte établissemen ten cliquan t ici (création d"un compte dit "mutualisé")»

Sélectionnez "P aris-SudUniv ersity».

A ctivezle service "Mo odle»

Et finalemen t"V aliderv osc hoix».

L"accès n"est pas immédiat... Vous devez

IMPÉRA TIVEMENT

v érifierle lendemain que cela fonctionne bien et que vous avez bien accès au cours.

Si vous arrivez à vous connecter, mais que vous n"êtes pas inscrit au cours, cliquez sur le lien

suivant :https://ecampus.paris-saclay.fr/course/view.php?id=17037Et inscrivez-vous au cours en question. Les exercices d"entraînement devraient être disponibles à partir de mercredi 27.

ATTENTION! La procédure d"inscription demande un délai.Si vous êtes en retard, vous prenez le risque de ne pas pouvoirvous connecter ce qui entraînera automatiquement la note de0,sans rattrapage possible.

1 Fonctions et procédures: passage de paramètres Cette séance de travaux pratiques est dédiée au passage de paramètres. On rappelle que enC++le mode de passage par défaut estpar valeur, les arguments sont alorsrecopiés.

LeC++fournit un autre mode ditpar référenceoù l"on fait précéder le paramètre formel

du symbole&. Voici un exemple : la procédure suivante ajoute2à la variable passée en paramètre : void incremente(int &i) { i = i + 2; }xExercice 2.La fonction suivante retourne un entier positif donné par l"utilisateur : int litpositif() { int resultat; do { cout << "Donner la valeur d"un entier positif : "; cin >> resultat; } while (resultat < 0); return resultat; 1. Mo difierla fonction litpositif(fournie dans l"archive) pour en faire une procédure qui a

comme résultats l"entier positif lu et le nombre d"erreurs (entiers négatifs) faites par l"utilisateur.

2.

Compléter le pro grammeprincipal mainpour qu"il utilise la procédure précédente et affiche

l"entier lu et le nombre d"erreurs. Attention, bien respecter l"énoncé : c"est lemainqui doit faire

les affichages, pas la procédure! !1#include

2#include

3

4using namespace std;

5

6void litpositif(int &i, int &c) {

7c = -1;

8do {

9cout << "Donner la valeur d"un entier positif : ";

10cin >> i;

11c++;

12} while (i < 0);

13} 14

15int main() {

16int i;

17int c;

18litpositif(i, c);

19cout << "L"entier vaut " << i << " après " << c << " essai(s)" << endl;

20return 0;

21}
2 xExercice 3. (Transactions bancaires) Nous nous occupons de la gestion de comptes bancaires. Il faut nous assurer qu"aucune somme

d"argent n"est créée ou perdue dans les virements et que les comptes restent toujours au-dessus du

solde autorisé. Nous disposons des comptes tels que définis dans le fichierbanque.cppfourni :

1#include

2using namespace std;

3

4int compte1 = 1000;

5int compte2 = 2000;

6int compte3 = 1500;

7int compte4 = 3000;

8

9void etat_comptes();

10bool virement(int compte_orig, int compte_dest, int somme);

11

12void etat_comptes() {

13cout << "Etat des comptes : " << endl;

14cout << "Compte n 1 : " << compte1 << endl;

15cout << "Compte n 2 : " << compte2 << endl;

16cout << "Compte n 3 : " << compte3 << endl;

17cout << "Compte n 4 : " << compte4 << endl;

18} 19

20int main() {

21bool v;

22etat_comptes();

23v = virement(compte1, compte2, 100);

24etat_comptes();

25return 0;

26}
1.

Définir la fo nction:

bool virement(int compte_orig, int compte_dest, int somme) qui verse si possible (c"est-à-dire si le versement ne rend pas le solde decompte_orignégatif) un montant d"argent égal àsommedepuis lecompte_origvers lecompte_dest. De plus, cette fonction doit retournertruesi le versement a été effectué et renvoiefalsesinon. 2. Lire le co ded uprogramme principal puis e xécuterle programme. Vérifier alor sles v aleursdes

comptes qui ont été passées en paramètres de la fonctionvirement. Une fois cela fait, nous

constaterons que les valeurs sont inchangées, alors qu"un virement devait normalement les avoir

changées. Ceci est dû au fait que les paramètres ont été passés par valeur à la fonction.

3.

P ourrésoudre le problème constaté à la question précéden te,n ousa llonstrans formerla fonction

en procédure et passer les paramètres par référence.Modifierla fonctionvirementen une procédure : 3 void virement(int &compte_orig, int &compte_dest, int somme, bool &virement_ok) Cette procédure doit avoir le résultattruedans le paramètrevirement_oksi le versement a été effectué etfalsesinon. L"ancienne version de la fonctionvirementne doit plus figurer dans votre code. 4. App eleze nfincette pro céduredans le progr ammemainen affichant "Virement effectué» ou "Virement impossible» selon le cas. Vérifier que cette fois, les valeurs des comptes sont bien changées. !1#include

2using namespace std;

3

4int compte1 = 1000;

5int compte2 = 2000;

6int compte3 = 1500;

7int compte4 = 3000;

8

9void etat_comptes();

10//bool virement(int compte_orig, int compte_dest, int somme);

11void virement(int &compte_orig, int &compte_dest, int somme, int &virement_ok);

12

13void etat_comptes() {

14cout << "Etat des comptes : " << endl;

15cout << "Compte n 1 : " << compte1 << endl;

16cout << "Compte n 2 : " << compte2 << endl;

17cout << "Compte n 3 : " << compte3 << endl;

18cout << "Compte n 4 : " << compte4 << endl;

19} 20

21/*bool virement(int compte_orig, int compte_dest, int somme) {

22if (somme <= 0) return false;

23if (compte_orig - somme < 0) return false;

24compte_orig -= somme;

25compte_dest += somme;

26return true;

27}*/
28

29void virement(int &compte_orig, int &compte_dest, int somme, bool &virement_ok) {

30if (somme <= 0 || compte_orig - somme < 0) virement_ok = false;

31else {

32virement_ok = true;

33compte_orig -= somme;

34compte_dest += somme;

35}
36}
37

38int main() {

39bool v;

40etat_comptes();

41// v = virement(compte1, compte2, 100);

42virement(compte1, compte2, 100, v);

43etat_comptes();

44if (v) cout << "Virement effectué !" << endl;

4

45else cout << "Virement impossible !"<< endl;

46return 0;

47}!
5 xExercice 4. Appeler une procédure, appeler une procédure depuis une autre.Cet exercice reprend une petite partie du TD en la modifiant légèrement. 1. Écrire la pro cédureordonnerqui prend deux variablesaetbet échange leur contenu sia > b.

On impose d"utiliser la procédure suivante :

void permuter(int &c, int &d) { int temp; temp=c; c=d; d=temp; !void ordonner(int &a, int &b) { if(a>b) permuter(a,b); 2. T estercette pro cédured"ab orda vecun app elp ourclasser deux v ariables,p uisa vectrois app els comme en TD, pour classer trois variables. !void test() { int x=7, y=5, x=3; ordonner(x,y); ordonner(y,z); ordonner(x,y); cout <En mathématique, on appelle suite de Syracuse une suite d"entiers naturels définie de la manière

suivante : On part d"un nombre entier plus grand que zéro; s"il est pair, on le divise par 2; s"il est

impair, on le multiplie par 3 et on ajoute 1. En répétant l"opération, on obtient une suite d"entiers

positifs dont chacun ne dépend que de son prédécesseur.

Par exemple, à partir de 14, on construit la suite des nombres : 14, 7, 22, 11, 34, 17, 52, 26, 13,

40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2... C"est ce qu"on appelle la suite de Syracuse du nombre 14.

Après que le nombre 1 a été atteint, la suite des valeurs (1,4,2,1,4,2...) se répète indéfiniment en

un cycle de longueur 3, appelé cycle trivial. 1. Écrire la pro céduresyracusequi prend une variable contenant un terme de la suite, calcule le terme suivant et le range dans la même variable. !void syracuse(int &u) { if(u%2 == 0) u = u/2; else u = 3*u+1; 6

2.La fonction suiv antecalcule le nom brede fo isqu"il faut itérer la suite, p ourarriv ersur 1, a

partir d"unundonné. int longueurTransient (int un){ int i=0; while (un != 1) { syracuse(un); i++; } return i;

Cette fonction pourrait ne pas être définie pour tout les entiers. La conjecture de Syracuse dit

que elle l"est, mais personne ne l"a jamais démontré! Calculer cette fonction sur les nombres de

1 à 1000, et afficher le résultat, pour étudier son comportement.

!void test(){ for(int i=1; i<1000; i++) cout<On rappelle qu"un nombre complexe est un nombre qui s"écrita+iboùaest appelé partie réelle et

bpartie imaginaire. Il faudra systématiquement passer deuxfloat, pour passer un nombre complexe en paramètre. Nous verrons la semaine prochaine comment utiliser lesstructpour passer directement

un nombre complexe dans un seul paramètre, et ainsi diviser par deux le nombre de paramètres, et

rendre le programme plus lisible. Pour cette semaine, ne pas utiliser de structure.

Attention, dans tout cet exercice, faire bien attention à quels sont les paramètres qui sont des

résultats et quels sont ceux qui sont des données. On demande de : 1. Écrire une pro céduresaisiequi demande à l"utilisateur d"entrer un nombre complexe, et qui a pour résultat le nombre complexe entré par l"utilisateur. 2. Écrire une pro cédureaffichequi affiche un nombre complexe. 3. Écrire une pro céduresommequi calcule la somme de deux nombres complexes. 4. Écrire une pro cédureproduitqui calcule le produit de deux nombres complexes. On rappelle que(a+ib)(c+id) = (acbd) +i(ad+bc). 5. Écrire une fonction norme_carrequi retourne le carré de la norme d"un nombre complexe. On rappelle que ja+ibj2=a2+b2:(1) 6. Écrire une pro cédureinversequi retourne l"inverse d"un nombre complexe. On rappelle que

1a+ib=aibja+ibj2:(2)

7.

L"algorithme de calcul de la racine carrée du TP 2 fonctionne e ngénéral encore sur les nom bres

complexesz=a+ib: la suite u

0:=z; un+1:=un+z=un2

(3) 7 converge (presque toujours, voir la question suivante) vers une racine carrée dez. Écrire une procédureracinequi calcule la racine carrée d"un nombre complexe. On considère que l"ap- proximationuest correcte si ju2zjjaj<106;c"est-à-dire siju2zj2jzj2<1012:(4) 8.

En fait, la suite précéden tene con vergepas dans le cas particulier où aest un réel négatif. On

pourra dans ce cas choisiru0=a+i. Modifier le programme en conséquence. !1#include

2#include

3#include

4#include

5

6using namespace std;

7

8#define ASSERT(test) if (!(test)) cout << "Test failed in file " << __FILE__ \

9<< " line " << __LINE__ << ": " #test << endl

10

11const double epsilon = 1e-6;

12

13/** teste si deux nombres sont egaux à epsilon près

14* @param[in] x et y deux nombres réels

15* @return le booléan correspondant au test

16**/

17bool presqueEgal(double x, double y) {

18if ((fabs(x-y) <= epsilon*fabs(x)) and (fabs(x-y) <= epsilon*fabs(y))) {

19return true;

20}

21return false;

22}
23
24
25

26/** saisie d"un nombre complexe

27* @param[out] r : la partie réelle

28* @param[out] i : la partie imaginaire

29**/

30void saisie(double &r, double &i) {

31cout << "Partie réelle : " << endl;

32cin >> r;

33cout << "Partie imaginaire : " << endl;

34cin >> i;

35}
36

37/** affichage d"un nombre complexe

38* @param[in] r : la partie réelle

39* @param[in] i : la partie imaginaire

40**/

41void affiche(double r, double i) {

42if (i >= 0)

8

43cout << r << "+" << i << "i" << endl;

44else

45cout << r << "-" << -i << "i" << endl;

46}
47

48/** somme de deux nombres complexes

49* @param[in] r1 : la partie réelle de z1

50* @param[in] i1 : la partie imaginaire de z1

51* @param[in] r2 : la partie réelle de z2

52* @param[in] i2 : la partie imaginaire de z2

53* @param[out] sommer : la partie réelle de z1 + z2

54* @param[out] sommei : la partie imaginaire de z1 + z2

55**/

56void somme(double r1, double i1,

57double r2, double i2,

58double &sommer, double &sommei) {

59sommer = r1 + r2;

60sommei = i1 + i2;

61}
62

63/** test de la fonction somme

64affiche un message en cas de test raté

65**/

66void testSomme() {

67double sommer;

68double sommei;

69somme(1.2367, 0, -1.2, 0, sommer, sommei);

70ASSERT(presqueEgal(sommer, 0.0367));

71ASSERT(presqueEgal(sommei, 0));

72somme(0, 4.57, 0, 1.29, sommer, sommei);

73ASSERT(presqueEgal(sommer, 0));

74ASSERT(presqueEgal(sommei, 5.86));

75somme(1.2367, -4.5, 2.35, -5.2, sommer, sommei);

76ASSERT(presqueEgal(sommer, 3.5867));

77ASSERT(presqueEgal(sommei, -9.7));

78}
79

80/** produit de deux nombres complexes

81* @param[in] r1 : la partie réelle de z1

82* @param[in] i1 : la partie imaginaire de z1

83* @param[in] r2 : la partie réelle de z2

84* @param[in] i2 : la partie imaginaire de z2

85* @param[out] prodr : la partie réelle de z1 * z2

86* @param[out] prodi : la partie imaginaire de z1 * z2

87**/

88void produit(double r1, double i1,

89double r2, double i2,

quotesdbs_dbs29.pdfusesText_35
[PDF] conjugue les verbes entre parenthèses au présent de lindicatif

[PDF] conjuguer les verbes entre parenthèses au passé composé

[PDF] conjuguer les verbes entre parenthèses au temps qui convient

[PDF] mets les verbes entre parenthèses au présent

[PDF] tout les temps de l'indicatif

[PDF] pluperfect en anglais

[PDF] preterit be ing ou preterit simple

[PDF] preterit have

[PDF] preterit be ing equivalent francais

[PDF] pluperfect be ing

[PDF] preterit be anglais

[PDF] prétérit continu

[PDF] exercices temps verbaux français

[PDF] passé présent futur ce2 pdf

[PDF] exercice passé présent futur ce2 a imprimer