Différences entre versions de « C algo »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
 
(3 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
= TD1 =
+
* [[C_algo_td1| TD1: Printf, scanf et les boucles conditionnelles]]
== Exercice 1 ==
+
* [[C_algo_td2| TD2: For, While et les tableaux]]
Écrire un programme qui demande la saisie d’une lettre de l’alphabet et qui affiche la lettre majuscule
+
* [[C_algo_td3| TD3: Manipulation des tableaux, tri, recherche]]
correspondante. Il est vivement recommandé d’utiliser les propriétés du codage ASCII.
+
* [[C_algo_td4| TD4: Les matrices]]
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
+
* [[C_algo_td5| TD5: Les fonctions ou sous-programmes]]
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
#include <ctype.h>
 
 
 
int main(void) {
 
char c;
 
printf("Veuillez entrer une minuscule: ");
 
scanf("%c", &c);
 
printf("La majuscule correspondante est %c", toupper(c));
 
return EXIT_SUCCESS;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 2 ==
 
Écrire un programme qui convertit un montant en fonction d’un taux de change. Les modalités d’affichage sont les suivantes :
 
<pre>
 
Entrez le montant a convertir : 12
 
Le montant a convertir est : 12.000000
 
 
 
Entrez le taux de change a appliquer : 2
 
Le taux de change a appliquer est : 2.000000
 
 
 
Le montant converti est : 24.000000
 
</pre>
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main(void) {
 
float m, t;
 
printf("Entrez le montant a convertir : ");
 
scanf("%f", &m);
 
printf("Le montant a convertir est : %f\n\n", m);
 
printf("Entrez le taux de change a appliquer :  ");
 
scanf("%f", &t);
 
printf("Le taux de change a appliquer est :  %f\n\n", t);
 
printf("Le montant converti est :  %f", m*t);
 
return EXIT_SUCCESS;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 3 ==
 
 
 
Écrire un programme qui permet de calculer l’IMC (Indice de Masse Corporelle) d’une personne adulte selon la formule suivante :
 
 
 
<center><math>IMC={masse \over taille^2}</math></center>
 
 
 
Les modalités d’affichage sont les suivantes :
 
<pre>
 
Entrez votre taille (en metres) : 1.75
 
Votre taille est : 1.75
 
 
 
Entrez votre poids : 65
 
Votre poids est : 65.00
 
 
 
Votre IMC est : 21.224489
 
</pre>
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main(void) {
 
float t, p;
 
printf("Entrez votre taille (en metres) :: ");
 
scanf("%f", &t);
 
printf("Votre taille est :  %f\n\n", t);
 
printf("Entrez votre poids :  ");
 
scanf("%f", &p);
 
printf("Votre poid est :  %f\n\n", p);
 
printf("Votre IMC est :  %f", p/(t*t));
 
return EXIT_SUCCESS;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 4 ==
 
 
 
Écrire un programme qui demande la somme d’argent souhaitée et détermine si le retrait est autorisé ou non. Le retrait est refusé dans le cas où la somme demandée dépasse 100. Le message sera adapté selon la situation : Retrait accepté ou Retrait refusé.
 
 
 
Exemple :
 
<pre>
 
Bonjour, entrez la somme demandee : 130
 
La somme demandee est : 130
 
Retrait refuse
 
</pre>
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main(void) {
 
float s;
 
printf("Bonjour, entrez la somme demandee : ");
 
scanf("%f", &s);
 
printf("La somme demandee est : %f\n\n", s);
 
if (s > 100) {
 
printf("Retrait refuse");
 
return EXIT_FAILURE;
 
}
 
printf("Retrait accepté");
 
return EXIT_SUCCESS;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 5 ==
 
Modifier le programme qui demande la saisie d’une lettre de l’alphabet et qui affiche la lettre majuscule correspondante afin qu’il vérifie que le caractère saisi au clavier est bien une lettre minuscule. Dans un second temps, on pourra modifier encore le programme pour que celui-ci affiche la lettre minuscule correspondant à une lettre majuscule qui aurait été saisie.
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
#include <ctype.h>
 
 
 
int main(void) {
 
char c;
 
printf("Veuillez entrer une lettre : ");
 
scanf("%c", &c);
 
if(c >= 'a' && c <= 'z'){
 
printf("La majuscule correspondante est %c", toupper(c));
 
}else if(c >= 'A' && c <= 'Z'){
 
printf("La minuscule correspondante est %c", tolower(c));
 
}else{
 
printf("Le caractère saisi n'est pas une lettre !");
 
return EXIT_FAILURE;
 
}
 
return EXIT_SUCCESS;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 6 ==
 
Écrire un programme qui demande la saisie des coefficients dans <math>\R</math> d’une équation du second degré
 
<math>{ax^2 + bx + c} = 0</math>, et qui indique s’il existe des solutions.
 
 
 
Pour rappel: <math>\Delta = b^2 - 4ac.</math>
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main(void) {
 
float a, b, c, delta;
 
printf("-- Résolution des equations du second degre -- \n");
 
printf("Veuillez entrer la variable a : ");
 
scanf("%f", &a);
 
printf("Veuillez entrer la variable b : ");
 
scanf("%f", &b);
 
printf("Veuillez entrer la variable c : ");
 
scanf("%f", &c);
 
delta = b*b - 4*a*c;
 
printf("Delta vaut b*b-4*a*c soit : %f\n", delta);
 
if(delta > 0){
 
printf("Il y a deux solutions");
 
}else if(delta == 0){
 
printf("Il y a une solution");
 
}else{
 
printf("Il n'y a pas de solution dans R");
 
}
 
return EXIT_SUCCESS;
 
}
 
</source>
 
</div>
 
 
 
= TD2 =
 
== Exercice 1 ==
 
Déroulez sous la forme d’un tableau le programme suivant :
 
<pre>
 
VAR
 
    a : entier
 
DEBUT
 
    a <- 1
 
    TantQue (a < 4) Faire
 
        Ecrire a
 
        a <- a + 1
 
    FinTantQue
 
FIN
 
</pre>
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
int main(){
 
    int i, a = 1;
 
    int tab[3];
 
    while(a < 4){
 
        tab[i] = a;
 
        a++;
 
        i++;
 
    }
 
    for (i=0; i<3; i++){
 
        printf("%d \n", tab[i]);
 
    }
 
    return 0;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 2 ==
 
Déroulez sous la forme d’un tableau le programme suivant :
 
<pre>
 
VAR
 
    a, b : entiers
 
DEBUT
 
    a <- 1
 
    b <- 11
 
    Repeter
 
        b <- b - 4
 
        a <- a + 1
 
    TantQue (b >= 0)
 
    Ecrire a, b
 
FIN
 
</pre>
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main()
 
{
 
    int a = 1, b = 11, y = 0, z = 0;
 
    int tab_a[3], tab_b[3];
 
    do{
 
      a++;
 
      b -= 4;
 
      tab_a[y] = a;
 
      tab_b[y] = b;
 
      y++;
 
    }while (b>=0);
 
    for(z = 0; z < y; z++){
 
        printf("a = %d et b = %d\n", tab_a[z], tab_b[z]);
 
    }
 
    return 0;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 3 ==
 
Déroulez sous la forme d’un tableau le programme suivant :
 
<pre>
 
VAR
 
    a, b, n : entiers
 
    DEBUT
 
    Lire n
 
    a <- 5
 
    b <- 2
 
    Pour b De 1 A n Faire
 
        a <- a * b
 
        b Suivant
 
    FinPour
 
    Ecrire a, b
 
FIN
 
</pre>
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main()
 
{
 
    int a = 5, b = 2, n = 0, z = 0;
 
    printf("Entrez la taille du tableau: \n");
 
    scanf("%d", &n);
 
    int tab_a[n], tab_b[n];
 
    for(b = 1; b < n; b++){
 
      a = a*b;
 
      tab_a[z] = a;
 
      tab_b[z] = b;
 
      z++;
 
    }
 
    for(b = 0; b <= z; b++){
 
        printf("a = %d et b = %d\n", tab_a[b], tab_b[b]);
 
    }
 
    return 0;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 4==
 
Écrire un programme qui affiche des étoiles selon divers modes:
 
* n étoiles sur la même ligne;
 
* n étoiles en allant à la ligne à chaque fois
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main()
 
{
 
    int i = 0, n;
 
    char x = 'n';
 
    printf("Doit-on sauter une ligne ? (O/n) ");
 
    scanf("%c", &x);
 
    printf("Combien voulez-vous d'étoile ? ");
 
    scanf("%d", &n);
 
    for(i = 0; i < n; i++){
 
        printf("*");
 
        if(x == 'O'){
 
            printf("\n");
 
        }
 
    }
 
    return 0;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 5 ==
 
On souhaite réaliser un programme qui permet de saisir un nombre positif. Une vérification sera effectuée afin de refuser les nombres négatifs:
 
<pre>
 
Saisissez un nombre positif : -5
 
Saisissez un nombre positif : -3
 
Saisissez un nombre positif : 2
 
Le nombre saisi est 2.
 
</pre>
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main()
 
{
 
    int a = -1;
 
    while(a < 0){
 
        printf("Saisissez un nombre positif : ");
 
        scanf("%d", &a);
 
        if(a > 0){
 
            printf("Le nombre saisi est %d", a);
 
        }
 
    }
 
    return 0;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 6 ==
 
On souhaite améliorer le programme précédent afin que le message ne soit pas le même lors de la demande suite à une erreur de saisie:
 
<pre>
 
Saisissez un nombre positif : -5
 
Saisie incorrecte, recommencez votre saisie : -3
 
Saisie incorrecte, recommencez votre saisie : 2
 
Le nombre saisi est 2.
 
</pre>
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main()
 
{
 
    int a = -1;
 
    printf("Saisissez un nombre positif : ");
 
    while(a < 0){
 
        scanf("%d", &a);
 
        if(a > 0){
 
            printf("Le nombre saisi est %d", a);
 
        }else{
 
            printf("Saisie incorrecte, recommencez votre saisie : ");
 
        }
 
    }
 
    return 0;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 7 ==
 
On souhaite réaliser un programme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la réponse convienne.
 
 
 
En cas de réponse supérieure à 20, on fera apparaître un message : « Plus petit ! », et inversement, « Plus grand ! » si le nombre est inférieur à 10.
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main()
 
{
 
    int a;
 
    while(a < 10 || a > 20){
 
        printf("Saisissez un nombre entre 10 et 20 : ");
 
        scanf("%d", &a);
 
        if(a > 20){
 
            printf("Plus petit !\n");
 
        }else if (a < 10){
 
            printf("Plus grand !\n");
 
        }else{
 
            printf("Le nombre est: %d", a);
 
        }
 
    }
 
    return 0;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 8 ==
 
Écrire un programme qui demande un nombre de départ, et qui calcule la somme des entiers jusqu’à ce nombre.
 
 
 
Par exemple, si l’on entre 5, le programme doit calculer : 1 + 2 + 3 + 4 + 5 et afficher 15.
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main()
 
{
 
    int a, i, res = 0;
 
    printf("Saisissez un nombre: ");
 
    scanf("%d", &a);
 
    for(i = 1; i <= a; i++){
 
        res += i;
 
    }
 
    printf("Le résultat est: %d", res);
 
    return 0;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 9 ==
 
Écrire un programme qui demande successivement 5 nombres à l’utilisateur, et qui indique lequel de ces nombres est le plus grand.
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main()
 
{
 
    int a, i, res = 0;
 
    for(i = 0; i < 5; i++){
 
        printf("Saisissez le nombre %d: ",i+1);
 
        scanf("%d", &a);
 
        if(res < a){
 
            res = a;
 
        }
 
    }
 
    printf("Le plus grand nombre est: %d", res);
 
    return 0;
 
}
 
</source>
 
</div>
 
== Exercice 10 ==
 
Modifiez ensuite le programme pour qu’il affiche aussi la position de ce nombre dans la séquence de nombres saisis.
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main()
 
{
 
    int a, i, res = 0, index;
 
    for(i = 0; i < 5; i++){
 
        printf("Saisissez le nombre %d: ",i+1);
 
        scanf("%d", &a);
 
        if(res < a){
 
            res = a;
 
            index = i+1;
 
        }
 
    }
 
    printf("Le plus grand nombre est: %d en position %d", res, index);
 
    return 0;
 
}
 
</source>
 
</div>
 
 
 
== Exercice 11 ==
 
Réécrire le programme précédent en prenant en compte cette fois-ci que le nombre de nombres saisis n’est pas connu par avance.
 
 
 
L’utilisateur arrête la saisie en entrant la valeur zéro.
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
 
int main()
 
{
 
    int a, i=1, res = 0, index;
 
    while (a != 0){
 
        printf("Saisissez le nombre %d: ",i);
 
        scanf("%d", &a);
 
        if(res < a){
 
            res = a;
 
            index = i;
 
        }
 
        i++;
 
    }
 
    printf("Le plus grand nombre est: %d en position %d", res, index);
 
    return 0;
 
}
 
</source>
 
</div>
 

Version actuelle datée du 19 mars 2014 à 14:32