cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
19 mai 2009 à 15:56
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
19 mai 2009 à 16:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 19 mai 2009 à 16:51
sa => ça
Ca ne génère pas de mot, mais une suite de lettre.
Le code peut être simplifié:
int a, b, c, d, e;
FILE* fichier = fopen("liste.txt","w");
for (a = 'a'; a <= 'z'; ++a)
for (b = 'a'; b <= 'z'; ++b)
for (c = 'a'; c <= 'z'; ++c)
for (d = 'a'; d <= 'z'; ++d)
for (e = 'a'; e <= 'z'; ++e)
fprintf(fichier,"%c%c%c%c%c\n", a, b, c, d, e);
fclose(fichier);
Comme tu le vois, il y a vraiment peu de ligne. Un code source doit être plus fournit pour être posté, sinon c'est plus un snippet qu'autre chose...
Une petite amélioration (choix de l'alphabet, de la taille de mots générés):
int main(void)
{
if (!generateLetters("liste.txt", "abc", 5))
{
printf("Erreur d'ouverture !\n");
return 1;
}
return 0;
}
roman492
Messages postés1Date d'inscriptionjeudi 21 septembre 2006StatutMembreDernière intervention19 mai 2009 19 mai 2009 à 16:18
je l'ai mis justement car en cherchant une source comme celle ci je suis tombé sur pleins de sources qui faisaient la meme chose au final en étant plus compliquées...
donc si sa peut permettre d'accelerer la vitesse de generation des mots et la simplicité du code bin je serai ravi d'avoir aidé les gens que sa interessent !
mais merci pour ton com' tres instructif :)
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 19 mai 2009 à 15:56
Bof...
C'est juste des boucles imbriquées, pas de quoi en faire une source...
19 mai 2009 à 16:51
Ca ne génère pas de mot, mais une suite de lettre.
Le code peut être simplifié:
int a, b, c, d, e;
FILE* fichier = fopen("liste.txt","w");
for (a = 'a'; a <= 'z'; ++a)
for (b = 'a'; b <= 'z'; ++b)
for (c = 'a'; c <= 'z'; ++c)
for (d = 'a'; d <= 'z'; ++d)
for (e = 'a'; e <= 'z'; ++e)
fprintf(fichier,"%c%c%c%c%c\n", a, b, c, d, e);
fclose(fichier);
Comme tu le vois, il y a vraiment peu de ligne. Un code source doit être plus fournit pour être posté, sinon c'est plus un snippet qu'autre chose...
Une petite amélioration (choix de l'alphabet, de la taille de mots générés):
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void generateLetters_rec(FILE* file, const char* alp,
int pos, int size, char* buffer)
{
const char* c;
if (pos >= size)
{
fprintf(file,"%s\n", buffer);
return;
}
for (c = alp; c && *c; ++c)
{
buffer[pos] = *c;
generateLetters_rec(file, alp, pos + 1, size, buffer);
}
}
int generateLetters(const char* filename, const char* alp, int size)
{
FILE* file = fopen(filename,"w");
char* buffer;
if (!file)
return 0;
buffer = malloc((size + 1) * sizeof (char));
buffer[size] = 0;
generateLetters_rec(file, alp, 0, size, buffer);
free(buffer);
fclose(file);
return 1;
}
int main(void)
{
if (!generateLetters("liste.txt", "abc", 5))
{
printf("Erreur d'ouverture !\n");
return 1;
}
return 0;
}
19 mai 2009 à 16:18
donc si sa peut permettre d'accelerer la vitesse de generation des mots et la simplicité du code bin je serai ravi d'avoir aidé les gens que sa interessent !
mais merci pour ton com' tres instructif :)
19 mai 2009 à 15:56
C'est juste des boucles imbriquées, pas de quoi en faire une source...