Les bases de la programmation - Applications

La programmation consiste à faire exécuter des tâches par la machine. Comment donner des instructions à la machine dans un langage qu'elle comprend, c'est l'objet de la programmation. Dans cette formation, nous apprendrons à créer des programmes qui seront exécutées par la machine.

Problème 1 - Générateur de mot de passe#

Énoncé
Écrire un programme qui permet de générer des mots de passe aléatoires. Générateur de mot.

  1. On choisit le nombre de caractères
  2. On choisit les caractères au hazard

Solution

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

#define MIN 8
#define MAX 15
#define BEGIN 48 // code ASCII du caractère 0
#define END 122 // code ASCII du caractère z

char TirerUnCaractere(void)
{
    int code;
    char car;

    // On tire un nombre entre 
    code = rand()%(END-BEGIN+1)+BEGIN;
    // Conversion du code en caractère
    car = code;

    return car;
}

void GenererPassword()
{
    char password[MAX]="";
    int i,n, lg;

    // On tire un nombre entre 8 et 15, taille du mot de passe
    n = rand()%(MAX-MIN+1)+MIN;

    for(i=0;i<n;i++)
    {
        password[i] = TirerUnCaractere();
    }
    printf("Longueur: %d\tMot de passe: %s\n", n, password);
}

int main()
{
    int i;

    srand(time(NULL));

    printf("******************************\n");
    printf("* Générateur de mot de passe *\n");
    printf("******************************\n");

    for(i=0;i<10;i++)
    {
        GenererPassword();
    }
    printf("** FIN **\n");

    return 0;
}

Problème 2 - Le problème du Palindrome#

Énoncé
Écrire un programme qui demande à l'utilisateur de saisir une chaîne de caractère et qui lui indique ensuite si la chaîne de caractère est un palindrome ou non.

Rappel: Un palindrome de lettres est une figure de style désignant un mot ou une phrase dont l'ordre des lettres reste le même qu'on les lise de gauche à droite ou de droite à gauche, comme dans la phrase « Ésope reste ici et se repose » ou encore « La mariée ira mal » à un accent près.

Solution
Nous allons écrire une fonction EstPalindrome qui prend en entrée une chaîne de caractères et qui évalue s'il s'agit d'un palindrome ou non.

int EstPalindrome(char *chaine)
{
    int oui=1, n, i;

    n=strlen(chaine);
    i=0;
    while(oui && i<n)
    {
        if(*(chaine+i)!=(*(chaine+n-1-i)))
        {
            oui=0;
        }
        i++;
    }
    return oui;
}

Programme complet

// Bibliothèques
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// Constantes
#define MAX 100

// Fonctions
void SaisirChaineDeCaracteres(char *chaine)
{
    printf(">>>");
    scanf("%s", chaine);
}

int EstPalindrome(char *chaine)
{
    int oui=1, n, i;

    n=strlen(chaine);
    i=0;
    while(oui && i<n)
    {
        if(*(chaine+i)!=(*(chaine+n-1-i)))
        {
            oui=0;
        }
        i++;
    }
    return oui;
}

int main()
{
    // Prototypes
    void SaisirChaineDeCaracteres(char *);
    int EstPalindrome(char *);

    char motLu[MAX];

    printf("Entrer une chaîne de caractère\n");
    SaisirChaineDeCaracteres(motLu);

    printf("Test Palindrome: %d\n", EstPalindrome(motLu));

    return 0;
}


Par convention, on écrit les noms des constantes en majuscules.

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue