C algo td3
Exercice 1
Dérouler le programme suivant de façon à suivre l’état des variables :
#define N 5
int main(){
int tab[N], i;
i=0;
while(i < N){
tab[i]=N-i;
i+=1;
}
return 0;
}
Afficher la solution:
#include <stdio.h>
#include <stdlib.h>
#define N 5
int main() {
int tab[N], i;
i = 0;
while (i < N) {
tab[i] = N - i;
printf("L'index %d du tableau vaut %d\n", i, tab[i]);
i += 1;
}
return 0;
}
Exercice 2
Dérouler le programme suivant de façon à suivre l’état des variables :
#define N 7
int main(){
int tab[N], i;
tab[0]=1;
for(i=1; i < N; i++){
tab[i]=tab[i-1]+2;
}
return 0;
}
Afficher la solution:
#include <stdio.h>
#include <stdlib.h>
#define N 7
int main() {
int tab[N], i;
tab[0] = 1;
for (i = 1; i < N; i++) {
tab[i] = tab[i - 1] + 2;
printf("L'index %d du tableau vaut %d, la somme de %d avec 2\n", i, tab[i], tab[i - 1]);
return 0;
}
Exercice 3
Dérouler le programme suivant de façon à suivre l’état des variables :
#define N 10
int main() {
int tab[N], i;
tab[0] = 1;
tab[1] = 1;
i = 2;
do {
tab[i] = tab[i - 1] + tab[i - 2];
i++;
} while (i <= 7);
return 0;
}
Afficher la solution:
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main() {
int tab[N], i;
tab[0] = 1;
tab[1] = 1;
i = 2;
do {
tab[i] = tab[i - 1] + tab[i - 2];
printf("L'index %d du tableau vaut %d, la somme de %d avec %d\n", i, tab[i], tab[i - 1], tab[i-2]);
i++;
} while (i <= 7);
return 0;
}
Exercice 4
L’objectif de cet exercice consiste à écrire un programme permettant d’inverser l’ordre des valeurs d’un tableau.
Exemple : {1, 2, 3, 4} → {4, 3, 2, 1}.
- Écrire l’algorithme en pseudo-code pour une version du programme utilisant un tableau intermédiaire.
Afficher la solution:
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main() {
int tab[] = { 1, 2, 3, 4 }, res[4], i;
for (i = 0; i < 4; i++) {
res[3 - i] = tab[i];
}
for (i = 0; i < 4; i++) {
printf("A l'index %d, le tableau source vaut %d et le tableau destination vaut %d\n", i, tab[i], res[i]);
}
return EXIT_SUCCESS;
}
- Écrire l’algorithme en pseudo-code pour une version du programme n’utilisant pas de tableau intermédiaire.
Afficher la solution:
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main() {
int tab[] = { 1, 2, 3, 4 }, tmp, i;
for (i = 0; i < 4; i++) {
tmp = tab[3-i] + tab[i];
tab[i] = tmp - tab[i];
}
for (i = 0; i < 4; i++) {
printf("A l'index %d, le valeur est %d\n", i, tab[i]);
}
return EXIT_SUCCESS;
}
Exercice 5
L’objectif consiste ici à généraliser l’exercice précédent. On souhaite permettre à l’utilisateur d’effectuer une permutation circulaire des valeurs du tableau en précisant la valeur d’un décalage de position.
Cette valeur sera saisie par l’utilisateur : une valeur positive correspondant à un décalage vers la droite et une valeur négative à un décalage vers la gauche.
Par exemple, un décalage de +2 donne :
{‘a’, ‘b’, ‘c’, ‘d’} → {‘c’, ‘d’, ‘a’, ‘b’}
Afficher la solution:
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main() {
int tab[] = { 'a', 'b', 'c', 'd' }, res[4], i, decalage, index;
printf("De combien désirez-vous décaler ? ");
scanf("%d", &decalage);
for (i = 0; i < 4; i++) {
index = decalage + i;
if (index > 3) {
index -= 3;
}
res[index] = tab[i];
printf("On décale l'index %d (%c) avec l'index %d(%c)\n", i, tab[i],index, res[index]);
}
for (i = 0; i < 4; i++) {
printf("A l'index %d, le valeur est %c\n", i, res[i]);
}
return EXIT_SUCCESS;
}