Différences entre versions de « C algo td3 »
(4 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=" | + | <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: | + | <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 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 163 : | Ligne 165 : | ||
{‘a’, ‘b’, ‘c’, ‘d’} → {‘c’, ‘d’, ‘a’, ‘b’} | {‘a’, ‘b’, ‘c’, ‘d’} → {‘c’, ‘d’, ‘a’, ‘b’} | ||
− | <div class="toccolours mw-collapsible mw-collapsed" style="width: | + | <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"> |
Version actuelle datée du 9 octobre 2019 à 07: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;
}