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.