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;
}
Exercice 5
Écrire un programme permettant à l’utilisateur de saisir un nombre choisi de valeurs, qui devront être stockées dans un tableau. L’utilisateur commence par entrer le nombre de valeurs qu’il compte saisir (maximum 100) et effectue ensuite la saisie.