Aller au contenu

Variables et Constantes#

Variables#

06 - 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;
}

01 - 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.