Vous êtes sur la page 1sur 7

Atelier c++

Compte rendu (tp n°1)

Klai Mhamed Aziz

GL 2/3
Exercice 1 :
A B C P1 P2
int A =1, B=2, C=3 1 2 3
int *P1, *P2 ; 1 2 3
P1=&A; 1 2 3 &a
P2=&C; 1 2 3 &a &c
*P1=(*P2)++; 3 2 4 &a &c
P1=P2; P2=&B; 3 2 4 &c &b
*P1-=*P2; 3 2 2 &c &b
++*P2; 3 3 2 &c &b
*P1*=*P2; 3 3 6 &c &b
A=++*P2**P1; 24 4 6 &c &b
P1=&A; 24 4 6 &a &b
*P2=*P1/=*P2; 6 6 6 &a ab

Résultat :

Q2 :
Voila le code que j’ai utilisé : #include<stdio.h>

void remplitA(int* A,int n) { for(int i=0;i<n;i++) {printf( "donner t[%d] :",i); scanf ("%d",A+i);} }

void afficher (int *t,int n){for(int i=0;i<n;i++) printf("t[%d]= %d \n ",i+1,t[i]); }

int main() { int t[10];remplitA(t,10); int &ref=t[4];ref++; int *p=t+6; p++; // incrémentation pointeur

(*p)++; // incrémentation valeur pointée

printf("t4:%d ;t7:%d",ref,*p); return 0; }

(Vous pouvez le copier pour vérifier)

Q3 :
Donc la valeur du nombre passé en paramètre ne change que si on utilise le
passage par adresse ou par référence.

Exercice 2 :
a) int * p; int x=34; p=&x;

b) int x=17; int * p=&x; *p=17 ;

c) double * q; int x=17; int * p=&x; q=(double*)p ;

d) int x; int * p; p=&x;

e) char mot[10]; char car='A'; char * pc=&car; *mot=*pc;

Exercice 3:
int* adi ; double * add ;

adi = (int*) malloc (sizeof (int)) ; add = (double*) malloc (sizeof


(double) * 100);

adi=new int; add=new double[100];

delete adi ; delete [] add ;


Exercice 4:
Les deux code présente la même erreur : on ne peut pas déclarer un tableau
avec une taille variable même si Max (l’exemple 2) const elle reste une variable
pour la fonction

Dans ce cas il est recommandé d’allouer l’espace du tableau dynamiquement

D’où la solution :

int* mauvais1 (int n)

{ int* tab=new int[n];

for (int i=0 ; i<n ; i++)

cin >> tab[i] ;

return tab; }

int* mauvais2 (int MAX)

{ int* tab=new int[MAX];

for (int i=0 ; i<n ; i++)

cin >>tab[i] ;

return tab; }

Exercice 5:
Partie 1 : les chaines de caractères sont de type char* et le tableau est déclaré
avec new.  Code : ( #include<stdio.h> #include<stdlib.h> #include<iostream> #include<string> using namespace std;

int main(void) {int n; cout << "donner la taille du tableau:"; cin >> n; char* * tab=new char*[n];

for (int i=0;i<n;i++) { tab[i]=new char[25]; cout<< "donner t["<<i<<"]: "; cin >>tab[i]; }

for (int i=0;i<n;i++) { cout<< " t["<<i<<"]="<<tab[i]<<" /"; } return 0; } )


Partie 2 : Création du tableau à l’aide de la classe vector et la classe string. 
Code : (#include<stdio.h> #include<stdlib.h> #include<iostream> #include<vector> using namespace std;

int main()

{int n; cout << "donner la taille du tableau:"; cin >> n; vector <string> tab;

for (int i=0;i<n;i++) { string a; cout <<"donner t["<<i<<"]:"; cin >> a; tab.push_back(a);}

for (int i=0;i<n;i++) cout << "t["<<i<<"]="<<tab[i]<<" - "; return 0; }

)
Fin

Vous aimerez peut-être aussi