précédent: Structures de données élémentaires
monter: UE33/UE43 - Opt1. Algorithmique D.E.U.G. 2ème Année
suivant: À propos de ce document...
  Table des matières
Sous-sections
Réponse à l'exercice 1
6
Il suffit de suivre l'évolution des différentes variables:
Elle affecte donc 0 aux variables A,B et C.
Réponse à l'exercice 2
6
Elle affecte 9 à X, Y et Z.
Réponse à l'exercice 3
7
Réponse à l'exercice 4
7
Néanmoins, cela ne marche que parce que les variables sont de type
Entier. Ça ne marcherait pas avec des variables de type Caractère.
Réponse à l'exercice 5
7
Réponse à l'exercice 6
7
Réponse à l'exercice 7
7
Réponse à l'exercice 8
7
Réponse à l'exercice 9
7
Réponse à l'exercice 10
8
, ,
, ,
, ,
, ,
, ,
Réponse à l'exercice 11
8
Réponse à l'exercice 12
9
Réponse à l'exercice 13
10
Réponse à l'exercice 14
13
int calcul_somme(int n) {
int i, j, somme = 0;
for (i = 1; i <= n; i++) {
for (j = 1; j <= i; j++) {
somme = somme + i + j;
}
}
return (somme);
}
Réponse à l'exercice 15
13
int calcul_Fibonnacci_iteratif_simple(int n)
{
int tab[100];
int i = 2;
if (n <= 0)
return -1;
tab[0] = 1;
tab[1] = 1;
for (i = 2; i <= n; i++) {
tab[i] = tab[i - 1] + tab[i - 2];
}
return (tab[n]);
}
Réponse à l'exercice 16
13
int calcul_Fibonnacci_iteratif_ruse(int n)
{
int tab[3];
int i = 2;
if (n <= 0)
return -1;
if (n <= 1)
return 1;
tab[2] = 1;
tab[1] = 1;
tab[0] = tab[1] + tab[2];
for (i = 3; i <= n; i++) {
tab[2] = tab[1];
tab[1] = tab[0];
tab[0] = tab[1] + tab[2];
}
return (tab[0]);
}
Réponse à l'exercice 17
13
int calcul_Fibonnacci_recursif(int n)
{
int res = 0;
if (n == 0)
return 1;
if (n == 1)
return 1;
res = calcul_Fibonnacci_recursif(n-1) + calcul_Fibonnacci_recursif(n-2);
return (res);
}
Réponse à l'exercice 18
14
|
|
|
|
|
|
|
|
|
Vrai |
Faux |
Faux |
Vrai |
Faux |
|
|
Vrai |
Vrai |
Faux |
Faux |
Vrai |
|
|
Vrai |
Vrai |
Faux |
Faux |
Vrai |
|
|
Vrai |
Vrai |
Faux |
Faux |
Vrai |
|
|
Faux |
Vrai |
Vrai |
Faux |
Faux |
|
|
Vrai |
Vrai |
Faux |
Faux |
Vrai |
|
|
Faux |
Vrai |
Vrai |
Faux |
Faux |
|
|
Vrai |
Faux |
Faux |
Vrai |
Faux |
si
et 1 sinon |
|
Vrai |
Faux |
Faux |
Faux |
Faux |
Réponse à l'exercice 19
17
void affiche_tableau(int *tab, int n) {
int i;
for (i = 0; i < n; i++) {
printf("Tab[%d]=%d\n",i,tab[i])
}
}
Réponse à l'exercice 20
17
void affiche_tableau(int *tab, int n) {
int i;
for (i = 0; i < n; i++) {
printf("Tab[%d]=%d\n",i,tab[i])
}
}
Réponse à l'exercice 21
17
void lire_tableau(int *tab, int n) {
int i;
for (i = 0; i < n; i++) {
printf("Tab[%d]= ?\n",i);
scanf("%d",&(tab[i]));
}
}
Réponse à l'exercice 22
17
Réponse à l'exercice 23
17
Soit
UN algorithme qui résout le problème du MAX. Appliquons
à
, où est le plus grand élément du
tableau. Cet algo renvoie donc . On montre par l'absurde que
tout élément qui n'est pas le maximum est comparé au moins une fois
à un élément plus grand que lui : supposons que ne soit pas
comparé à plus grand que lui. Alors en appliquant
sur l entrée
, on ne va pas changer le
déroulement précédent de l'algorithme et la réponse retournée est
incorrecte, ce qui contredit l'hypothèse de départ. Comme il y a n-1
éléments qui ne sont pas le maximum, il y a au moins
comparaisons.
Réponse à l'exercice 24
17
Réponse à l'exercice 25
26118
Il est facile de compter le nombre d'opérations nécessaires. À
chaque itération, on démarre à l'élément et on le compare
successivement à
. On fait donc
comparaisons. On commence avec et on finit avec .
Donc on fait
comparaisons, et
échanges. Le tri par sélection fait donc de l'ordre de
comparaisons.
void tri_selection_sans_copie(int* tab,int taille){
int i,j,x,ind_min;
for(i=0;i<taille-1;i++){
ind_min=i;
for(j=i+1;j<taille;j++){
if(tab[j]<tab[ind_min]){
ind_min=j;
}
}
x=tab[i];
tab[i]=tab[ind_min];
tab[ind_min]=x;
}
}
Réponse à l'exercice 27
19
On peut compter aussi trés facilement le nombre d'opérations et se
rendre compte qu'il s'agit d'un tri en
comparaisons et
échanges (si par exemple le tableau est donné en ordre
strictement décroissant).
void tri_bulle(int* tab,int taille){
int i,j,x;
for(i=1;i<=taille-1;i++){
for(j=0;j<taille-i;j++){
if(tab[j]>tab[j+1]){
x=tab[j];
tab[j]=tab[j+1];
tab[j+1]=x;
}
}
}
}
Réponse à l'exercice 28
21
Une première méthode peu efficace...
Et une seconde bien plus efficace.
Réponse à l'exercice 29
26
On utilise bien sûr la fonction définie comme ci...
Réponse à l'exercice 30
26
précédent: Structures de données élémentaires
monter: UE33/UE43 - Opt1. Algorithmique D.E.U.G. 2ème Année
suivant: À propos de ce document...
  Table des matières
Arnaud Legrand
2003-08-18