Programme en c qui permet le calcul d'entropie
Résolu
chuupa8
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
bonjour! je veux faire un programme en c qui me permettra de calculer l'entropie d'un texte ( ce programme calculera le nombre de caractere du texte, la frequence d'apparition de chaque lettre, la probabilité d'apparition de chaque lettre et enfin l'entropie)
A voir également:
- Programme en c qui permet le calcul d'entropie
- Calcul moyenne excel - Guide
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
2 réponses
Nous ne feront pas votre exercice à votre place.
Merci de décrire précisément votre problème et en postant le code déjà réalisé.
Cliquez ici pour des conseils d'écriture des messages et ici concernant les devoirs scolaires ou PFE.
Pour poster votre code, merci de penser à la coloration syntaxique.
Merci de décrire précisément votre problème et en postant le code déjà réalisé.
Cliquez ici pour des conseils d'écriture des messages et ici concernant les devoirs scolaires ou PFE.
Pour poster votre code, merci de penser à la coloration syntaxique.
Bonjour,
Il suffit de comptabiliser chaque lettre dans la boucle par :
Il suffit de comptabiliser chaque lettre dans la boucle par :
if ( *str >= 'a' && *str <= 'z' ) nb_letters[*str - 'a']++; else if ( *str >= 'A' && *str <= 'Z' ) nb_letters[*str - 'A']++;
Dalfab regarde ca ne marche toujour pas quand je ais l'execution tous les caracteres sont a zero
#include <stdio.h>
#include <stdlib.h>
void count(const char* str, int nb_letters[26])
{
while (*str != '\0')
{
// remplir nb_letters correctement ici.
++str;
}
}
void print(int nb_letters[26])
{
char c = 0;
for (c ='a';c <='z'; c++)
printf("%c => %d\n", c, nb_letters[c - 'a']);
// c - 'a'permet de convertir un code ascii en numéro. Exemple: 'a' - 'a' => 0, 'b' - 'a' => 1, etc...
}
int main()
{ int c;
char ch[50] = {0};
int nb_letters[26] = {0};
printf("donnez une chaine ch\n");
scanf("%s",ch);
if (c >= 'a' && c <= 'z' )
nb_letters[c - 'a']++;
else if ( c >= 'A' && c <= 'Z' )
nb_letters[c - 'A']++;
count(ch, nb_letters);
print(nb_letters);
system("PAUSE");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
void count(const char* str, int nb_letters[26])
{
while (*str != '\0')
{
// remplir nb_letters correctement ici.
++str;
}
}
void print(int nb_letters[26])
{
char c = 0;
for (c ='a';c <='z'; c++)
printf("%c => %d\n", c, nb_letters[c - 'a']);
// c - 'a'permet de convertir un code ascii en numéro. Exemple: 'a' - 'a' => 0, 'b' - 'a' => 1, etc...
}
int main()
{ int c;
char ch[50] = {0};
int nb_letters[26] = {0};
printf("donnez une chaine ch\n");
scanf("%s",ch);
if (c >= 'a' && c <= 'z' )
nb_letters[c - 'a']++;
else if ( c >= 'A' && c <= 'Z' )
nb_letters[c - 'A']++;
count(ch, nb_letters);
print(nb_letters);
system("PAUSE");
return 0;
}
int main() { int c; char ch[50] = {0}; int nb_letters[26] = {0}; printf("donnez une chaine ch\n"); scanf("%s",ch); if (c >= 'a' && c <= 'z' ) nb_letters[c - 'a']++; else if ( c >= 'A' && c <= 'Z' ) nb_letters[c - 'A']++; count(ch, nb_letters); print(nb_letters); system("PAUSE"); return 0; }
Tu ne remplis jamais c, comment tu veux que ta condition fonctionne?
#include <stdio.h>
#include <stdlib.h>
void count(const char* str, int nb_letters[26])
{
while (*str != '\0')
{
++str;
}
}
void print(int nb_letters[26])
{
char c = 0;
for (c ='a';c<='z';c++)
printf("%c => %i\n", c, nb_letters[c - 'a']);
}
int main()
{
char ch[50] = {0};
int nb_letters[26] = {0};
printf("donnez une chaine ch\n");
scanf("%s",ch);
count(ch, nb_letters);
print(nb_letters);
system("PAUSE");
return 0;
}