A voir également:
- Écrire une fonction qui affiche l’alphabet en minuscule sur une seule ligne, dans l’ordre croissant, à partir de la lettre ’a’.
- Excel trier par ordre croissant chiffre - Guide
- Aller à la ligne excel - Guide
- Code ascii alphabet - Guide
- Fonction si et - Guide
- Application pour écrire les chiffre en lettre - Télécharger - Outils professionnels
9 réponses
Re,
Un exemple
Un exemple
lami20j@debian:~$ cat alpha.c #include<stdio.h> #include<stdlib.h> void ajout(int *alphabet,char lettre); int main() { int i; char lettre='m'; int *alphabet=calloc(26,sizeof(int)); ajout(alphabet,lettre); for(i=0;i<26;++i) printf("indice %d - lettre %c\n",i,alphabet[i]); return EXIT_SUCCESS; } void ajout(int *alphabet,char lettre){ alphabet[lettre-97]=lettre; } lami20j@debian:~$ gcc -Wall alpha.c lami20j@debian:~$ ./a.out indice 0 - lettre indice 1 - lettre indice 2 - lettre indice 3 - lettre indice 4 - lettre indice 5 - lettre indice 6 - lettre indice 7 - lettre indice 8 - lettre indice 9 - lettre indice 10 - lettre indice 11 - lettre indice 12 - lettre m indice 13 - lettre indice 14 - lettre indice 15 - lettre indice 16 - lettre indice 17 - lettre indice 18 - lettre indice 19 - lettre indice 20 - lettre indice 21 - lettre indice 22 - lettre indice 23 - lettre indice 24 - lettre indice 25 - lettre
Salut,
Essaie ce code pour comprendre un peu comment ça se passe avec les indices de tableau
Les deux boucles for for la même chose.
Dans ta fonction vu que tu passe une seule lettre en arguments, c'est inutile d'utiliser une boucle pour insérer la lettre dans le tableau.
Il suffit d'utiliser son code ascii pour trouver l'indice et l'insérer dans le tableau.
La fonction n'écrira qu'une seule lettre à la fois, ce qui supposera de faire une boucle dans main par exemple de 0 à 25 ou de ('A'-65 à 'Z'-65 pour majuscules ou 'a'-97 à 'z'-97 pour minuscules) pour insérer tous les lettres.
Si tu veux que ta fonction insère toutes le lettres soit tu passes en argument un tableau de char qui contiendra tous les lettres soit tu le fais à l'intérieur de la fonction en bouclant de 0 à 25 sur les codes ascii de 65 à 90 pour les majuscules ou de 97 à 122 pour les minuscules
Essaie ce code pour comprendre un peu comment ça se passe avec les indices de tableau
Les deux boucles for for la même chose.
lami20j@debian:~$ cat alphabet.c #include<stdio.h> #include<stdlib.h> int main() { int i; i='a'; printf("%d - %c\n",i,i); for(i = 'a'-97;i <= 'z' - 97;++i) printf("index tableau commence à %d - on mets %c\n",i,i+97); printf("****************************************\n"); for(i=0;i<26;++i) printf("index tableau commence à %d - on mets %c\n",i,i+97); return EXIT_SUCCESS; }
Dans ta fonction vu que tu passe une seule lettre en arguments, c'est inutile d'utiliser une boucle pour insérer la lettre dans le tableau.
Il suffit d'utiliser son code ascii pour trouver l'indice et l'insérer dans le tableau.
La fonction n'écrira qu'une seule lettre à la fois, ce qui supposera de faire une boucle dans main par exemple de 0 à 25 ou de ('A'-65 à 'Z'-65 pour majuscules ou 'a'-97 à 'z'-97 pour minuscules) pour insérer tous les lettres.
Si tu veux que ta fonction insère toutes le lettres soit tu passes en argument un tableau de char qui contiendra tous les lettres soit tu le fais à l'intérieur de la fonction en bouclant de 0 à 25 sur les codes ascii de 65 à 90 pour les majuscules ou de 97 à 122 pour les minuscules
Re,
Avant la ligne return EXIT_SUCCESS; mets aussi free (alphabet);
Avant la ligne return EXIT_SUCCESS; mets aussi free (alphabet);
free (alphabet); return EXIT_SUCCESS;
salut lamij, il suffirait d'après toi d'écrire dans ma fonction donc si je me trompe pas:
alphabet['lettre'-97]=lettre?
malheureusement ma fonction doit renvoyer 1 si la lettre figure déjà dans le tableau et 0 sinon, donc c'est pas si évident...
Tu utilises des fonctions ( free...) que je n'ai pas encore vu lol.
alphabet['lettre'-97]=lettre?
malheureusement ma fonction doit renvoyer 1 si la lettre figure déjà dans le tableau et 0 sinon, donc c'est pas si évident...
Tu utilises des fonctions ( free...) que je n'ai pas encore vu lol.
Re,
malheureusement ma fonction doit renvoyer 1 si la lettre figure déjà dans le tableau et 0 sinon, donc c'est pas si évident...
Toute à fait, ce n'est pas évident, mais ce n'était qu'un exemple pour te faire avancer et pas une solution.
Ton message de début n'était pas évident non plus, puisque je ne savais pas que tu dois aussi vérifier que la lettre existe déjà.
Tu utilises des fonctions ( free...) que je n'ai pas encore vu lol.
Si je comprends bien alors on fait sans aucune allocation dynamique de mémoire.
Si jamais, il n'y a personne pour t'aider je te répondrai un peu plus tard.
P.S.
Je sens que loupius va passser par là, mais peut être que je me trompe ;-)
malheureusement ma fonction doit renvoyer 1 si la lettre figure déjà dans le tableau et 0 sinon, donc c'est pas si évident...
Toute à fait, ce n'est pas évident, mais ce n'était qu'un exemple pour te faire avancer et pas une solution.
Ton message de début n'était pas évident non plus, puisque je ne savais pas que tu dois aussi vérifier que la lettre existe déjà.
Tu utilises des fonctions ( free...) que je n'ai pas encore vu lol.
Si je comprends bien alors on fait sans aucune allocation dynamique de mémoire.
Si jamais, il n'y a personne pour t'aider je te répondrai un peu plus tard.
P.S.
Je sens que loupius va passser par là, mais peut être que je me trompe ;-)
alors j'ai tenté d'écrire une correction, la voici:
int ajout(int alpha[], char lettre){
int i;
int var;
for(i=0;i<26;i++){
if(alpha[i]=='lettre'-97){
var=0;
}else{
alpha[i]='lettre'-97;
var=1;
}
}
return var;
}
mais à la compilation j'ai sans arrêt cette erreur que je ne comprends pas:
error: character constant too long for its type
int ajout(int alpha[], char lettre){
int i;
int var;
for(i=0;i<26;i++){
if(alpha[i]=='lettre'-97){
var=0;
}else{
alpha[i]='lettre'-97;
var=1;
}
}
return var;
}
mais à la compilation j'ai sans arrêt cette erreur que je ne comprends pas:
error: character constant too long for its type
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Ce n'est qu'un exemple. La boucle for est inutile puisqu'on accède directement au indice de tableau grâce au code ascii de la lettre
Un exemple
Ce n'est qu'un exemple. La boucle for est inutile puisqu'on accède directement au indice de tableau grâce au code ascii de la lettre
Un exemple
lami20j@debian:~$ cat alpha.c #include<stdio.h> #include<stdlib.h> int ajout(int *alphabet,char lettre); int main() { int i,var; char lettre; int alphabet[26]; for(i=0;i<26;++i) alphabet[i]=0; do{ printf("Entrez une lettre minuscule sans accent [A pour quitter]: "); scanf("%c",&lettre); while(getchar()!='\n'); var=ajout(alphabet,lettre); }while(lettre!='A'); for(i=0;i<26;++i) printf("indice %d - lettre %c\n",i,alphabet[i]); return EXIT_SUCCESS; } int ajout(int *alphabet,char lettre){ int var; if(alphabet[lettre-97] == lettre) var=0; else{ var=1; alphabet[lettre-97]=lettre; } return var; } lami20j@debian:~$ gcc -Wall alpha.c lami20j@debian:~$ ./a.out Entrez une lettre minuscule sans accent [A pour quitter]: a Entrez une lettre minuscule sans accent [A pour quitter]: b Entrez une lettre minuscule sans accent [A pour quitter]: d Entrez une lettre minuscule sans accent [A pour quitter]: e Entrez une lettre minuscule sans accent [A pour quitter]: m Entrez une lettre minuscule sans accent [A pour quitter]: l Entrez une lettre minuscule sans accent [A pour quitter]: z Entrez une lettre minuscule sans accent [A pour quitter]: a Entrez une lettre minuscule sans accent [A pour quitter]: b Entrez une lettre minuscule sans accent [A pour quitter]: A indice 0 - lettre a indice 1 - lettre b indice 2 - lettre indice 3 - lettre d indice 4 - lettre e indice 5 - lettre indice 6 - lettre indice 7 - lettre indice 8 - lettre indice 9 - lettre indice 10 - lettre indice 11 - lettre l indice 12 - lettre m indice 13 - lettre indice 14 - lettre indice 15 - lettre indice 16 - lettre indice 17 - lettre indice 18 - lettre indice 19 - lettre indice 20 - lettre indice 21 - lettre indice 22 - lettre indice 23 - lettre indice 24 - lettre indice 25 - lettre z
Salut,
char c = a tu peux écrire si et seulement a est aussi une variable de type char.
En faite la variable char est représentés sur 8 bits alors
si c'est un unsigned char la variable peut contenir des valeurs de 0 à 255
et si elle est signed char elle peut contenir des valeurs de -128 à 127
Pour initialiser un char soit tu mets un caractère entre apostrophes (char c='z') soit tu utilise le code ascii correspondant au caractère (char c=65 pour A par exemple)
Il y a aussi les caractères spécieux (séquences d'échappement= :
\a - caractère d'alerte
\b - retour arrière
\n - saut de ligne
\f - saut de page
\r - retour chariot
\t - tabulation
\v - tabulation verticale
\\ - backslash
\? - point interrogation
\' - apostrophe
\'' - guillemets
\ooo - nombre octal (o de 0 à 7)
\xhh nombre hexadécimal
Voici un exemple
char c = a tu peux écrire si et seulement a est aussi une variable de type char.
En faite la variable char est représentés sur 8 bits alors
si c'est un unsigned char la variable peut contenir des valeurs de 0 à 255
et si elle est signed char elle peut contenir des valeurs de -128 à 127
Pour initialiser un char soit tu mets un caractère entre apostrophes (char c='z') soit tu utilise le code ascii correspondant au caractère (char c=65 pour A par exemple)
Il y a aussi les caractères spécieux (séquences d'échappement= :
\a - caractère d'alerte
\b - retour arrière
\n - saut de ligne
\f - saut de page
\r - retour chariot
\t - tabulation
\v - tabulation verticale
\\ - backslash
\? - point interrogation
\' - apostrophe
\'' - guillemets
\ooo - nombre octal (o de 0 à 7)
\xhh nombre hexadécimal
Voici un exemple
lami20j@debian:~$ cat char.c #include<stdio.h> #include<stdlib.h> int main() { char a; a='M'; char c=a; /* initialiser avec une autre variable */ printf("a=%c et c=%c\n",a,c); c=65;/* code ascii */ a='z';/* le caractère */ printf("a=%c et c=%c\n",a,c); c='\110';/* octal */ a='\x4B';/* hexadécimal*/ printf("a=%c et c=%c\n",a,c); return EXIT_SUCCESS; } lami20j@debian:~$ gcc -Wall char.c lami20j@debian:~$ ./a.out a=M et c=M a=z et c=A a=K et c=H
ah ben là ça va bcp mieux :-), dans la fonction ajout qu'on a écrit, on rempli bien un tableau de caractères, ça aucun soucis, mais est possible d'écrire une petite fonction genre void affiche(int alpha[]) qui m'affiche justement chaque caractère du tableau alphabet qu'on a utilisé dans la fonction ajout?
Re,
Dans mon exemple il reste beaucoup des cases vides.
Tu ne veux plutôt afficher que les cases remplie de tableau, par hasard?
Dans mon exemple il reste beaucoup des cases vides.
Tu ne veux plutôt afficher que les cases remplie de tableau, par hasard?
si lamij exactement et j'avais écrit une fonction qui fait ça, avec simplement une boucle for qui s'incrémente et un alphabet[i], mais le problème dans mon programme ça m'affichait les lettres donc du tableau alphabet mais également de ssignes incompréhensibles qui ressemblaient à une langues extraterrestres :-)
Re,
mais également de ssignes incompréhensibles qui ressemblaient à une langues extraterrestres
Comme ça? ;-)
Essaie alors sans les extraterrestres
mais également de ssignes incompréhensibles qui ressemblaient à une langues extraterrestres
Comme ça? ;-)
lami20j@debian:~$ perl -e 'print chr($_) for 20..49,128..180 ;print "\n"' ▒▒!"#$%&'()*+,-./01 ¡¢£€¥Š§š©ª«¬®¯°±²³Ž
Essaie alors sans les extraterrestres
lami20j@debian:~$ cat alpha.c #include<stdio.h> #include<stdlib.h> int ajout(int *alphabet,char lettre); void affiche(int *alphabet); int main() { int i,var; char lettre; int alphabet[26]; for(i=0;i<26;++i) alphabet[i]=0; do{ printf("Entrez une lettre minuscule sans accent [A pour quitter]: "); scanf("%c",&lettre); while(getchar()!='\n'); var=ajout(alphabet,lettre); }while(lettre!='A'); /*for(i=0;i<26;++i) printf("indice %d - lettre %c\n",i,alphabet[i]);*/ affiche(alphabet); return EXIT_SUCCESS; } int ajout(int *alphabet,char lettre){ int var; if(alphabet[lettre-97] == lettre) var=0; else{ var=1; alphabet[lettre-97]=lettre; } return var; } void affiche(int *alphabet){ int i; for(i=0;i<26;++i) if(alphabet[i]!=0) printf("alphabet[%d] = %c\n",i,alphabet[i]); } lami20j@debian:~$ gcc -Wall alpha.c lami20j@debian:~$ ./a.out Entrez une lettre minuscule sans accent [A pour quitter]: a Entrez une lettre minuscule sans accent [A pour quitter]: b Entrez une lettre minuscule sans accent [A pour quitter]: c Entrez une lettre minuscule sans accent [A pour quitter]: e Entrez une lettre minuscule sans accent [A pour quitter]: f Entrez une lettre minuscule sans accent [A pour quitter]: g Entrez une lettre minuscule sans accent [A pour quitter]: m Entrez une lettre minuscule sans accent [A pour quitter]: n Entrez une lettre minuscule sans accent [A pour quitter]: o Entrez une lettre minuscule sans accent [A pour quitter]: u Entrez une lettre minuscule sans accent [A pour quitter]: z Entrez une lettre minuscule sans accent [A pour quitter]: a Entrez une lettre minuscule sans accent [A pour quitter]: A alphabet[0] = a alphabet[1] = b alphabet[2] = c alphabet[4] = e alphabet[5] = f alphabet[6] = g alphabet[12] = m alphabet[13] = n alphabet[14] = o alphabet[20] = u alphabet[25] = z
lamij c'est exactement le programme que j'avais écrit et ça m'affiche des signes incroyables, les lettres bien sur mais les signes remplacent les cases du tableau alphabet qui valent 0 c'est pourça, tant pis j'ai déjà un programme qui fonctionne c'est pas dramatique si je ne sais pas écrire cette fonction j'aurais essayé c'est déjà ça!
Je te remercie pour ton aide très très précieuse, mais tu en fais trop ne te donne pas la peine de tester tes programmes :-)
Je te remercie pour ton aide très très précieuse, mais tu en fais trop ne te donne pas la peine de tester tes programmes :-)