0% ont trouvé ce document utile (0 vote)
3 vues32 pages

Code Source

Ce document présente un support de résolution d'exercices en langage C, destiné aux étudiants de la faculté de génie informatique et télécommunications de l'Université Nongo Conakry. Il contient une série d'exercices allant de la saisie de valeurs, calculs mathématiques, à des jeux interactifs, illustrant divers concepts de programmation. Chaque exercice est accompagné de son code source et d'explications pour aider à la compréhension des principes de base du langage C.

Transféré par

abdulayeyouyoula
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues32 pages

Code Source

Ce document présente un support de résolution d'exercices en langage C, destiné aux étudiants de la faculté de génie informatique et télécommunications de l'Université Nongo Conakry. Il contient une série d'exercices allant de la saisie de valeurs, calculs mathématiques, à des jeux interactifs, illustrant divers concepts de programmation. Chaque exercice est accompagné de son code source et d'explications pour aider à la compréhension des principes de base du langage C.

Transféré par

abdulayeyouyoula
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

REPUBLIQUE DE GUINÉE

travail-justice-solidarité

UNIVERSITÉ NONGO CONAKRY


ministère de l’enseignement supérieur de la recherche scientifique et de
l’innovation

Faculté de génie informatique et télécommunications

Département du génie logiciel

Support de résolution des exercices en langage C

Presenté par le groupe VI Enseignant Mr BAH


TABLE DES MATIÈRES
EXERCICE 1 : .................................................................................................................. 2
EXERCICE 2: ................................................................................................................... 2
EXERCICE 3: ................................................................................................................... 3
EXERCICE 4: ................................................................................................................... 4
EXERCICE 5 .................................................................................................................... 6
EXERCICE 6: ................................................................................................................... 7
EXERCICE 7: ................................................................................................................... 8
EXERCICE 8: ................................................................................................................. 10
EXERCICE 9: ................................................................................................................. 11
EXERCICE 10: ............................................................................................................... 11
EXERCICE 11: ............................................................................................................... 12
EXERCICE 12: ............................................................................................................... 12
EXERCICE 13 ................................................................................................................ 13
EXERCICE 14 ................................................................................................................ 14
EXERCICE 15: ............................................................................................................... 15
EXERCICE 16 ................................................................................................................ 19
EXERCICE 17: ............................................................................................................... 21
EXERCICE 18 ................................................................................................................ 23
18.1 ..........................................................................................................................................23
18.2 ..........................................................................................................................................24
18.3 ..........................................................................................................................................25
18.4 ..........................................................................................................................................26
18.5 ..........................................................................................................................................27
18.6 ..........................................................................................................................................28
18.7 ..........................................................................................................................................29
18.8 ..........................................................................................................................................31

1
EXERCICE 1 :

#include <stdio.h>
#include <math.h>

int main()
{

float value, carre;

printf("veiller saisir une valeur : ");


scanf("%f", &value);

carre = value * value;


printf("le carre de %.f est : %.f\n", value , carre);

return 0;
}

EXERCICE 2:

#include <stdio.h>

