J'ai pondu un code qui passe pour la moitié des tests. Pour l'autre moitié, ça ne passe pas. Pourquoi je ne sais pas. Je ne sais pas non plus ce qui est injecté dans les tests. Avec les miens ça passe. Voici mon code :
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main()
{
char stringToRead[10001];
int count[26][2] = {0};
fgets(stringToRead, sizeof(stringToRead), stdin);
int lenOfReading = strlen(stringToRead);
int maxCount = 0, maxLetter = 0;
for (int i = 0; i < lenOfReading; i++)
{
if(isalpha(stringToRead[i]))
{
int thisChar = tolower(stringToRead[i]);
count[thisChar][0] = thisChar;
count[thisChar][1] += 1;
if (count[thisChar][1] > maxCount)
{
maxCount = count[thisChar][1];
maxLetter = count[thisChar][0];
}
}
}
printf("%c", toupper(maxLetter));
}
Cool merci j'ai compris le principe. Par contre pourquoi des unsigned char ?
isalpha() reçoit un int, il faut forcer le paramètre en unsigned char sinon dans le cas où les char seraient signés les caractères -128 à -1 posent un problème. Explications ici.
Et pour rendre cela plus propre, avec la proposition de Fvirtman, tu supprimes la ligne 11 et les lignes 21 à 25, et tu ajoutes avant l'accolade finale
int p=0;
for(int i=1;i<26;i++)
if(count[i]>count[p])
p=i;
printf("La lettre la plus présente est %c (%d x)",p+'a',count[p]);
- Edité par edgarjacobs 28 décembre 2021 à 0:22:28
Il y a ceux qui font des sauvegardes, et ceux qui n'ont pas encore eu d'incident....
Si on n'est pas avare de mémoire, on peut faire plus rapide: - #include <stdio.h> #include <ctype.h> int main(void) { unsigned char stringToRead[10001]; fgets(stringToRead, 10001, stdin); int count[256] = { 0 }; for(unsigned char *c = stringToRead; *c; c++) count[tolower(*c)]++; int p = 'a'; for(int i='a'+1; i<='z'; i++) if(count[i] > count[p]) p = i; printf("Le caractère '%c' est le plus fréquent (%d)\n", p, count[p]); return 0; }
Le Tout est souvent plus grand que la somme de ses parties.
En recherche d'emploi.
En recherche d'emploi.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Il y a ceux qui font des sauvegardes, et ceux qui n'ont pas encore eu d'incident....
Le Tout est souvent plus grand que la somme de ses parties.