Différences entre versions de « C algo td3 »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
 
(12 versions intermédiaires par le même utilisateur non affichées)
Ligne 18 : Ligne 18 :
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<big>Afficher la solution:</big>
<source class="mw-collapsible-content" lang="c">
+
<source class="mw-collapsible-content" lang="C">
 
#include <stdio.h>
 
#include <stdio.h>
 
#include <stdlib.h>
 
#include <stdlib.h>
Ligne 35 : Ligne 35 :
 
</source>
 
</source>
 
</div>
 
</div>
 +
 
== Exercice 2 ==
 
== Exercice 2 ==
 
Dérouler le programme suivant de façon à suivre l’état des variables :
 
Dérouler le programme suivant de façon à suivre l’état des variables :
Ligne 50 : Ligne 51 :
  
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:950px">
 
<big>Afficher la solution:</big>
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
<source class="mw-collapsible-content" lang="c">
Ligne 67 : Ligne 68 :
 
</source>
 
</source>
 
</div>
 
</div>
 +
 
== Exercice 3 ==
 
== Exercice 3 ==
 
Dérouler le programme suivant de façon à suivre l’état des variables :
 
Dérouler le programme suivant de façon à suivre l’état des variables :
Ligne 85 : Ligne 87 :
  
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:1070px">
 
<big>Afficher la solution:</big>
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
<source class="mw-collapsible-content" lang="c">
Ligne 106 : Ligne 108 :
 
</source>
 
</source>
 
</div>
 
</div>
 +
 
== Exercice 4 ==
 
== Exercice 4 ==
 
L’objectif de cet exercice consiste à écrire un programme permettant d’inverser l’ordre des valeurs d’un tableau.
 
L’objectif de cet exercice consiste à écrire un programme permettant d’inverser l’ordre des valeurs d’un tableau.
Ligne 112 : Ligne 115 :
  
 
*Écrire l’algorithme en pseudo-code pour une version du programme utilisant un tableau intermédiaire.
 
*Écrire l’algorithme en pseudo-code pour une version du programme utilisant un tableau intermédiaire.
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:1110px">
 
<big>Afficher la solution:</big>
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
<source class="mw-collapsible-content" lang="c">
Ligne 118 : Ligne 121 :
 
#include <stdlib.h>
 
#include <stdlib.h>
  
#define N 10
 
 
int main() {
 
int main() {
 
int tab[] = { 1, 2, 3, 4 }, res[4], i;
 
int tab[] = { 1, 2, 3, 4 }, res[4], i;
Ligne 139 : Ligne 141 :
 
#include <stdlib.h>
 
#include <stdlib.h>
  
#define N 10
 
 
int main() {
 
int main() {
 
int tab[] = { 1, 2, 3, 4 }, tmp, i;
 
int tab[] = { 1, 2, 3, 4 }, tmp, i;
Ligne 145 : Ligne 146 :
 
tmp = tab[3-i] + tab[i];
 
tmp = tab[3-i] + tab[i];
 
tab[i] = tmp - tab[i];
 
tab[i] = tmp - tab[i];
 +
tab[3-i] = tmp - tab[i];
 
}
 
}
 
for (i = 0; i < 4; i++) {
 
for (i = 0; i < 4; i++) {
Ligne 153 : Ligne 155 :
 
</source>
 
</source>
 
</div>
 
</div>
 +
 
== Exercice 5 ==
 
== 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.  
 
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.  
Ligne 162 : Ligne 165 :
 
{‘a’, ‘b’, ‘c’, ‘d’} &rarr; {‘c’, ‘d’, ‘a’, ‘b’}
 
{‘a’, ‘b’, ‘c’, ‘d’} &rarr; {‘c’, ‘d’, ‘a’, ‘b’}
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
<big>Afficher la solution:</big>
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
<source class="mw-collapsible-content" lang="c">
Ligne 168 : Ligne 171 :
 
#include <stdlib.h>
 
#include <stdlib.h>
  
#define N 10
 
 
int main() {
 
int main() {
 
char tab[] = { 'a', 'b', 'c', 'd' }, res[4];
 
char tab[] = { 'a', 'b', 'c', 'd' }, res[4];
Ligne 199 : Ligne 201 :
 
#include <stdlib.h>
 
#include <stdlib.h>
  
#define N 10
 
 
int main() {
 
int main() {
 
int n = 101, i;
 
int n = 101, i;
Ligne 218 : Ligne 219 :
 
</source>
 
</source>
 
</div>
 
</div>
 +
 
== Exercice 7 ==
 
== 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.
 
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.
Ligne 226 : Ligne 228 :
 
#include <stdlib.h>
 
#include <stdlib.h>
  
#define N 10
 
 
int main() {
 
int main() {
 
int n = 101, i, neg = 0, zero = 0, pos = 0;
 
int n = 101, i, neg = 0, zero = 0, pos = 0;

Version actuelle datée du 9 octobre 2019 à 08:38

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>

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>

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];
		tab[3-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>

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.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main() {
	int n = 101, i;
	while (n > 100 || n < 0) {
		printf("Combien de valeurs souhaitez vous saisir ?  ");
		scanf("%d", &n);
	}
	int tab[n];
	for (i = 0; i < n; i++) {
		printf("Saisissez la valeur %d: ", i + 1);
		scanf("%d", &tab[i]);
	}
	for (i = 0; i < n; i++) {
		printf("La valeur à l'index %d vaut %d\n", i + 1, tab[i]);
	}
	return EXIT_SUCCESS;
}

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.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main() {
	int n = 101, i, neg = 0, zero = 0, pos = 0;
	while (n > 100 || n < 0) {
		printf("Combien de valeurs souhaitez vous saisir ?  ");
		scanf("%d", &n);
	}
	int tab[n];
	for (i = 0; i < n; i++) {
		printf("Saisissez la valeur %d: ", i + 1);
		scanf("%d", &tab[i]);
		if (tab[i] < 0) {
			neg++;
		} else if (tab[i] > 0) {
			pos++;
		} else {
			zero++;
		}
	}
	printf("Il y a: \n");
	printf("--> %d valeurs positives\n", pos);
	printf("--> %d valeurs négatives\n", neg);
	printf("--> %d valeurs nulles:\n", zero);
	for (i = 0; i < n; i++) {
		printf("La valeur à l'index %d vaut %d\n", i + 1, tab[i]);
	}
	return EXIT_SUCCESS;
}

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.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main() {
	int n = 101, i, moy = 0, sup = 0;
	while (n > 100 || n < 0) {
		printf("Combien de notes souhaitez vous saisir ?  ");
		scanf("%d", &n);
	}
	int tab[n];
	for (i = 0; i < n; i++) {
		printf("Saisissez la valeur %d: ", i + 1);
		scanf("%d", &tab[i]);
		moy += tab[i];
	}
	moy = moy / n;
	for (i = 0; i < n; i++) {
		if (tab[i] >= moy) {
			sup++;
		}
	}
	printf("La moyenne de la classe est %d\n", moy);
	printf("Il y a %d notes au dessus", sup);
	return EXIT_SUCCESS;
}