Différences entre versions de « C algo td3 »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
Ligne 190 : Ligne 190 :
 
</div>
 
</div>
  
== Exercice 5 ==
+
== Exercice 6 ==
 
É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.
 
É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.
 +
== Exercice 7 ==
 +
Modifier le programme pour qu’une fois la saisie terminée, le programme détermine et affiche le nombre de valeurs négatives, le nombre de valeurs nulles et le nombre de valeurs positives.
 +
== Exercice 8 ==
 +
Sur le même principe, écrivez un programme permettant à l’utilisateur de saisir les notes d’une classe.
 +
 +
Le programme, une fois la saisie terminée, renvoie le nombre de notes supérieures ou égales à la moyenne de la classe.

Version du 26 février 2014 à 21:00

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() {
	char tab[] = { 'a', 'b', 'c', 'd' }, res[4];
	int 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 -= 4;
		}
		res[index] = tab[i];
		printf("On décale l'index %d (%c) avec l'index %d\n", i, tab[i],index);
	}
	for (i = 0; i < 4; i++) {
		printf("A l'index %d, le valeur est %c\n", i, res[i]);
	}
	return EXIT_SUCCESS;
}

Exercice 6

É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.

Exercice 7

Modifier le programme pour qu’une fois la saisie terminée, le programme détermine et affiche le nombre de valeurs négatives, le nombre de valeurs nulles et le nombre de valeurs positives.

Exercice 8

Sur le même principe, écrivez un programme permettant à l’utilisateur de saisir les notes d’une classe.

Le programme, une fois la saisie terminée, renvoie le nombre de notes supérieures ou égales à la moyenne de la classe.