La meilleure façon d’apprendre quelque chose est de pratiquer des exercices. Nous avons préparer ces exercices corrigés pour les personnes (débutantes ou intermédiaires) qui sont familières avec le langage C et programmation. Nous espérons que ces exercices vous aideront à améliorer vos compétences sur le langage C et programmation. Les exercices corrigés suivantes sont actuellement disponibles, nous travaillons dur pour ajouter plus d’exercices. Bon apprentissage!
Vous pouvez lire notre tutoriel sur le langage C avant de résoudre les exercices suivants.
171. Écrire un programme en C pour vérifier si une matrice donnée est une matrice d’identité.
Une matrice diagonale est une matrice dont tous les éléments diagonaux ont une valeur égale à 1 et dont tous les autres éléments ont une valeur égale à zéro. Exemple:
Exemple de sortie:
Entrer le nombre de lignes de la matrice: 2
Entrer le nombre de colonnes de la matrice: 2
Entrer les éléments de la matrice:
matrice[0][0] : 1
matrice[0][1] : 0
matrice[0][2] : 0
matrice[1][0] : 0
matrice[1][1] : 1
matrice[1][2] : 0
matrice[2][0] : 0
matrice[2][1] : 0
matrice[2][2] : 1
La matrice est:
1 0 0
0 1 0
0 0 1
La matrice est une matrice d'identité.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
intmain(){
int matrice[10][10], l1, c1, i, j, ident = 1;
printf("Entrer le nombre de lignes de la matrice:");
scanf("%d", &l1);
printf("Entrer le nombre de colonnes de la matrice:");
scanf("%d", &c1);
printf("Entrer les éléments de la matrice: \n");
for(i = 0; i < l1; i++){
for(j = 0; j < c1; j++){
printf("matrice[%d][%d] : ", i, j);
scanf("%d", &matrice[i][j]);
}
}
printf("La matrice est: \n");
for(i = 0; i < l1; i++){
for(j = 0; j < c1 ;j++){
printf("% 4d", matrice[i][j]);
}
printf("\n");
}
// Vérifier si la matrice est une matrice identité ou non
printf("La matrice n'est pas une matrice d'identité.");
}
return 0;
}
#include <stdio.h>
int main() {
int matrice[10][10], l1, c1, i, j, ident = 1;
printf("Entrer le nombre de lignes de la matrice:");
scanf("%d", &l1);
printf("Entrer le nombre de colonnes de la matrice:");
scanf("%d", &c1);
printf("Entrer les éléments de la matrice: \n");
for(i = 0; i < l1; i++) {
for(j = 0; j < c1; j++) {
printf("matrice[%d][%d] : ", i, j);
scanf("%d", &matrice[i][j]);
}
}
printf("La matrice est: \n");
for(i = 0; i < l1; i++) {
for(j = 0; j < c1 ;j++) {
printf("% 4d", matrice[i][j]);
}
printf("\n");
}
// Vérifier si la matrice est une matrice identité ou non
for(i = 0; i < l1; i++) {
for(j = 0; j < c1; j++) {
if ((i == j && matrice[i][j] != 1) || (i != j && matrice[i][j] != 0)) {
ident = 0;
break;
}
}
if (ident == 0) {
break;
}
}
if(ident == 1) {
printf("La matrice est une matrice d'identité.");
} else {
printf("La matrice n'est pas une matrice d'identité.");
}
return 0;
}
#include <stdio.h>
int main() {
int matrice[10][10], l1, c1, i, j, ident = 1;
printf("Entrer le nombre de lignes de la matrice:");
scanf("%d", &l1);
printf("Entrer le nombre de colonnes de la matrice:");
scanf("%d", &c1);
printf("Entrer les éléments de la matrice: \n");
for(i = 0; i < l1; i++) {
for(j = 0; j < c1; j++) {
printf("matrice[%d][%d] : ", i, j);
scanf("%d", &matrice[i][j]);
}
}
printf("La matrice est: \n");
for(i = 0; i < l1; i++) {
for(j = 0; j < c1 ;j++) {
printf("% 4d", matrice[i][j]);
}
printf("\n");
}
// Vérifier si la matrice est une matrice identité ou non
for(i = 0; i < l1; i++) {
for(j = 0; j < c1; j++) {
if ((i == j && matrice[i][j] != 1) || (i != j && matrice[i][j] != 0)) {
ident = 0;
break;
}
}
if (ident == 0) {
break;
}
}
if(ident == 1) {
printf("La matrice est une matrice d'identité.");
} else {
printf("La matrice n'est pas une matrice d'identité.");
}
return 0;
}
172. Ecrivez un programme en C pour trouver une paire avec une somme donnée dans le tableau.
Exemple de sortie:
Le tableau donné: 4 5 2 9 7 6
La somme donnée: 6
Une paire d'éléments peut faire la somme donnée par la valeur des indices 0 et 2.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
/* Fonction permettant de vérifier s'il existe une paire d'éléments
dans le tableau dont la somme est égale à une valeur donnée. */
voidpaireSomme(int tab[], int n, int sum){
// Itère dans les éléments du tableau jusqu'à l'avant-dernier élément
for(int i = 0; i < n - 1; i++){
// Itère dans les éléments du tableau du (i + 1)ème élément au dernier élément
for(int j = i + 1; j < n; j++){
// Vérifie si la somme de la paire d'éléments en cours est égale à la somme donnée
if(tab[i] + tab[j] == sum){
printf("Une paire d'éléments peut faire la somme donnée par la valeur des indices %d et %d.", i, j);
return; // Quitter la fonction si la paire est trouvée
}
}
}
printf("Aucune paire ne peut faire la somme donnée.");
}
intmain(){
int tab[] = {4, 5, 2, 9, 7, 6};
int sum = 6;
// Affiche le tableau donné
printf("Le tableau donné: ");
int n = sizeof(tab) / sizeof(tab[0]);
for(int i = 0; i < n; i++){
printf("%d ", tab[i]);
}
printf("\nLa somme donnée: %d", sum);
paireSomme(tab, n, sum);
return 0;
}
#include <stdio.h>
/* Fonction permettant de vérifier s'il existe une paire d'éléments
dans le tableau dont la somme est égale à une valeur donnée. */
void paireSomme(int tab[], int n, int sum) {
// Itère dans les éléments du tableau jusqu'à l'avant-dernier élément
for (int i = 0; i < n - 1; i++) {
// Itère dans les éléments du tableau du (i + 1)ème élément au dernier élément
for (int j = i + 1; j < n; j++) {
// Vérifie si la somme de la paire d'éléments en cours est égale à la somme donnée
if (tab[i] + tab[j] == sum) {
printf("Une paire d'éléments peut faire la somme donnée par la valeur des indices %d et %d.", i, j);
return; // Quitter la fonction si la paire est trouvée
}
}
}
printf("Aucune paire ne peut faire la somme donnée.");
}
int main() {
int tab[] = {4, 5, 2, 9, 7, 6};
int sum = 6;
// Affiche le tableau donné
printf("Le tableau donné: ");
int n = sizeof(tab) / sizeof(tab[0]);
for (int i = 0; i < n; i++) {
printf("%d ", tab[i]);
}
printf("\nLa somme donnée: %d", sum);
paireSomme(tab, n, sum);
return 0;
}
#include <stdio.h>
/* Fonction permettant de vérifier s'il existe une paire d'éléments
dans le tableau dont la somme est égale à une valeur donnée. */
void paireSomme(int tab[], int n, int sum) {
// Itère dans les éléments du tableau jusqu'à l'avant-dernier élément
for (int i = 0; i < n - 1; i++) {
// Itère dans les éléments du tableau du (i + 1)ème élément au dernier élément
for (int j = i + 1; j < n; j++) {
// Vérifie si la somme de la paire d'éléments en cours est égale à la somme donnée
if (tab[i] + tab[j] == sum) {
printf("Une paire d'éléments peut faire la somme donnée par la valeur des indices %d et %d.", i, j);
return; // Quitter la fonction si la paire est trouvée
}
}
}
printf("Aucune paire ne peut faire la somme donnée.");
}
int main() {
int tab[] = {4, 5, 2, 9, 7, 6};
int sum = 6;
// Affiche le tableau donné
printf("Le tableau donné: ");
int n = sizeof(tab) / sizeof(tab[0]);
for (int i = 0; i < n; i++) {
printf("%d ", tab[i]);
}
printf("\nLa somme donnée: %d", sum);
paireSomme(tab, n, sum);
return 0;
}
173. Ecrivez un programme en C pour trouver l'élément apparaissant un nombre impair de fois dans le tableau.
Tous les nombres apparaissent un nombre pair de fois sauf un nombre qui apparaît un nombre impair de fois.
Exemple de sortie:
Le tableau donné est: 1 2 1 6 6 2 7 2 7
L'élément apparaissant un nombre impair de fois est: 2
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
/* Trouver l'élément apparaissant un nombre impair de fois
dans le tableau en utilisant l'opération XOR */
intimpaireElem(int *tab, int s){
int i, res = 0;
// Effectuer une opération XOR sur tous les éléments du tableau
for(i = 0; i < s; i++){
res = res ^ tab[i];
}
//Renvoie l'élément apparaissant un nombre impair de fois
return res;
}
intmain(){
int i, tab[] = {1, 2, 1, 6, 6, 2, 7, 2, 7};
int s = sizeof(tab) / sizeof(tab[0]);
// Affiche le tableau donné
printf("Le tableau donné est: ");
for(i = 0; i < s; i++){
printf("%d ", tab[i]);
}
printf("\n");
printf("L'élément apparaissant un nombre impair de fois est: %d", impaireElem(tab, s));
return 0;
}
#include <stdio.h>
/* Trouver l'élément apparaissant un nombre impair de fois
dans le tableau en utilisant l'opération XOR */
int impaireElem(int *tab, int s) {
int i, res = 0;
// Effectuer une opération XOR sur tous les éléments du tableau
for (i = 0; i < s; i++) {
res = res ^ tab[i];
}
//Renvoie l'élément apparaissant un nombre impair de fois
return res;
}
int main() {
int i, tab[] = {1, 2, 1, 6, 6, 2, 7, 2, 7};
int s = sizeof(tab) / sizeof(tab[0]);
// Affiche le tableau donné
printf("Le tableau donné est: ");
for (i = 0; i < s; i++) {
printf("%d ", tab[i]);
}
printf("\n");
printf("L'élément apparaissant un nombre impair de fois est: %d", impaireElem(tab, s));
return 0;
}
#include <stdio.h>
/* Trouver l'élément apparaissant un nombre impair de fois
dans le tableau en utilisant l'opération XOR */
int impaireElem(int *tab, int s) {
int i, res = 0;
// Effectuer une opération XOR sur tous les éléments du tableau
for (i = 0; i < s; i++) {
res = res ^ tab[i];
}
//Renvoie l'élément apparaissant un nombre impair de fois
return res;
}
int main() {
int i, tab[] = {1, 2, 1, 6, 6, 2, 7, 2, 7};
int s = sizeof(tab) / sizeof(tab[0]);
// Affiche le tableau donné
printf("Le tableau donné est: ");
for (i = 0; i < s; i++) {
printf("%d ", tab[i]);
}
printf("\n");
printf("L'élément apparaissant un nombre impair de fois est: %d", impaireElem(tab, s));
return 0;
}
174. Ecrivez un programme en C pour trouver le nombre manquant dans un tableau donné. Il n'y a pas de doublons.
Exemple de sortie:
Le tableau donné est: 1 5 4 2 3 9 8 7
Le nombre manquant est: 6
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
/* Trouver l'élément apparaissant un nombre impair de fois
dans le tableau en utilisant l'opération XOR */
intimpaireElem(int *tab, int s){
int i, res = 0;
// Effectuer une opération XOR sur tous les éléments du tableau
for(i = 0; i < s; i++){
res = res ^ tab[i];
}
//Renvoie l'élément apparaissant un nombre impair de fois
return res;
}
intmain(){
int i, tab[] = {1, 2, 1, 6, 6, 2, 7, 2, 7};
int s = sizeof(tab) / sizeof(tab[0]);
// Affiche le tableau donné
printf("Le tableau donné est: ");
for(i = 0; i < s; i++){
printf("%d ", tab[i]);
}
printf("\n");
printf("L'élément apparaissant un nombre impair de fois est: %d", impaireElem(tab, s));
return 0;
}
#include <stdio.h>
/* Trouver l'élément apparaissant un nombre impair de fois
dans le tableau en utilisant l'opération XOR */
int impaireElem(int *tab, int s) {
int i, res = 0;
// Effectuer une opération XOR sur tous les éléments du tableau
for (i = 0; i < s; i++) {
res = res ^ tab[i];
}
//Renvoie l'élément apparaissant un nombre impair de fois
return res;
}
int main() {
int i, tab[] = {1, 2, 1, 6, 6, 2, 7, 2, 7};
int s = sizeof(tab) / sizeof(tab[0]);
// Affiche le tableau donné
printf("Le tableau donné est: ");
for (i = 0; i < s; i++) {
printf("%d ", tab[i]);
}
printf("\n");
printf("L'élément apparaissant un nombre impair de fois est: %d", impaireElem(tab, s));
return 0;
}
#include <stdio.h>
/* Trouver l'élément apparaissant un nombre impair de fois
dans le tableau en utilisant l'opération XOR */
int impaireElem(int *tab, int s) {
int i, res = 0;
// Effectuer une opération XOR sur tous les éléments du tableau
for (i = 0; i < s; i++) {
res = res ^ tab[i];
}
//Renvoie l'élément apparaissant un nombre impair de fois
return res;
}
int main() {
int i, tab[] = {1, 2, 1, 6, 6, 2, 7, 2, 7};
int s = sizeof(tab) / sizeof(tab[0]);
// Affiche le tableau donné
printf("Le tableau donné est: ");
for (i = 0; i < s; i++) {
printf("%d ", tab[i]);
}
printf("\n");
printf("L'élément apparaissant un nombre impair de fois est: %d", impaireElem(tab, s));
return 0;
}
175. Écrire un programme en C pour trouver le plus petit élément manquant dans un tableau trié.
Exemple de sortie:
Le tableau donné est: 0 1 2 4 5 6 7 9
Le plus petit élément manquant est: 3
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
intpetitEl(int tab[], int indice_bas, int indice_haut){
// Vérifier si indice_bas est supérieur à indice_haut, ce qui indique la fin de la recherche.
if(indice_bas > indice_haut)
return indice_bas; // Renvoyer l'indice le plus petit, car il représente l'élément manquant le plus petit.
// Calculer l'indice moyen entre indice_bas et indice_haut
int mid_index = indice_bas + (indice_haut - indice_bas) / 2;
// Si l'élément à mid_index est égal à mid_index, la non-concordance se situe dans la moitié droite.
if(tab[mid_index] == mid_index)
returnpetitEl(tab, mid_index + 1, indice_haut);
else// Si ce n'est pas le cas, la discordance se situe dans la moitié gauche
returnpetitEl(tab, indice_bas, mid_index - 1);
}
intmain(){
int i, tab[] = {0, 1, 2, 4, 5, 6, 7, 9};
int size = sizeof(tab) / sizeof(tab[0]);
// Afficher le tableau d'origine
printf("Le tableau donné est:");
for(i = 0; i < size; i++){
printf("%d ", tab[i]);
}
int indice_bas = 0, indice_haut = size - 1;
int res = petitEl(tab, indice_bas, indice_haut);
printf("\nLe plus petit élément manquant est: %d", res);
return 0;
}
#include <stdio.h>
int petitEl(int tab[], int indice_bas, int indice_haut) {
// Vérifier si indice_bas est supérieur à indice_haut, ce qui indique la fin de la recherche.
if (indice_bas > indice_haut)
return indice_bas; // Renvoyer l'indice le plus petit, car il représente l'élément manquant le plus petit.
// Calculer l'indice moyen entre indice_bas et indice_haut
int mid_index = indice_bas + (indice_haut - indice_bas) / 2;
// Si l'élément à mid_index est égal à mid_index, la non-concordance se situe dans la moitié droite.
if (tab[mid_index] == mid_index)
return petitEl(tab, mid_index + 1, indice_haut);
else // Si ce n'est pas le cas, la discordance se situe dans la moitié gauche
return petitEl(tab, indice_bas, mid_index - 1);
}
int main() {
int i, tab[] = {0, 1, 2, 4, 5, 6, 7, 9};
int size = sizeof(tab) / sizeof(tab[0]);
// Afficher le tableau d'origine
printf("Le tableau donné est:");
for(i = 0; i < size; i++) {
printf("%d ", tab[i]);
}
int indice_bas = 0, indice_haut = size - 1;
int res = petitEl(tab, indice_bas, indice_haut);
printf("\nLe plus petit élément manquant est: %d", res);
return 0;
}
#include <stdio.h>
int petitEl(int tab[], int indice_bas, int indice_haut) {
// Vérifier si indice_bas est supérieur à indice_haut, ce qui indique la fin de la recherche.
if (indice_bas > indice_haut)
return indice_bas; // Renvoyer l'indice le plus petit, car il représente l'élément manquant le plus petit.
// Calculer l'indice moyen entre indice_bas et indice_haut
int mid_index = indice_bas + (indice_haut - indice_bas) / 2;
// Si l'élément à mid_index est égal à mid_index, la non-concordance se situe dans la moitié droite.
if (tab[mid_index] == mid_index)
return petitEl(tab, mid_index + 1, indice_haut);
else // Si ce n'est pas le cas, la discordance se situe dans la moitié gauche
return petitEl(tab, indice_bas, mid_index - 1);
}
int main() {
int i, tab[] = {0, 1, 2, 4, 5, 6, 7, 9};
int size = sizeof(tab) / sizeof(tab[0]);
// Afficher le tableau d'origine
printf("Le tableau donné est:");
for(i = 0; i < size; i++) {
printf("%d ", tab[i]);
}
int indice_bas = 0, indice_haut = size - 1;
int res = petitEl(tab, indice_bas, indice_haut);
printf("\nLe plus petit élément manquant est: %d", res);
return 0;
}
176. Écrire un programme en C pour trouver deux éléments dont la somme est la plus proche de zéro.
Exemple de sortie:
Le tableau donné est: 55 42 75 -52 -89 23 80 -99 2 -44
La paire d'éléments dont la somme est minimale est: [42, -44]
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
voidsommeMinimale(int *tab, int tab_size){
int i, j, sum, min1, min2, minS;
/* Initialiser les variables pour déterminer la somme minimale
et les paires d'éléments correspondantes */
min1 = tab[0];
min2 = tab[1];
minS = min1 + min2;
// Itérer dans le tableau pour trouver la paire dont la somme est la plus faible
for(i = 0; i < tab_size - 1; i++){
for(j = i + 1; j < tab_size; j++){
sum = tab[i] + tab[j];
// Actualiser la somme minimale et les éléments de la paire si la somme actuelle est plus petite
if(abs(sum)<abs(minS)){
minS = sum;
min1 = tab[i];
min2 = tab[j];
}
}
}
// Afficher la paire d'éléments dont la somme est minimale
printf("\nLa paire d'éléments dont la somme est minimale est: ");
sommeMinimale(tab, size);
return 0;
}
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void sommeMinimale(int *tab, int tab_size) {
int i, j, sum, min1, min2, minS;
/* Initialiser les variables pour déterminer la somme minimale
et les paires d'éléments correspondantes */
min1 = tab[0];
min2 = tab[1];
minS = min1 + min2;
// Itérer dans le tableau pour trouver la paire dont la somme est la plus faible
for (i = 0; i < tab_size - 1; i++) {
for (j = i + 1; j < tab_size; j++) {
sum = tab[i] + tab[j];
// Actualiser la somme minimale et les éléments de la paire si la somme actuelle est plus petite
if (abs(sum) < abs(minS)) {
minS = sum;
min1 = tab[i];
min2 = tab[j];
}
}
}
// Afficher la paire d'éléments dont la somme est minimale
printf("[%d, %d]\n", min1, min2);
}
int main() {
int tab[] = {55, 42, 75, -52, -89, 23, 80, -99, 2, -44};
int size = sizeof(tab) / sizeof(tab[0]);
int i;
// Afficher le tableau d'origine
printf("Le tableau donné est: ");
for (i = 0; i < size; i++) {
printf("%d ", tab[i]);
}
printf("\nLa paire d'éléments dont la somme est minimale est: ");
sommeMinimale(tab, size);
return 0;
}
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void sommeMinimale(int *tab, int tab_size) {
int i, j, sum, min1, min2, minS;
/* Initialiser les variables pour déterminer la somme minimale
et les paires d'éléments correspondantes */
min1 = tab[0];
min2 = tab[1];
minS = min1 + min2;
// Itérer dans le tableau pour trouver la paire dont la somme est la plus faible
for (i = 0; i < tab_size - 1; i++) {
for (j = i + 1; j < tab_size; j++) {
sum = tab[i] + tab[j];
// Actualiser la somme minimale et les éléments de la paire si la somme actuelle est plus petite
if (abs(sum) < abs(minS)) {
minS = sum;
min1 = tab[i];
min2 = tab[j];
}
}
}
// Afficher la paire d'éléments dont la somme est minimale
printf("[%d, %d]\n", min1, min2);
}
int main() {
int tab[] = {55, 42, 75, -52, -89, 23, 80, -99, 2, -44};
int size = sizeof(tab) / sizeof(tab[0]);
int i;
// Afficher le tableau d'origine
printf("Le tableau donné est: ");
for (i = 0; i < size; i++) {
printf("%d ", tab[i]);
}
printf("\nLa paire d'éléments dont la somme est minimale est: ");
sommeMinimale(tab, size);
return 0;
}
177. Écrire un programme en C pour trouver le plus petit nombre positif manquant dans un tableau non trié.
Exemple de sortie:
Le tableau donné est: 3 1 2 -5 5 -23 10 6 8 -7
Le plus petit nombre positif manquant est: 4
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
#include <stdbool.h>
intpetitNbrPositifManq(int tab[], int n)
{
// Pour marquer l'occurrence d'éléments
bool present[n + 1];
for(int i = 0; i < n; i++)
present[i] = false;
for(int i = 0; i < n; i++){
/* Ne marquer que les éléments obligatoires.
Tous les éléments non positifs et les éléments
supérieurs à n + 1 ne seront jamais considérés comme
une réponse. Par exemple, le tableau sera {1, 2, 3} dans le
pire des cas et le résultat sera 4, ce qui correspond à n + 1.*/
if(tab[i]> 0 && tab[i]<= n)
present[tab[i]] = true;
}
// Trouver le premier élément qui n'apparaît pas dans le tableau original
printf("Le plus petit nombre positif manquant est: %d", petitNbrPositifManq(tab, size));
}
#include <stdio.h>
#include <stdbool.h>
int petitNbrPositifManq(int tab[], int n)
{
// Pour marquer l'occurrence d'éléments
bool present[n + 1];
for (int i = 0; i < n; i++)
present[i] = false;
for (int i = 0; i < n; i++) {
/* Ne marquer que les éléments obligatoires.
Tous les éléments non positifs et les éléments
supérieurs à n + 1 ne seront jamais considérés comme
une réponse. Par exemple, le tableau sera {1, 2, 3} dans le
pire des cas et le résultat sera 4, ce qui correspond à n + 1.*/
if (tab[i] > 0 && tab[i] <= n)
present[tab[i]] = true;
}
// Trouver le premier élément qui n'apparaît pas dans le tableau original
for (int i = 1; i <= n; i++)
if (!present[i])
return i;
return n + 1;
}
int main()
{
int tab[] = { 3, 1, 2, -5, 5, -23, 10, 6, 8, -7 };
int size = sizeof(tab) / sizeof(tab[0]);
printf("Le plus petit nombre positif manquant est: %d", petitNbrPositifManq(tab, size));
}
#include <stdio.h>
#include <stdbool.h>
int petitNbrPositifManq(int tab[], int n)
{
// Pour marquer l'occurrence d'éléments
bool present[n + 1];
for (int i = 0; i < n; i++)
present[i] = false;
for (int i = 0; i < n; i++) {
/* Ne marquer que les éléments obligatoires.
Tous les éléments non positifs et les éléments
supérieurs à n + 1 ne seront jamais considérés comme
une réponse. Par exemple, le tableau sera {1, 2, 3} dans le
pire des cas et le résultat sera 4, ce qui correspond à n + 1.*/
if (tab[i] > 0 && tab[i] <= n)
present[tab[i]] = true;
}
// Trouver le premier élément qui n'apparaît pas dans le tableau original
for (int i = 1; i <= n; i++)
if (!present[i])
return i;
return n + 1;
}
int main()
{
int tab[] = { 3, 1, 2, -5, 5, -23, 10, 6, 8, -7 };
int size = sizeof(tab) / sizeof(tab[0]);
printf("Le plus petit nombre positif manquant est: %d", petitNbrPositifManq(tab, size));
}
178. Écrire un programme en C pour trouver l'élément majoritaire dans un tableau.
Exemple de sortie:
Le tableau donné est: 4 1 2 4 4 5 4 6 8 4
L'élément majoritaire est: 4
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
voidgetMaj(int tab[], int n)
{
int max = 0;
int index = -1;
for(int i = 0; i < n; i++){
int compteur = 0;
for(int j = 0; j < n; j++){
if(tab[i] == tab[j])
compteur++;
}
// Actualiser max si le compteur de l'élément
// actuel est plus grand
if(compteur > max){
max = compteur;
index = i;
}
}
// si max est supérieur à n/2
// retourner l'élément correspondant
if(max > n / 2)
printf("L'élément majoritaire est: %d\n", tab[index]);
else
printf("Pas d'élément majoritaire\n");
}
intmain()
{
int tab[] = { 4, 1, 2, 4, 4, 5, 4, 6, 8, 4 };
int n = sizeof(tab) / sizeof(tab[0]);
getMaj(tab, n);
return 0;
}
#include <stdio.h>
void getMaj(int tab[], int n)
{
int max = 0;
int index = -1;
for (int i = 0; i < n; i++) {
int compteur = 0;
for (int j = 0; j < n; j++) {
if (tab[i] == tab[j])
compteur++;
}
// Actualiser max si le compteur de l'élément
// actuel est plus grand
if (compteur > max) {
max = compteur;
index = i;
}
}
// si max est supérieur à n/2
// retourner l'élément correspondant
if (max > n / 2)
printf("L'élément majoritaire est: %d\n", tab[index]);
else
printf("Pas d'élément majoritaire\n");
}
int main()
{
int tab[] = { 4, 1, 2, 4, 4, 5, 4, 6, 8, 4 };
int n = sizeof(tab) / sizeof(tab[0]);
getMaj(tab, n);
return 0;
}
#include <stdio.h>
void getMaj(int tab[], int n)
{
int max = 0;
int index = -1;
for (int i = 0; i < n; i++) {
int compteur = 0;
for (int j = 0; j < n; j++) {
if (tab[i] == tab[j])
compteur++;
}
// Actualiser max si le compteur de l'élément
// actuel est plus grand
if (compteur > max) {
max = compteur;
index = i;
}
}
// si max est supérieur à n/2
// retourner l'élément correspondant
if (max > n / 2)
printf("L'élément majoritaire est: %d\n", tab[index]);
else
printf("Pas d'élément majoritaire\n");
}
int main()
{
int tab[] = { 4, 1, 2, 4, 4, 5, 4, 6, 8, 4 };
int n = sizeof(tab) / sizeof(tab[0]);
getMaj(tab, n);
return 0;
}
179. Ecrivez un programme en C pour trier un tableau de 0, 1 et 2.
Exemple de sortie:
Le tableau donné est: 0 1 1 2 2 1 0 1 2 0 2 0
Après le tri, les éléments du tableau sont: 0 0 0 0 1 1 1 1 2 2 2 2
printf("Après le tri, les éléments du tableau sont: ");
sortElements(tab, n - 1);
for(int i = 0 ; i < n; i++){
printf("%d ", tab[i]);
}
return 0;
}
#include <stdio.h>
void swap(int tab[], int i, int j) {
int tmp = tab[i];
tab[i] = tab[j];
tab[j] = tmp;
}
int sortElements(int tab[], int end) {
int start = 0, milieu = 0;
int pivot = 1;
while (milieu <= end) {
if (tab[milieu] < pivot) {
swap(tab, start, milieu);
++start, ++milieu;
} else if (tab[milieu] > pivot) {
swap(tab, milieu, end);
--end;
} else {
++milieu;
}
}
}
int main() {
int tab[] = { 0, 1, 1, 2, 2, 1, 0, 1, 2, 0, 2, 0 };
int n = sizeof(tab) / sizeof(tab[0]);
int i;
printf("Le tableau donné est: ");
for (i = 0; i < n; i++) {
printf("%d ", tab[i]);
}
printf("Après le tri, les éléments du tableau sont: ");
sortElements(tab, n - 1);
for (int i = 0 ; i < n; i++) {
printf("%d ", tab[i]);
}
return 0;
}
#include <stdio.h>
void swap(int tab[], int i, int j) {
int tmp = tab[i];
tab[i] = tab[j];
tab[j] = tmp;
}
int sortElements(int tab[], int end) {
int start = 0, milieu = 0;
int pivot = 1;
while (milieu <= end) {
if (tab[milieu] < pivot) {
swap(tab, start, milieu);
++start, ++milieu;
} else if (tab[milieu] > pivot) {
swap(tab, milieu, end);
--end;
} else {
++milieu;
}
}
}
int main() {
int tab[] = { 0, 1, 1, 2, 2, 1, 0, 1, 2, 0, 2, 0 };
int n = sizeof(tab) / sizeof(tab[0]);
int i;
printf("Le tableau donné est: ");
for (i = 0; i < n; i++) {
printf("%d ", tab[i]);
}
printf("Après le tri, les éléments du tableau sont: ");
sortElements(tab, n - 1);
for (int i = 0 ; i < n; i++) {
printf("%d ", tab[i]);
}
return 0;
}
180. Écrire un programme en C pour vérifier si un tableau est un sous-ensemble d'un autre tableau.
Exemple de sortie:
Le premier tableau donné est: 3 8 7 12 6 9 1 0 5
Le deuxième tableau est: 1 3 7 6 0
Le deuxième tableau est un sous-ensemble du premier tableau.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
// Fonction permettant de vérifier si tab2[] est un sous-ensemble de tab1[]
inttabSousEnsemble(int *tab1, int tab1_size, int *tab2, int tab2_size){
int i, j;
// Parcourir les éléments de tab2[]
for(i = 0; i < tab2_size; i++){
// Recherche de l'élément tab2[] courant dans tab1[]
for(j = 0; j < tab1_size; j++){
// Si un élément est trouvé dans tab1[], arrêter la boucle
if(tab2[i] == tab1[j])
break;
}
// Si la boucle se termine sans trouver d'élément,
// tab2[] n'est pas un sous-ensemble
if(j == tab1_size)
return 0; // Pas un sous-ensemble
}
return 1; // tab2[] est un sous-ensemble de tab1[]
}
intmain(){
int tab1[] = {3, 8, 7, 12, 6, 9, 1, 0, 5};
int tab2[] = {1, 3, 7, 6, 0};
int i;
int n1 = sizeof(tab1) / sizeof(tab1[0]);
int n2 = sizeof(tab2) / sizeof(tab2[0]);
printf("Le premier tableau donné est: ");
for(i = 0; i < n1; i++){
printf("%d ", tab1[i]);
}
printf("\n");
printf("Le deuxième tableau est: ");
for(i = 0; i < n2; i++){
printf("%d ", tab2[i]);
}
printf("\n");
// Vérifier si tab2[] est un sous-ensemble de tab1[]
if(tabSousEnsemble(tab1, n1, tab2, n2))
printf("Le deuxième tableau est un sous-ensemble du premier tableau.");
else
printf("Le deuxième tableau n'est pas un sous-ensemble du premier tableau.");
return 0;
}
#include <stdio.h>
// Fonction permettant de vérifier si tab2[] est un sous-ensemble de tab1[]
int tabSousEnsemble(int *tab1, int tab1_size, int *tab2, int tab2_size) {
int i, j;
// Parcourir les éléments de tab2[]
for (i = 0; i < tab2_size; i++) {
// Recherche de l'élément tab2[] courant dans tab1[]
for (j = 0; j < tab1_size; j++) {
// Si un élément est trouvé dans tab1[], arrêter la boucle
if (tab2[i] == tab1[j])
break;
}
// Si la boucle se termine sans trouver d'élément,
// tab2[] n'est pas un sous-ensemble
if (j == tab1_size)
return 0; // Pas un sous-ensemble
}
return 1; // tab2[] est un sous-ensemble de tab1[]
}
int main() {
int tab1[] = {3, 8, 7, 12, 6, 9, 1, 0, 5};
int tab2[] = {1, 3, 7, 6, 0};
int i;
int n1 = sizeof(tab1) / sizeof(tab1[0]);
int n2 = sizeof(tab2) / sizeof(tab2[0]);
printf("Le premier tableau donné est: ");
for (i = 0; i < n1; i++) {
printf("%d ", tab1[i]);
}
printf("\n");
printf("Le deuxième tableau est: ");
for (i = 0; i < n2; i++) {
printf("%d ", tab2[i]);
}
printf("\n");
// Vérifier si tab2[] est un sous-ensemble de tab1[]
if (tabSousEnsemble(tab1, n1, tab2, n2))
printf("Le deuxième tableau est un sous-ensemble du premier tableau.");
else
printf("Le deuxième tableau n'est pas un sous-ensemble du premier tableau.");
return 0;
}
#include <stdio.h>
// Fonction permettant de vérifier si tab2[] est un sous-ensemble de tab1[]
int tabSousEnsemble(int *tab1, int tab1_size, int *tab2, int tab2_size) {
int i, j;
// Parcourir les éléments de tab2[]
for (i = 0; i < tab2_size; i++) {
// Recherche de l'élément tab2[] courant dans tab1[]
for (j = 0; j < tab1_size; j++) {
// Si un élément est trouvé dans tab1[], arrêter la boucle
if (tab2[i] == tab1[j])
break;
}
// Si la boucle se termine sans trouver d'élément,
// tab2[] n'est pas un sous-ensemble
if (j == tab1_size)
return 0; // Pas un sous-ensemble
}
return 1; // tab2[] est un sous-ensemble de tab1[]
}
int main() {
int tab1[] = {3, 8, 7, 12, 6, 9, 1, 0, 5};
int tab2[] = {1, 3, 7, 6, 0};
int i;
int n1 = sizeof(tab1) / sizeof(tab1[0]);
int n2 = sizeof(tab2) / sizeof(tab2[0]);
printf("Le premier tableau donné est: ");
for (i = 0; i < n1; i++) {
printf("%d ", tab1[i]);
}
printf("\n");
printf("Le deuxième tableau est: ");
for (i = 0; i < n2; i++) {
printf("%d ", tab2[i]);
}
printf("\n");
// Vérifier si tab2[] est un sous-ensemble de tab1[]
if (tabSousEnsemble(tab1, n1, tab2, n2))
printf("Le deuxième tableau est un sous-ensemble du premier tableau.");
else
printf("Le deuxième tableau n'est pas un sous-ensemble du premier tableau.");
return 0;
}