Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Exercice 3
- Dans un tableau : |a|b|a|d|e|f|...|z|\0|
- Dans un autre stat :| 2 | 1 | 0 | 1 | 1 |...| |
- a b c d e ... z
- 0 1 2 3 4 ... 25
- Si je tape 'a' -> code ASCII = 65 -> quel est son indice tableau stat ? -> 0 (case n°0)
- On va faire un décompte d'effectif de lettre qu'un utilisateur entre.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- /* Boucle Lecture Chaine (var i)
- car = tolower(tab[i]);
- si((car>='a')&&(car<='z')){
- indice = car-'a'
- Stat[indice]++;
- }sinon{
- stat[26];
- }
- stat[27]++;
- finboucle
- (int*)malloc(28*sizeof(int))
- */
- char * saisie()
- {
- char tmp[1000];//1
- char *tab;
- int taille, i;
- saisieabis((tmp));//2
- taille=strlen(tmp)+1;//3
- tab = (char*)malloc(taille*sizeof(char));//4
- strcpy(tab, tmp);//5
- return tab;
- }
- int*fstat(char*tab){
- int i, *stat, ind;
- char car;
- stat=(int*)malloc(28*sizeof(int));
- for(i=0;i<28;i++){ // Initialisation du tableau à coups de 0
- stat[i]=0;
- }
- for(i=0;tab[i]<28;i++){
- car=tolower(tab[i]); // remplace toutes les lettres par des miniscules
- if((car>'a')&&(car<='z')){ // si le carac est compris entre a et z
- ind=car-'a';
- stat[ind]++;
- }else{
- stat[26]++;
- }
- }
- stat[27]=i;
- return stat;
- }
- void affichestat(int*stat){
- int i;
- for(i=0;i<26;i++){
- if(stat[i]!=0){ // Si 0 occurence d'un carac
- printf("il y a %d %c.\n",stat[i],i+'a');
- }
- }
- printf("il y a %d caractere speciaux et %d caracteres en tout", stat[26],stat[27]);
- }
- int main(){
- char*tab;
- int*stat;
- tab=saisie();
- }
- //________________________________________________________________________________________
- void saisieabis (char*tab)
- {
- char c, * p;
- p = tab;
- do
- {
- c=getchar();
- *p=c;
- p++; // p = p+1;
- }
- while ( *(p-1) != '\n');
- *(p-1) = '\0'; //// *--p = '\0';
- }
- //___________________________________________________________________________________________________
- int * fstat ( char* tab)
- {
- int i, *stat, ind;
- char caractere;
- stat = (int*) malloc (28 * sizeof(int));// ici on donne la place pour le tableau
- for (i = 0; i <= 27; i++) //initialisation du tableau
- {
- stat[i] = 0;//avec des 0
- }
- for (i = 0; tab[i]!='\0'; i++)
- {
- caractere = tolower(tab[i]);// ici on gere uniquement des minuscules
- if ((caractere>='a') && (caractere<='z')) // puis on enleve le code ASCII de A
- {
- ind = caractere - 'a';
- stat[ind]++;// Et on incrémente l indice
- }
- else
- {
- stat[26] ++;// Si ce n est pas un caractere alors on augmente le compteur de caractere spéciaux
- }
- stat[27] ++; //puis on incrémente la valeur du compteur de caractere total
- }
- return stat;
- }
- //_________________________________________________________________________________________________________________
- void affichestat(int * stat)
- {
- int i;
- for ( i = 0; i < 26; i++)
- {
- if ( stat[i] != 0)
- {
- printf("il y a %d %c \n", stat[i], i+'a' );
- }
- }
- printf("il y a %d car spéciale et %d caractere totaux", stat[26], stat[27]);
- }
- //__________________________________________________________________________________________________________________
- int main()
- {
- char * tab;
- int * stat;
- printf("Entre une chaine de caractere\n");
- tab = saisieb();
- stat = fstat (tab);
- affichestat(stat);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment