C algo td3

De The Linux Craftsman
Aller à la navigation Aller à la recherche

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:

Exercice 5