int main()
{
int nombreDePage ;
float prix;

printf("\nveuiller saisir le nombre de pages à photocopier


: ");
scanf("%d", &nombreDePage);

if (nombreDePage <= 10)


{
prix = 2 * nombreDePage;

2
}
else if ((nombreDePage > 10) && (nombreDePage <= 20))
{
prix = 1.5 * nombreDePage;
}
else
{
prix = 1 * nombreDePage;
}

printf("Pour imprimer %d pages vous devez payer %.2f €\n",


nombreDePage, prix);
printf("\n");

return 0;
}

EXERCICE 3:

#include <stdio.h>
#include <limits.h>

int main()
{

int nombreJour = 0;

printf("\nVeuillez saisir le jour de la semaine : ");


scanf("%d", &nombreJour);

switch (nombreJour)
{
case 1:
printf("nous sommes le Lundi\n");
break;
case 2:
printf("nous sommes le Mardi\n");

3
break;
case 3:
printf("nous sommes le Mercredi\n");
break;
case 4:
printf("nous sommes le Jeudi\n");
break;
case 5:
printf("nous sommes le Vendredi\n");
break;
case 6:
printf("nous sommes le Samedi\n");
break;
case 7:
printf("nous sommes Dimanche\n");
break;
default:
printf("Numéro de jour inconnu\n");
break;
}

printf("\n");

return 0;
}

EXERCICE 4:

#include <stdio.h>
#include <math.h>

int main()
{
float a, b, c, delta, s1, s2;

4
printf("\nVeuillez fournir les coefficients de l'equation
(E)\n");
printf("coefficient (a) : ");
scanf("%f", &a);
printf("coefficient (b) : ");
scanf("%f", &b);
printf("coefficient (c): ");
scanf("%f", &c);

delta = pow(b, 2) - 4 * a * c;

if (delta > 0)
{
s1 = (-b + sqrt(delta)) / (2 * a);
s2 = (-b - sqrt(delta)) / (2 * a);
printf("\n");
printf("Les solutions de l'equation (E) sont S =
{%.2f; %.2f}\n", s1, s2);
printf("\n");
}
else if (delta < 0)
{
printf("\n");
printf("L'equation (E) n'admet pas de solution dans
R\n");
printf("\n");
}
else
{
printf("\n");
printf("L'equation admet une racine double S =
{%.2f}\n", -b / (2 * a));
printf("\n");
}

printf("\n");

5
return 0;
}

EXERCICE 5

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

int main()
{
int x, y, z;

printf("\nVeuillez saisir les 3 entiers\n");


printf("x = ");
scanf("%d", &x);
printf("y = ");
scanf("%d", &y);
printf("z = ");
scanf("%d", &z);

if ((x < y) && (x < z))


{
printf("La valeur %d est la plus petite\n\n", x);
}
else if ((y < x) && (y < z))
{
printf("La valeur %d est la plus petite\n\n", y);
}
else
{
printf("La valeur %d est la plus petite\n\n", z);
}

EXIT_SUCCESS;
}

6
EXERCICE 6:

#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
#include <unistd.h>
#include <sys/time.h>

int main()
{
struct timeval t;
gettimeofday(&t, NULL);
unsigned int seed = t.tv_sec * 100000000 + t.tv_usec;
srand(seed);

int minValue = 1, maxValue = 3;


int value = 0;

int nombremagique = rand() % (maxValue - minValue + 1) +


minValue;
printf("\n\tVeuillez deviner le nombre magique : ");
scanf("%d", &value);

while (nombremagique != value)


{
printf("\n\tVeuillez deviner le nombre magique : ");
scanf("%d", &value);
}

printf("\n\tBravo, le nombre a deviné était %d\n", value);

printf("\n");
return 0;
}

7
EXERCICE 7:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
#include <unistd.h>
#include <sys/time.h>

void jouer();
int demander_nombre();
int deviner_nombre(int nombre);

int main()
{
jouer();

return 0;
}

int deviner_nombre(int nombre)


{
struct timeval t;
gettimeofday(&t, NULL);
unsigned int seed = t.tv_sec * 100000000 + t.tv_usec;
srand(seed);

int minValue = 1, maxValue = 3;


int value = 0;

int nombremagique = rand() % (maxValue - minValue + 1) +


minValue;

if (nombre > nombremagique)


{

8
printf("Le nombre magique est plus petit\n");
value = -1;
}
else if (nombre < nombremagique)
{
printf("le nombre magique est plus grand\n");
value = 1;
}
else
{
printf("Bravo, le nombre magique était %d\n",
nombremagique);
value = 0;
}

return value;
}

int demander_nombre()
{
int nombre = 0;

printf("\nDevinez le nombre généré par l'ordinateur\n");


scanf("%d", &nombre);

return nombre;
}

void jouer()
{
static int nombre;

while (true)
{
nombre = demander_nombre();
int resultat = deviner_nombre(nombre);

printf("\n");

9
if (resultat == 0)
break;
}

EXERCICE 8:

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

int main()
{
int value = 0;

printf("\nSaisit une valeur : ");


scanf("%d", &value);

int compteur = 1;

printf("\nAvec la boucle WHILE\n");


while (compteur <= 10)
{
printf("%d\n", value + compteur);
compteur++;
}
printf("\n");

printf("\n");

return 0;
}

10
EXERCICE 9:

#include <stdio.h>

int main()
{
int value = 0;

printf("\nSaisit une valeur : ");


scanf("%d", &value);

printf("\nAvec la boucle FOR\n");


for (int i = 1; i <= 10; i++)
{
printf("%d \t", value + i);
}

printf("\n\n");

return 0;
}

EXERCICE 10:

#include <stdio.h>

int main()
{
int table;

printf("\n\t\tTable de ");
scanf("%d", &table);

printf("\n");

for (int i = 1; i <= 10; i++)

11
{
printf("\t\t%d * %d = %d\n", table, i, table * i);
}
printf("\n");

return 0;
}

EXERCICE 11:

#include <stdio.h>

int main()
{
int startNumber;
int sum = 0;

printf("\nSaisissez un nombre de départ : ");


scanf("%d", &startNumber);

for (int i = 0; i <= startNumber; i++)


{
sum += i;
}

printf("La somme des %d premiers nombres vaut : %d\n\n",


startNumber, sum);

return 0;
}

EXERCICE 12:

#include <stdio.h>

12
long factorielle(long value);

int main()
{
long value = 0;

printf("\nFactorielle de : ");
scanf("%ld", &value);
printf("\n");
printf("%ld ! = %ld\n\n", value, factorielle(value));

return 0;
}

long factorielle(long value)


{
if (value == 0)
return 1;

return value * factorielle(value - 1);

EXERCICE 13

#include <stdio.h>

#define MAXSIZE 20

int main()
{
int array[MAXSIZE] = {0};
int value = 0;
int position = 0;
int max = 0;

printf("\nVeuillez saisir %d valeurs\n", MAXSIZE);

13
for (int i = 0; i < MAXSIZE; i++)
{
scanf("%d", &value);
array[i] = value;
}

printf("\n");

for (int i = 0; i < MAXSIZE; i++)


{
if (array[i] > max)
{
max = array[i];
position = i;
}
}
printf("max = %d\tindex = %d\t", max, position + 1);
printf("\n");
return 0;
}

EXERCICE 14

#include <stdio.h>
#define MAXSIZE 10000

int main()
{
int array[] = {0};
int value = -1;
int counter = 0;
int position = 0;
int max = 0;
int totalValue = 0;

14
printf("\nSaisit une suite de valeurs entières (appuyez
sur 0 pour quitter) \n");

while((value != 0) && (totalValue < MAXSIZE))


{
scanf("%d", &value);
array[counter++] = value;
}

if (value == 0)
{
totalValue = counter - 1;
}

printf("\n");
for (int i = 0; i < totalValue; i++)
{
if (max < array[i])
{
max = array[i];
position = i;
}
}

printf("\nLa valeur maximale %d se trouve à la position


n°%d\n\t", max, position + 1);
printf("\n");

return 0;
}

EXERCICE 15:

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

15
#include <ctype.h>
#include <string.h>

#define MAXSIZE 10000

void cash_back_brute_force(int goldCoins[], size_t count, int


cash_back);
void sort_array(int *array, size_t size);

int main()
{
int price[MAXSIZE] = {0};
int value = 1;
int counter = 0;
int position = 0;
int max = 0;
int totalValue = 0;
int cash_back = 0;

printf("\nSaisissez une suite de pièces de monnaie


(appuyez sur 0 pour quitter) \n");

while((value != 0) && (totalValue < MAXSIZE) && (value >


0))
{
scanf("%d", &value);
price[counter++] = value;
}

if (value == 0)
{
totalValue = counter - 1;

printf("\nCombien devez-vous rendre comme monnaie ? :


");
scanf("%d", &cash_back);
}

16
cash_back_brute_force(price, totalValue, cash_back);

return 0;
}

void cash_back_brute_force(int goldCoins[], size_t count, int


cash_back)
{
int *coefficient;
coefficient = (int *)malloc(count * sizeof(int));

if (coefficient == NULL)
{
exit(EXIT_FAILURE);
}

for (size_t i = 0; i < count; i++)


{
*(coefficient + i) = 0;
}

while ((coefficient[0] * goldCoins[0]) <= cash_back)


{

int amount = 0;

for (size_t i = 0; i < count; i++)


{
amount += (*(coefficient + i)) * goldCoins[i];
}

printf("montant %d\n", amount);

if (amount == cash_back)
{
printf("Combinaison trouvée\n");

17
for (size_t i = 0; i < count; i++)
{
printf("[%d * %d] ", coefficient[i],
goldCoins[i]);
}

break;
}
else{
printf("Combinaison non trouvée !!!\n");

for (size_t i = 0; i < count; i++)


{
printf("[%d * %d] ", coefficient[i],
goldCoins[i]);
}

coefficient[count - 1] += 1;
int i = count - 1;

while (amount > cash_back)


{

coefficient[i] = 0;
coefficient[i - 1] += 1;

for (size_t i = 0; i < count; i++)


{
amount += coefficient[i] * goldCoins[i];
}

i -= 1;

if( i == 0 )
break;

18
}

free(coefficient);
}

void sort_array(int *array, size_t size)


{
int i, j, key = 0;

for (j = 1; j < (int) size; j++)


{
key = *(array + j);
i = j - 1;

while ((i >= 0) && (*(array + i) < key))


{
*(array + i + 1) = *(array + i);
i--;
}

*(array + i + 1) = key;
}

EXERCICE 16

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

#define MAX 100

19
int main()
{
char word[MAX] = {};
char choice = '\0';
int index = 0;
int letterAcounter = 0;

printf("\n");
printf("Saisissez un caractère (* pour quitter)\n");

while ((choice != '*') && (index < MAX))


{
scanf("%c", &choice);
word[index++] = choice;
}

printf("\nCaractères saisies : \n");


for (int i = 0; i < strlen(word); i++)
{
printf("%c", word[i]);

if (tolower(word[i]) == tolower('A'))
{
letterAcounter++;
}
}

printf("\n");

printf("Vous avez saisit %d occurences du caractère << a


>>\n", letterAcounter);

printf("\n");

return 0;
}

20
EXERCICE 17:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <stdbool.h>
#include <math.h>

#define BASE 2
#define MAXSIZE 100

void binary_to_decimal();
bool is_binary_pattern(char code[]);
int decimal_value(char code[]);

int main()
{
binary_to_decimal();

return 0;
}

void binary_to_decimal()
{
int value = 0;
char code[MAXSIZE] = "";

printf("\n");

printf("Veuillez fournir uniquement un motif binaire


positif\t");
scanf("%[^\n]", code);

if (is_binary_pattern(code))
{

21
value = decimal_value(code);
printf("%s --> %d\t\n", code, value);

}
else{
printf("Veuillez fournir un motif binaire valide
!!!\n");
}

printf("\n");

bool is_binary_pattern(char code[])


{
unsigned long counter = 0;
int eachValue = 0;

for (size_t i = 0; i < strlen(code); i++)


{
eachValue = code[i] - '0';

bool checked = (eachValue >= 0) && (eachValue <= 1);

if (checked)
counter++;
else
exit(EXIT_FAILURE);
}

return counter == strlen(code); // on vérifie si le nombre


de fois correspondant à (TRUE) correspond au nombre d'éléments
dans la chaine ( s'il y a 5 elements donc chacun de ses
elements doit être inférieur à 2 pour considérer la chaîne
comme étant un motif binaire valide)
}

22
int decimal_value(char code[])
{
int decrease_counter;
int sum = 0;
int value = 0;

if (is_binary_pattern(code))
{
decrease_counter = strlen(code) - 1;

for (size_t i = 0; i < strlen(code); i++)


{
value = code[i] - 48;
sum += value * pow(BASE, decrease_counter);
decrease_counter--;
}
}
else{

exit(EXIT_FAILURE);
}

return sum;
}

EXERCICE 18
18.1
#include <stdio.h>

int main()
{
int value;
int sum = 0;
int i = 0;

printf("Saisit un nombre : ");

23
scanf("%d", &value);

while (i <= value)


{
sum += i;
i++;
}

printf("La somme des nombres vaut : %d\n", sum);

return 0;
}

18.2
#include <stdio.h>

int main()
{
int array[] = { 2, -9, 3, 1, 0};
int min = 0;
int max = 0;

for (size_t i = 0; i < sizeof(array) / sizeof(array[0]);


i++)
{
if (array[i] < min)
{
min = array[i];
}

if (array[i] > max)


{
max = array[i];
}
}

24
printf("Valeur minimale : %d\tValeur maximale : %d\n",
min, max);

return 0;
}

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

int main()
{
int dividende = 0, divisor = 0;
int quotient = 0, reste = 0;

printf("\n\tVeuillez saisir le dividende et le


diviseur\n");
printf("\tdividende : ");
scanf("%d", &dividende);
printf("\tdiviseur : ");
scanf("%d", &divisor);

if (divisor == 0)
{
printf("\nDivision par %d impossible\n", divisor);
exit(1);
}

div_t result = div(dividende, divisor);

quotient = [Link];
reste = [Link];

printf("\n\t%d = %d * %d + %d ( 0 <= %d <= %d )\n",


dividende, divisor, quotient, reste, reste, divisor);

25
printf("\n");

return 0;
}

18.4
#include <stdio.h>

int main()
{

int base = 0, variant = 0, counter = 1, sum = 0;


char sign = 'x';

printf("\nProduit de\n");
printf("\n");

scanf("%d", &base);
printf("%-5c\n", sign);
scanf("%d", &variant);

printf("--------\n");

while (counter <= variant)


{
sum += base;
counter++;
}

printf("%d\n",sum);
printf("\n");

return 0;
}

26
18.5
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

bool isDivisible(int a, int b);


void test();

int main()
{

test();

return 0;
}

bool isDivisible(int a, int b)


{
return div(a, b).rem == 0;
}

void test()
{
int dividende = 0, divisor = 0;

printf("\n\tDividende : ");
scanf("%d", &dividende);

printf("\n\tDiviseur : ");
scanf("%d", &divisor);

if (divisor == 0)
{
printf("\n\tDivision par %d impossible\n", divisor);
exit(1);
}

27
else
{
if (isDivisible(dividende, divisor))
{
printf("\n\t%d divise %d\n", dividende, divisor);

}else{

printf("\n\t%d ne divise pas %d\n", dividende,


divisor);
}
}

printf("\n");
}

18.6

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

int main()
{
int value;

printf("Veuillez saisir un nombre : ");


scanf("%d", &value);

printf("Les diviseurs de %d sont\n", value);

for (int i = 0; i <= value; i++)


{
if (div(value, i).rem == 0)
{
printf("%d\t\n", i);
}

28
}

return 0;
}

18.7
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>

bool isPrime(int value);


bool isPrime_second_version(int value);
int factorial(int value);
int dividende(int value);

int main()
{
int value;

printf("Veuillez saisir un nombre : ");


scanf("%d", &value);

if (isPrime_second_version(value))
{
printf("%d est un nombre premier\n", value);
}
else
{
printf("%d n'est pas un nombre premier\n", value);
}

return 0;
}

/** première version */


bool isPrime(int value)

29
{
bool primeNumber = false;

if (value <= 1)
return primeNumber;

for (int i = 2; i <= sqrt(value); i++)


{
if (div(value, i).rem == 0)
{
return primeNumber;
}
}

return !primeNumber;
}
/**--------------------------------------- */

/** seconde version */


bool isPrime_second_version(int value)
{
return div(dividende(value), value).rem == 0;
}

int factorial(int value)


{
if(value <= 0)
return 1;

return value * factorial(value - 1);


}

int dividende(int value)


{

30
return factorial(value - 1) + 1;
}
/**--------------------------------------- */

18.8
#include <stdio.h>
#include <string.h>

int sumOfEachValue(int value);

int main()
{
int value = 0;

printf("\n\tVeuillez saisir un nombre : ");


scanf("%d", &value);

printf("\n\tLa somme des chiffres de %d vaut %d\n\n",


value, sumOfEachValue(value));

return 0;
}

int sumOfEachValue(int value)


{
char valueStr[] = "";
int sum = 0;

sprintf(valueStr, "%d", value);

for (size_t i = 0; i < strlen(valueStr); i++)


{
sum += valueStr[i] - 48;
}

return sum;

31

Vous aimerez peut-être aussi