Bonjour a tous
aujourd'hui je cherche un code en C
pour compte la fréquences des lettres dans un fichier donne
j'ai deja essayer de moi même mais je ny arrive pas
savez vous m'aider ?
merci
Bonjour a tous
aujourd'hui je cherche un code en C
pour compte la fréquences des lettres dans un fichier donne
j'ai deja essayer de moi même mais je ny arrive pas
savez vous m'aider ?
merci
Montres-nous ou tu coinces, et nous t'aiderons avec plaisir.
Mais nous ne ferons pas le boulot pour toi.
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
j'avoue que j'aimerais bien le code ça me sauverait mon année, clairement.
Voici mon code « si on peu appeler ça un code » :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #include <stdio.h> #include <stdlib.h> int main(int argc, char ** argv){ char val; int compteur_e=0; FILE * fichier; fichier = fopen("test.txt", "r"); if (fichier != NULL){ while ((val = fgetc(fichier)) != EOF){ if (val == 'e'){ compteur_e ++; } } fclose(fichier); } else{ printf("Impossible d'ouvrir ce fichier"); } printf("Il y a %d e dans ce texte",compteur_e); return 0; }
Sauf que j'aimerais qu'il lise toutes les lettres et qu'il m'affiche la fréquence des lettres dans un fichier CSV et j'y arrive pas !!
Au secours !
le code la ne cherche que les E dans un fichier txt je sais ^^
cetai un test
Premièrement, il faut utiliser les balises code (le # dans l'éditeur de post), et il te faut indenter ton code pour qu'il soit plus lisible.
Comme le disait Kannagi, il te faut créer un tableau pour toutes les lettres .
Une lettre, c'est un code ASCII. Un code ASCII est une valeur numérique de 0 à 255. La lettre "a" aura la valeur 97 (0x61 en hexadecimal)
Il te suffit d'incrémenter la valeur la case 97 du tableau.
Une fois le fichier parcouru, tu interroges la case correspondant au caractère souhaité.
Attention, il y a un piège a!=A (2 codes ASCII différents), il te faudra donc faire un traitement supplémentaire.
Commences par gérer les minuscules uniquement.
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
pourquoi du ASCII alors qu'il dois juste lire un fichier Text et calculer le nombre de lettre et puis fais un % de X lettre a chaque fois
1ère étape : arriver à quelque choseJe suis d'accord , mais il existe une méthode assez simple qui évite les 256 comparaison
2ème étape : améliorer le programme
Une lettre peut être vue comme un code ASCII, une valeur numérique, qui peut facilement être utilisé comme index d'un tableau.pourquoi du ASCII alors qu'il dois juste lire un fichier Text et calculer le nombre de lettre et puis fais un % de X lettre a chaque fois
Si tu as une autre approche, n'hésites pas à tester, que tu y arrives ou pas, ça te fera un bon exercice.
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
Petite précision : ce que l'on appelle un « fichier texte » EST en fait implicitement un fichier codé en ASCII, ou sur un charset plus étendu (ISO-8859-15, UTF-8, windows-1252…) mais qui à quelques très rares exceptions près s'appuient tous sur l'ASCII et restent donc compatibles avec lui.
Bon courage.
Bonjour
L'année scolaire 2017/2018 commence à peine. J'ai du mal à la croire déjà perdue. Ou alors ceci est un rattrappage de l'année scolaire 2016/2017 mais dans ce cas si tu as du mal avec un truc de débutant qui ne fait appel (mis à part la lecture du fichier) qu'à des notions vues au 3° cours de C...
Et malheureusement pour ton année, plutôt que te donner un poisson qui te fera manger un jour (mais qui risque de te transformer en futut assisté boulet de la société ou du moins de ses collègues développeurs), ici on préfère t'apprendre à pêcher pour que tu puisses manger tous les jours (et que tu puisses à ton tour élever les autres au lieu de les rabaisser en t'appuyant sur eux).
Ce qu'il faut bien comprendre, c'est que l'écriture 'lettre' (exemple 'e') est automatiquement convertie en nombre (correspondant au code ascii du caractère, ici 101). Ca signifie que tu as tout à fait le droit de l'utiliser en tant qu'indice de tableau comme par exemple écrire cpt['e']=0 (si le tableau "cpt" a au-moins 102 cases (102 car la première commençant à 0, la case d'indice 'e' ou 101 est alors la 102° du tableau !!!) ça reste correct).
Donc dans ton code tu as "val" qui récupère la lettre lue. Te suffit d'abord de déclarer un tableau suffisant pour compter toutes les lettres (donc un tablau couvrant la plage des 256 codes ascii), puis à chaque lettre lue, d'incrémenter le tableau cpt[val] pour compter alors cette lettre. Une fois fini, te suffit d'afficher le contenu de "cpt" pour avoir le compte de toutes tes lettres.
Ensuite on peut optimiser. Par exemple considérer une majuscule équivalente à sa minuscule (un test particulier durant le comptage), ne compter que les caractères "affichables" (la macro isprintable() te sera alors utile) etc. Mais l'optimisation ne peut se faire qu'avec un truc déjà fonctionnel à la base...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
On peut vérifier que l'algo est fonctionnel avec un petit langage de script
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 >>> s = bytearray('antituconstitutionnellement', 'ascii') >>> res = [0] * 255 # création d'un tableau de 255 caractères >>> for i in s: # i est le code ascii de chaque caractère de s ... res[i] += 1 ... >>> res [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0, 0, 0, 3, 0, 0, 2, 1, 5, 2, 0, 0, 0, 1, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Euh ouais mais non. Ici c'est un forum C, pas Python. On peut donc imposer au PO de connaitre un minimum de C pour pouvoir lui apporter notre aide dans ce langage mais on ne peut pas lui imposer de connaitre Python ni même de comprendre que ce que tu as écrit est du Python et sa façon de le mettre en oeuvre. Ni même avoir Python installé sur sa machine si celle ci tourne sons zindow.
Et les autres intervenants, même si beaucoup connaissent Python, sont à priori assez habitués pour ne pas avoir besoin de ce script de vérification...
Mais bon, ceci dit c'était quand-même super sympa d'avoir participé. Surtout que quand j'ai un souci Python, tu es toujours là pour moi
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
[HS]Moi j'ai toujours testé mes algo en C , et le second point je ne connais pas Python , j'ai fait du C , C++ de l'asm , du Java du C# mais jamais de Python [/HS]
C'est bien ce que j'ai cru remarqué
Effectivement il peut connaître un minimum de C, mais ici le soucis c'est l'algo, pas le langage... S'il connaît python, c'est bien, c'est mieux ! Mais s'il ne le connaît pas, j'ai tout de même mis des commentaires afin d'aider à comprendre les étapes à suivre pour résoudre. Python est juste là comme outil, j'aurai pu très bien utiliser algobox par exemple, le but étant de montrer un résultat sans passer par le code C qui lui aurait mâcher le boulot.
Qui puis est, c'est un des besoins principaux du langage python, aider à la résolution d'un problème en ne se préoccupant que de l'algorithme.
D'ailleurs le site officiel le présente comme tel
If you’re a professional software developer, you may have to work with several C/C++/Java libraries but find the usual write/compile/test/re-compile cycle is too slow. Perhaps you’re writing a test suite for such a library and find writing the testing code a tedious task. Or maybe you’ve written a program that could use an extension language, and you don’t want to design and implement a whole new language for your application. Python is just the language for you.
Je ne pense pas être à côté de la plaque...
C'est rare que j'intervienne envers un intervenant, en règle générale il répond souvent juste, mon but ici était de présenter une réponse rapide visuelle à l'algorithme que tu présentais un peu plus haut. C'est certaines fois plus explicite que de longues phrases ou pas. On ne gagne pas à tous les coups.
C'est toujours avec plaisir, je fais du mieux que je peux, et comme pour toi, lorsque j'essaie de répondre, je n'y arrive pas toujours, mais l'objectif est de trouver le moyen pédagogique (ça se discute) que le PO puisse retenir dans son apprentissage les notions.
Ça doit être des petis algos alors Il y a des algos qui permettent de résoudre une solution avec plus de 1000 lignes en C, vaut mieux pas trop se tromper.Envoyé par Kannagi
Tous les langages que tu présentes ne sont pas des langages de scripts, c'est dommage de ne pas en connaître au moins un, j'imagine que certaines fois tu dois t'arracher les cheveux...
Effectivement, c'est assez HS comme remarque, ne répondant pas à la problématique du PO, ce que je ne considère pas sur ma réponse précédente.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Je ne fait jamais de petit algo
Mais il m'est deja arrivé de coder des algo assez long pour le tester le lendemain.
Un algo si il est clairement exprimer et formaliser c'est 50% voir plus du probleme résolu
Pour l'arrachage de cheveux pas tant que ça (enfin surtout au début) , depuis le temps que je code j'ai appris a être extrêmement rigoureux , il m'est deja arriver de coder sur certaine machine sans forcément avoir un débuggeur sous la main.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager