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.
- On choisit le nombre de caractères
- 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.